OpenCV中Mat 与 imshow

一 imshow函数说明

1.imshow可以直接显示8位无符号整型图像,像素值范围位(0,255)。

2.imshow也是可以直接正常显示浮点型图像(32位或64位)的,当inshow函数遇到浮点型图像时,像素值将乘以255。也就是说,值范围[0,1]被映射到[0,255],然后就能正常显示了(这个过程是内部自动完成的)。前提是浮点型图像(即像素值范围为(0,1)),而不是随意取值范围浮点型矩阵。

3.如果你计算得到一个矩阵,想让其显示为图像,若是8位无符号整型,像素值要在(0,255)区间内,如若不是需要进行范围归一化为(0,255)。若是浮点型的不在(0,1)范围,则要归一化范围为(0,1),或者直接转为8位无符号整型(如:用normalize函数归一 化为 0,255)范围后,再用convertScaleAbs函数将归一化后的图线性变换成8位无符号整型)。

二 CV_32FC1类型图像显示实例

Mat A= Mat::zeros(m,n, CV_32FC1);//输入

for (int i= 0; i < m; ++i) //访问 
{
     for (int j = 0; j < n; ++j)   
    {
         A.at<float>(i,j) = 123.333;//赋值 
     }  
}  
normalize(A,A,1.0,0.0,NORM_MINMAX);//归一到0~1之间
imshow("A", A);//显示  

二 CV_8UC1 /CV_8UC3类型图像的访问

//0<=pixelY<750 ;    0<=pixelX<500

Mat map0(Mat::zeros(750, 500, CV_8UC1));
map0.ptr<char>(pixelY)[pixelX] = 254; //单通道图像不能用data[offset]的方式访问;
imshow("map0",map0);

int offset=pixelX*3+pixelY*map0.step; 
Mat map1(Mat::zeros(750, 500, CV_8UC3));
map1.data[offset+0]=250;
map1.data[offset+1]=250;
map1.data[offset+2]=250;
imshow("map1",map1);
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值