opencv学习(5) 使用迭代器遍历图像的像素
2013-12-22 15:12
561 查看
图像像素的遍历可用指针和迭代器,本文介绍的是用迭代器遍历图像像素。
opencv定义的迭代器也是模板,我们这里定义在Mat_模板内部类型。详细介绍大家可以参考:Robert Laganière. OpenCV 2 Computer Vision Application Programming Cookbook,2011. 一书。
结果:原图像
![](http://img.blog.csdn.net/20131222151153359?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGFvaHVfdGlnZXI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
减色图像
![](http://img.blog.csdn.net/20131222151223718?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGFvaHVfdGlnZXI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
因为操作图像结果改变了原图像,因此显示的是结果图像。如果要显示原图像需要用copyTo()方法修改。
opencv定义的迭代器也是模板,我们这里定义在Mat_模板内部类型。详细介绍大家可以参考:Robert Laganière. OpenCV 2 Computer Vision Application Programming Cookbook,2011. 一书。
/* *本程序的作用是用迭代器遍历图像,然后将图像减色 *2013年12月22日, */ #include <opencv2/core/core.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> using namespace cv; void colorReduce(Mat &image, int div = 64); int main() { Mat image = imread("D:\\fodder\\6.jpg"); Mat image2 = image;//注意这样直接赋值,image 和image2 将指向同一内存区间,属于浅拷贝 //也就是说,操作图像2同时也改变了图像1的原始数据 if(!image.data) return -1; else { colorReduce(image2, 32); namedWindow("原图像"); imshow("原图像", image); namedWindow("减色图像"); imshow("减色图像", image2); imwrite("减色图像.jpg", image2); waitKey(0); destroyAllWindows(); } return 0; } void colorReduce(Mat &image, int div) { //定义在Mat_模板类内部的迭代器 // Mat_<Vec3b>::iterator diedaiqi = image.begin<Vec3b>(); // Mat_<Vec3b>::iterator diedaiqiEnd = image.end<Vec3b>(); for(; diedaiqi != diedaiqiEnd; diedaiqi++) { // (*diedaiqi)[0] = (*diedaiqi)[0] /div * div + div/2; (*diedaiqi)[1] = (*diedaiqi)[1] /div * div + div/2; (*diedaiqi)[2] = (*diedaiqi)[2] /div * div + div/2; } }
结果:原图像
减色图像
因为操作图像结果改变了原图像,因此显示的是结果图像。如果要显示原图像需要用copyTo()方法修改。
相关文章推荐
- OpenCV学习之三:使用迭代器遍历图像
- opencv学习笔记1::访问图像中像素的三类方法(用指针,迭代器,动态地址)代码及用时检测
- OPENCV学习笔记2-2_图像遍历(使用指针)
- OpenCV学习C++接口:图像遍历+像素压缩
- OPENCV学习笔记2-3_图像遍历(迭代器)
- openCV学习笔记(四):图像遍历和像素操作
- 学习《OpenCV 2 计算机视觉编程手册》第二章---使用指针遍历图像案例
- OpenCV学习C++接口:图像遍历+像素压缩
- OpenCV学习遍历图像像素
- OPenCV2_如何使用迭代器遍历图像
- OpenCV学习C++接口:图像遍历+像素压缩
- opencv学习(三)之图像像素遍历(颜色空间缩减、查找表)
- 【OpenCV学习笔记】【函数学习】二十(访问图像像素)
- OpenCV学习笔记九——访问图像中的像素
- OpenCV入门三:OpenCV创建新图像以及遍历图片像素值和设置像素值
- 【学习opencv】opencv中遍历图像以及Mat类变量解释
- OpenCV2 访问各个像素点的方法(图像遍历)
- OpenCV遍历彩色图像、灰度图像的像素值方法
- opencv学习笔记(02)——遍历图像(指针法)
- 【OpenCV学习笔记5】读取图像中任意点的像素值