Opencv中Mat中元素的值读取方法总结
来源:互联网 发布:mac上不了网 编辑:程序博客网 时间:2024/06/05 05:04
1、利用 at 函数读取
(1)单通道图像读取方式
- Mat img1 = imread(filename,IMREAD_GRAYSCALE);
- for( size_t nrow = 0; nrow < img1.rows; nrow++)
- {
- for(size_t ncol = 0; ncol < img1.cols; ncol++)
- {
- uchar val = mat_CV_8UC1.at<uchar>(nrow,ncol);
- }
- }
- Mat img2 = imread(filename,IMREAD_COLOR);
- for( size_t nrow = 0; nrow < img2.rows; nrow++)
- {
- for(size_t ncol = 0; ncol < img2.cols; ncol++)
- {
- Vec3i bgr = mat_CV_8UC3.at<Vec3b>(nrow,ncol);//用Vec3b也行
- cout << "("<<bgr.val[0]<<","
- <<bgr.val[1]<<","
- <<bgr.val[2]<<")";
- }
- cout << endl;
- }
- for( size_t nrow = 0; nrow < img3.rows; nrow++)
- {
- uchar* data = img3.ptr<uchar>(nrow);
- for(size_t ncol = 0; ncol < img3.cols * img3.channels(); ncol++)
- {
- cout << int( data[ncol] ) ;
- }
- cout << endl;
- }
- Mat img4 = imread(filename,IMREAD_GRAYSCALE);
- MatIterator_<uchar> it = img4.begin<uchar>(), it_end = img4.end<uchar>();
- for(int cnt = 1; it != it_end; ++it)
- {
- cout << ( int(*it) ) ;
- if( (cnt++ % img4.cols) ==0 )
- cout << endl;
- }
- Mat img5(rows, cols,CV_8U, Scalar(0));
- for( size_t nrow = 0; nrow < img5.rows; nrow++)
- for(size_t ncol = 0; ncol < img5.cols; ncol++)
- {
- cout<<(int)(*(img5.data+img5.step[0]*nrow+img5.step[1]*ncol));
- }
5、补充:在使用 at 函数的情况下需要预先知道Mat变量中存储的元素类型,如果类型不匹配就会出现读错误。所以可以采用c++ boost库中的BOOST_TYPEOF来获取图像的元素数据类型。
例:
- Mat img6 = imread(filename);
- typedef BOOST_TYPEOF(*img6.data) ElementType
- for( size_t nrow = 0; nrow < img1.rows; nrow++)
- {
- for(size_t ncol = 0; ncol < img1.cols; ncol++)
- {
- cout<<mat_CV_8UC1.at<ElementType>(nrow,ncol);
- }
- }
阅读全文
0 0
- Opencv 中 Mat中元素的值读取方法总结
- Opencv 中 Mat中元素的值读取方法总结
- Opencv中Mat中元素的值读取方法总结
- Opencv 中 Mat中元素的值读取方法总结
- Opencv 访问Mat中像素的值的快速方法
- opencv中Mat和CvMat访问元素的方式
- OpenCV中Mat结构图像元素的获取
- OpenCV遍历和输出Mat矩阵中数据方法总结
- opencv Mat元素的访问方法
- opencv中mat的push_back。
- opencv的Mat中step
- OpenCV中mat的type
- OpenCV中Mat的详解
- OpenCV中Mat的属性
- OpenCV中Mat的type
- OpenCV中Mat的详解
- opencv 中Mat的数据结构
- OpenCV中Mat的type
- 欢迎使用CSDN-markdown编辑器
- [线性基+贪心] BZOJ2460: [BeiJing2011]元素
- 作为一切的开始
- 解决FTPClient上传文件为空
- 用Navicat导入数据时报错,[Err] 2006
- Opencv中Mat中元素的值读取方法总结
- ASP.Net 开发中关于时间模糊匹配问题
- PHP iconv 解决utf-8和gb2312编码转换问题
- java转换数字以万为单位
- Redis之RDB持久化
- leetcode:Coin Change
- Android7.0中文文档 -- Space
- netty实现webSocket协议
- Java中的深拷贝、浅拷贝