opencv 中图像像素的读取与显示


读取像素 

单通道 :  ycbr.at<uchar>(i,j)

三通道:ycbr.at<Vec3b>(i,j)

四通道:ycbr.at<Vec4b>(i,j)


返回的应该是个 <> 中参数的量,Vec3b。

无法直接显示 ,需要转换成 int数据类型 ,才能 用cout 输出。


如果读取某个元素,需要 末尾加中括号和数组索引,

注意,如果是4通道的图像, 在读取元素的时候,需要写Vec4b, 如果写成Vec3b,最后的结果会乱掉。 ycbr.at<Vec3b>(0,1)[0]会错误读取为 ycbr.at<Vec4b>(0,0)[3]

,会把第一个像素的 第四通道作为下一个像素的第一个通道数值,以此类推。


打印输出, rgb.at<Vec4b>(i,j)[0]   和 rgb.at<uchar>(i,j) 返回的都是 uchar类型, 直接cout输出的为字符格式, 转换为数字的几种方式:

1、int a = ×××× ;   // 强制赋值给int型变量

2、(int)×××× ;  // int类型强制转换

3、atoi(××××); // 该转换函数 会报错   无法从 unsigned char 型 转换为 const uchar型


int ele = rgb.at<uchar>(i, j);
cout << "ele: " <<ele << endl;
int a0 = rgb.at<Vec4b>(i, j)[0]; int a1 = rgb.at<Vec4b>(i, j)[1]; int a2 = rgb.at<Vec4b>(i, j)[2];
cout << a0 << " "<< a1<< " " << a2 << endl;
cout << "ele: " << rgb.at<Vec4b>(i, j)[0] << endl;










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值