【C++】【OpenCV-4.9.0】灰度图取反(Mat属性的使用)
1.【C++】关于引用类型学习记录2.【C++】【图像处理】直方图均衡算法解析(以.raw格式的图像为基础进行图像处理、gray levels:256)3.【C++】【图像处理】均值滤波 and 高斯滤波 and 中值滤波 (低通滤波器)and Sobel算子边缘提取算法解析(以.raw格式的图像为基础进行图像处理、gray levels:256)4.【C++】【图像处理】形态学处理(腐蚀、膨胀)算法解析(以.raw格式的图像为基础进行图像处理、gray levels:256)5.【C++】【图像处理】灰度直方图实现算法解析(以.raw格式的图像为基础进行图像处理、gray levels:256)6.【C++】【OpenCV】Visual Studio 2022 配置OpenCV
7.【C++】【OpenCV-4.9.0】灰度图取反(Mat属性的使用)
8.【C++】【OpenCV-4.9.0】视频写入(VideoWriter,借助samples中的代码示例来进行学习)9.【C++】【MFC】Windows程序运行入口 and DialogBox10.【C++】【YOLO】搭建环境运行YOLO模型,完成目标识别11.【C++】【MFC】模态和非模态对话框12.【C++】【MFC】运行时类信息机制和动态创建机制13.【C++】【MFC】CView和CDocument关联以及COMMAND消息走向14.【C++】【MFC】MFC多文档框架15.【C++】【MFC】绘图16.【C++】【MFC】MFC序列化17.【C++】【MFC】控件集合此次我们将一张图像转灰度后再进行灰度取反,即黑的变白的,白的变黑的,所以我们需要获取每个像素点上的灰度级,cv中提供了一个函数at,但是这个函数还有11个重载函数,太多了,我们只用这次需要用到的,即通过读取像素点的位置来获取灰度级。
◆ at() [3/12]
template<typename _Tp >
const_Tp& cv::Mat::at(int row, int col
)
Parameters
Parameters
row 在0维的方向进行索引
col 在1维的方向进行索引
可以看到,at是一个模板函数,其返回类型为传入指定的类型。
1 #include <iostream> 2 #include <fstream> 3 #include <opencv2/highgui/highgui.hpp> 4 #include <opencv2/imgproc/imgproc.hpp> 5 using namespace std; 6 7 int main(int argc, char** argv) { 8 cv::Mat img, gray, reverse_gray; 9 cv::pyrDown(cv::imread(argv[1]), img); 10 11 cv::namedWindow("src_img", cv::WINDOW_AUTOSIZE); 12 cv::imshow("src_img", img); 13 14 cv::cvtColor(img, gray, cv::COLOR_BGR2GRAY); 15 cv::namedWindow("gray_img", cv::WINDOW_AUTOSIZE); 16 17 18 gray.copyTo(reverse_gray); 19 cout << img.size << endl; 20 for (int i = 0; i < img.size[1]; ++i) { 21 for (int j = 0; j < img.size[0]; ++j) { 22 uchar& gray_scale = reverse_gray.at<uchar>(j, i); 23 gray_scale = 255 - gray_scale; 24 } 25 } 26 cv::namedWindow("reverse_gray", cv::WINDOW_AUTOSIZE); 27 cv::imshow("reverse_gray", reverse_gray); 28 cv::imshow("gray_img", gray); 29 cv::waitKey(0); 30 31 return 0; 32 }
我们依次来说明上述代码:
1、对传入的图像进行降采样从而缩小图像
2、将原图转换为灰度图
3、深拷贝灰度图,并将拷贝到的灰度图进行灰度级反转,其中size返回的数据依次代表是列数和行数,一般来说遍历是行列顺序,这一点需要注意,然后是at传入的参数,是以列行的形式传入的。使用255减去当前像素点的灰度级即可完成反转。
结果图:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET10 - 预览版1新功能体验(一)