OpenCV-学习历程4- 读取图像/读取像素/修改像素值方法(包含灰度+rgb图像像素处理方式)
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图像像素处理方式)相关推荐
- opencv学习系列——视频格式的读取
opencv学习系列--视频格式的读取 视频读取本质上就是读取图像,因为视频是由一帧一帧图像组成的.1秒24帧基本就能流畅的读取视频了. (1)打开视频文件 A. VideoCapture cap; ...
- python播放本地视频_python opencv 读取本地视频文件 修改ffmpeg的方法
Python + opencv 读取视频的三种情况: 情况一:通过摄像头采集视频 情况二:通过本地视频文件获取视频 情况三:通过摄像头录制视频,再读取录制的视频 摄像头采集.本地视频文件的读取.写视频 ...
- OpenCV学习笔记(二十一)——绘图函数core OpenCV学习笔记(二十二)——粒子滤波跟踪方法 OpenCV学习笔记(二十三)——OpenCV的GUI之凤凰涅槃Qt OpenCV学习笔记(二十
OpenCV学习笔记(二十一)--绘图函数core 在图像中,我们经常想要在图像中做一些标识记号,这就需要绘图函数.OpenCV虽然没有太优秀的GUI,但在绘图方面还是做得很完整的.这里就介绍一下相关 ...
- OpenCV学习2--图片的加载,修改与保存
OpenCV学习2--图片的加载,修改与保存 转自https://blog.csdn.net/qq_16481211/article/details/79553335 之前安装配置好OpenCV的环境 ...
- oracle数据库修改写入状态,【学习笔记】Oracle oradebug 使用oradebug修改数据库SCN方法案例...
天萃荷净 使用oradebug修改数据库scn,使用oradebug修改数据库scn的案例. 这里也做了两个测试,发现该功能确实很巧妙,通过修改内存中的scn值,然后写入控制文件和数据文件,实现修改s ...
- openCV学习笔记1——图片的读取,显示,保存;视频的读取,显示和保存
在pycharm中下载openCV ①打开pycharm下方的terminal终端 ②在路径下直接输入 pip install opencv-python 1.读入图像 函数:cv2.imread() ...
- matlab如何截取图像的中间部分_利用matlab提取并分割RGB图像中的某一个已知像素值的图像...
已知一副RGB图像中的的像素值,利用matlab将其分割出来并以二进制图像形式显示: %extract.m clear all; I=imread('new_original.png'); figur ...
- Opencv学习笔记 各向异性滤波/均值滤波/高斯滤波/中值滤波/加权中值滤波/高斯低通滤波
各向异性滤波 各向异性扩散滤波主要是用来平滑图像的,克服了高斯模糊的缺陷,各向异性扩散在平滑图像时是保留图像边缘的,和双边滤波很像. public static void ImageA ...
- 【sketchup 2021】草图大师中二维图像交互(jpeg等格式图像的导入、图像的输出、图像导入变得模糊处理方法)与三维图像交互(其他软件导出的三维导入到草图大师、草图大师导出为三维模型】
文章目录 图像导入变得模糊处理方法 让室外场景效果更逼真 二维图像交互 jpeg等格式图像的导入[给卫星图建立立面模型] 图片准备和导入 尺寸调整 矩形面准备 描绘轮廓 导出为jpeg等格式的图像 说 ...
- ROS传输图像带宽不够用的解决方法(realsenseD415压缩图像)
最近在做图像的深度学习识别,但是移动机器人上的电脑配置不够,只能用我的电脑远程的去处理图像,但是遇到了严重的带宽瓶颈,按照我的电脑150Mbps的无线网卡来算,每秒的极限传输速度就是150/8 = 1 ...
最新文章
- 构造一个日期类java_Java8 新日期时间类(1)
- yoman不压缩html,使用Yeoman构建vuejs
- OpenGL创建hello Window窗口
- jQuery必知要点(一)
- Servlet第二篇【Servlet调用图、Servlet细节、ServletConfig、ServletContext】
- c# mysql executenonquery_C#中ExecuteNonQuery()返回值注意点分析
- Spring JDBC最佳实践(2)
- mybatis 二级缓存失效_二级缓存updateBatchById失效
- php生成图片水印,PHP生成图片加文字及图案水印办法
- 网站留言板防重复留言_2020微信公众号怎么开通原创、赞赏、留言功能?【5月更新】...
- 数字逻辑之组合逻辑电路
- c/c++ 标准库 string
- mysql数据库BigInt数据类型和实体对象中BigInteger,Long类型的冲突
- 跟我学android-Notification
- 项目-1.CROSSFORMER论文与代码解析(CrossFormer: A Versatile Vision Transformer Based on Cross-scale Attention)
- C语言:设备管理系统
- uni-app 调用讯飞语音。
- matlab的积分函数
- linux 查看.img文件,linux img文件 分区挂载
- 浪潮网上测评没通过_浪潮软件常见问题解决