如何使用迭代器遍历图像
2014-02-24 15:48
246 查看
#include "opencv2/opencv.hpp" using namespace cv; void setAllWhiteUchar(Mat& src) { Mat_<uchar>::iterator begin,end;//单通道 //获取迭代器对象 begin = src.begin<uchar>(); end = src.end<uchar>(); //遍历图像 while(begin != end) { (*begin)= 255; begin++; } } void setAllWhite(Mat& src) { Mat_<Vec3b>::iterator begin,end;//三通道 //获取迭代器对象 begin = src.begin<Vec3b>(); end = src.end<Vec3b>(); //遍历图像 while(begin != end) { (*begin)[0] = 255; (*begin)[1] = 255; (*begin)[2] = 255; begin++; } } int main(int argc, char* argv[]) { Mat src; Mat srcUchar; src = imread(argv[1]); srcUchar = imread(argv[1],0); if(!src.data) { printf("fail to load image \n"); return 0; } //********** Mat的子类 Mat_ 的使用示例 *****************// Mat_<Vec3b> src_; // 创建Mat_对象 src_ = src; //赋值 此时 src 与 src_ 共享矩阵的数据内存空间 Vec3b value(99,99,99); src_(10,10) = value; //Mat_ 类的对象 可以通过operator() 来访问矩阵数据 Vec3b result; result = src_(10,10); // 测试数据是否设置成功 //打印src_ 在坐标(10,10)处的bgr值 printf("%d %d %d\n",result[0]&255,result[1]&255,result[2]&255); //测试src 在坐标(10,10)处的值是不是也被改变 Vec3b resultSrc; resultSrc = src.at<Vec3b>(10,10); printf("resultSrc %d %d %d\n",resultSrc[0]&255,resultSrc[1]&255,resultSrc[2]&255); //********** Mat_::iterator迭代器 遍历图像 *****************// //使用Mat_::iterator迭代器 遍历类型为 Vec3b的矩阵 即3通道 unsigned char的矩阵 setAllWhite(src); //使用Mat_::iterator迭代器 遍历类型为 uchar的矩阵 即单通道 unsigned char的矩阵 setAllWhiteUchar(srcUchar); //此时 srcUchar的加载方式是 srcUchar = imread("stuff.jpg",0); namedWindow("src"); imshow("src",src); namedWindow("uc"); imshow("uc",srcUchar); waitKey(0); return 0; }
//处理结果图像变成白色的
相关文章推荐
- OPenCV2_如何使用迭代器遍历图像
- 使用迭代器遍历图像
- 使用迭代器Iterator和增强for循环如何遍历集合
- OPenCV2 如何使用指针的方式遍历图像
- opencv学习(5) 使用迭代器遍历图像的像素
- OpenCV学习之三:使用迭代器遍历图像
- 扫描识别工具Dynamic Web TWAIN使用教程:如何使用图像编辑器
- VC下如何使用GDI+进行图像程序设计
- wordpress如何使用特色图像功能,wordpress文章缩略图的调用
- 如何使用迭代器
- Barcode Professional for ASP.NET使用教程:如何用System.Net.Mail 类创建条码图像的HTML邮件
- Java使用迭代器遍历集合,遍历过程中可删除元素
- C++中防止STL中迭代器失效__map/set等关联容器vector/list/deque等序列容器_如何防止迭代器失效_即erase()的使用
- 如何遍历一个结果集在 SQL Server 中使用 Transact-SQL
- 如何使用Kinect的骨架图像。
- 【示例教程】如何使用LEADTOOLS图像标注控件在界面上对图像进行标注
- 如何使用Amazon Rekognition从Ruby中检测图像内容?
- ITK 读取三维的mha 如何遍历像素值 以及对mha 图像的小认识
- 【示例教程】LEADTOOLS中如何使用文档清理命令接口来清理文档图像
- 如何使用迭代器iterator循环删除容器中的元素?