OPENCV系列博客主要记录自己学习OPENCV的历程,以及存储已经实现的代码,以备后续回顾使用,代码中包含了主要的备注。

#include <opencv2/opencv.hpp>
#include <iostream>using namespace std;
using namespace cv;int main(int argc, char**argv) {//Step1 读取图片Mat src;src = imread("sample.jpg");if (src.empty()) {cout << "The image is empty,plz check the file route..." << endl;return -1;}namedWindow("Original_image", CV_WINDOW_AUTOSIZE);imshow("Original_image", src);//Step2 将图片转化为灰度图,读取像素灰度值,并遍历反转全部像素颜色//      注意:这一部分是对单通道进行操作Mat gray_src;cvtColor(src,gray_src,CV_BGR2GRAY);namedWindow("Gray_image", CV_WINDOW_AUTOSIZE);imshow("Gray_image", gray_src);int height = gray_src.rows;int width = gray_src.cols;for (int row = 0; row < height; row++) {for (int colomn = 0; colomn < width; colomn++) {int gray = gray_src.at<uchar>(row, colomn);  //!!重要,使用这个语句取出图像像素灰度gray_src.at<uchar>(row, colomn)=255 - gray;  //!!可以通过这个语句,修改每个像素的灰度值}}namedWindow("Gray_image_inverse", CV_WINDOW_AUTOSIZE);imshow("Gray_image_inverse", gray_src);//Step3 遍历图片,对RGB三通道彩色图片进行反转//      原理类似,注意遍历时候的数据类型Mat dst;dst.create(src.size(),src.type());height = src.rows;width = src.cols;int nc = src.channels();for (int row = 0; row < height; row++) {for (int colomn = 0; colomn < width; colomn++) {if (nc ==1 ) {int gray_2 = gray_src.at<uchar>(row, colomn);    //!!重要,使用这个语句取出图像像素灰度gray_src.at<uchar>(row, colomn) = 255 - gray_2;  //!!可以通过这个语句,修改每个像素的灰度值}else if (nc == 3) {int b = src.at<Vec3b>(row, colomn)[0];     //!!重要:彩色图3个通道,每个行列对应的是一个数组,数组包含bgr三原色int g = src.at<Vec3b>(row, colomn)[1];int r = src.at<Vec3b>(row, colomn)[2];dst.at<Vec3b>(row, colomn)[0] = 255 - b;dst.at<Vec3b>(row, colomn)[1] = 255 - g;dst.at<Vec3b>(row, colomn)[2] = 255 - r;   //此处除了取反之外,可以设定其他数值,达到不同效果}}}//bitwise_not(src, dst);  //使用这个语句可以按位取反,得到与上边同样效果namedWindow("Color_image_inverse", CV_WINDOW_AUTOSIZE);imshow("Color_image_inverse", dst);waitKey();return 0;}

效果如下:

OpenCV-学习历程4- 读取图像/读取像素/修改像素值方法(包含灰度+rgb图像像素处理方式)相关推荐

  1. opencv学习系列——视频格式的读取

    opencv学习系列--视频格式的读取 视频读取本质上就是读取图像,因为视频是由一帧一帧图像组成的.1秒24帧基本就能流畅的读取视频了. (1)打开视频文件 A. VideoCapture cap; ...

  2. python播放本地视频_python opencv 读取本地视频文件 修改ffmpeg的方法

    Python + opencv 读取视频的三种情况: 情况一:通过摄像头采集视频 情况二:通过本地视频文件获取视频 情况三:通过摄像头录制视频,再读取录制的视频 摄像头采集.本地视频文件的读取.写视频 ...

  3. OpenCV学习笔记(二十一)——绘图函数core OpenCV学习笔记(二十二)——粒子滤波跟踪方法 OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt OpenCV学习笔记(二十

    OpenCV学习笔记(二十一)--绘图函数core 在图像中,我们经常想要在图像中做一些标识记号,这就需要绘图函数.OpenCV虽然没有太优秀的GUI,但在绘图方面还是做得很完整的.这里就介绍一下相关 ...

  4. OpenCV学习2--图片的加载,修改与保存

    OpenCV学习2--图片的加载,修改与保存 转自https://blog.csdn.net/qq_16481211/article/details/79553335 之前安装配置好OpenCV的环境 ...

  5. oracle数据库修改写入状态,【学习笔记】Oracle oradebug 使用oradebug修改数据库SCN方法案例...

    天萃荷净 使用oradebug修改数据库scn,使用oradebug修改数据库scn的案例. 这里也做了两个测试,发现该功能确实很巧妙,通过修改内存中的scn值,然后写入控制文件和数据文件,实现修改s ...

  6. openCV学习笔记1——图片的读取,显示,保存;视频的读取,显示和保存

    在pycharm中下载openCV ①打开pycharm下方的terminal终端 ②在路径下直接输入 pip install opencv-python 1.读入图像 函数:cv2.imread() ...

  7. matlab如何截取图像的中间部分_利用matlab提取并分割RGB图像中的某一个已知像素值的图像...

    已知一副RGB图像中的的像素值,利用matlab将其分割出来并以二进制图像形式显示: %extract.m clear all; I=imread('new_original.png'); figur ...

  8. Opencv学习笔记 各向异性滤波/均值滤波/高斯滤波/中值滤波/加权中值滤波/高斯低通滤波

    各向异性滤波         各向异性扩散滤波主要是用来平滑图像的,克服了高斯模糊的缺陷,各向异性扩散在平滑图像时是保留图像边缘的,和双边滤波很像. public static void ImageA ...

  9. 【sketchup 2021】草图大师中二维图像交互(jpeg等格式图像的导入、图像的输出、图像导入变得模糊处理方法)与三维图像交互(其他软件导出的三维导入到草图大师、草图大师导出为三维模型】

    文章目录 图像导入变得模糊处理方法 让室外场景效果更逼真 二维图像交互 jpeg等格式图像的导入[给卫星图建立立面模型] 图片准备和导入 尺寸调整 矩形面准备 描绘轮廓 导出为jpeg等格式的图像 说 ...

  10. ROS传输图像带宽不够用的解决方法(realsenseD415压缩图像)

    最近在做图像的深度学习识别,但是移动机器人上的电脑配置不够,只能用我的电脑远程的去处理图像,但是遇到了严重的带宽瓶颈,按照我的电脑150Mbps的无线网卡来算,每秒的极限传输速度就是150/8 = 1 ...

最新文章

  1. 构造一个日期类java_Java8 新日期时间类(1)
  2. yoman不压缩html,使用Yeoman构建vuejs
  3. OpenGL创建hello Window窗口
  4. jQuery必知要点(一)
  5. Servlet第二篇【Servlet调用图、Servlet细节、ServletConfig、ServletContext】
  6. c# mysql executenonquery_C#中ExecuteNonQuery()返回值注意点分析
  7. Spring JDBC最佳实践(2)
  8. mybatis 二级缓存失效_二级缓存updateBatchById失效
  9. php生成图片水印,PHP生成图片加文字及图案水印办法
  10. 网站留言板防重复留言_2020微信公众号怎么开通原创、赞赏、留言功能?【5月更新】...
  11. 数字逻辑之组合逻辑电路
  12. c/c++ 标准库 string
  13. mysql数据库BigInt数据类型和实体对象中BigInteger,Long类型的冲突
  14. 跟我学android-Notification
  15. 项目-1.CROSSFORMER论文与代码解析(CrossFormer: A Versatile Vision Transformer Based on Cross-scale Attention)
  16. C语言:设备管理系统
  17. uni-app 调用讯飞语音。
  18. matlab的积分函数
  19. linux 查看.img文件,linux img文件 分区挂载
  20. 浪潮网上测评没通过_浪潮软件常见问题解决

热门文章

  1. 直击备份恢复的痛点:基于 TiDB Binlog 的快速时间点恢复
  2. 内置函数--inline
  3. 学前端好还是后端好?
  4. 解决latex伪代码标题序号问题
  5. iText实现pdf添加文字水印
  6. [转载]Core animation简介
  7. 计算机辅助药物设计的心得,计算机辅助药物设计实验的探索与心得.doc
  8. 工行电子银行收费标准
  9. DirectX 11
  10. 数据结构 WSADATA