opencv学习(5) 使用迭代器遍历图像的像素
来源:互联网 发布:linux lsof 安装 编辑:程序博客网 时间:2024/04/27 06:48
图像像素的遍历可用指针和迭代器,本文介绍的是用迭代器遍历图像像素。
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()方法修改。
0 0
- opencv学习(5) 使用迭代器遍历图像的像素
- OpenCV学习遍历图像像素
- openCV学习笔记(四):图像遍历和像素操作
- opencv高效访问图像像素(遍历像素的方法总结)
- 【OpenCV】图像遍历+像素压缩
- OpenCV遍历彩色图像、灰度图像的像素值方法
- OpenCV学习C++接口:图像遍历+像素压缩
- OpenCV学习C++接口:图像遍历+像素压缩
- opencv 学习记录(2) 像素遍历
- 学习OpenCV:图像的遍历
- opencv学习(三)之图像像素遍历(颜色空间缩减、查找表)
- opencv学习(5)图像像素的访问、颜色通道的分离和融合
- OpenCV(3)——更方便的图像像素遍历
- 图像翻转 学习遍历像素
- opencv中遍历图像每个像素点
- OpenCV中图像遍历与像素操作
- OpenCV学习之三:使用迭代器遍历图像
- 图像的像素点操作【OpenCV学习笔记3】
- ubuntu 下安装 flash player plugin
- linux 文件及其权限
- 开放数据集合分享
- 整理一些Delphi关于操作文件的函数
- 又是一年,我的2013年终总结
- opencv学习(5) 使用迭代器遍历图像的像素
- 一个 ACMer 过来人的心得
- Android (Linux) Suspend流程
- GLOH算子
- Cracking the coding interview--Q3.2
- SQLServer海量数据处理 - 2 改善SQL语句
- 设计模式前奏—设计原则
- 分享HTTP Status 404(The requested resource is not available)的几种解决方案
- LINUX时间管理