Mat srcImg = imread( "srcImg.bmp"); //读入源图片
Mat dstImg (srcImg.rows, srcImg.cols, CV_8UC1, Scalar(0));
if(srcImg.at<uchar>(i,j) > 0)
{
dstImg.at<uchar>(i,j) = 255;
}
imshow("dstImg ", dstImg);
发现输出图像dstImg只显示输入图像1/3的宽度特征,排查问题发现:srcImg是三通道的图片,解决办法如下:
1、方法一:在imread时把srcImg以单通道读入
Mat srcImg = imread( " srcImg.bmp",0); //以单通道读入源图片
Imread的第2个参数可以控制图片的读入通道数,如下:
>0 Return a 3-channel color image.
=0 Return a grayscale image.
<0 Return the loaded image as is (with alpha channel).
2、方法二:以三通道的形式读入,然后转成单通道
Mat srcImg = imread( "srcImg.bmp"); //以三通道读入源图片
if (srcImg.channels() > 1)
{
cvtColor(srcImg,srcImg, CV_BGRA2GRAY); //把三通道转成单通道
}