【OpenCV】函数imread的使用之通道数变化
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);
發(fā)現(xiàn)輸出圖像dstImg只顯示輸入圖像1/3的寬度特征,排查問題發(fā)現(xiàn):srcImg是三通道的圖片,解決辦法如下:
1、方法一:在imread時(shí)把srcImg以單通道讀入
Mat srcImg = imread( " srcImg.bmp",0); ?//以單通道讀入源圖片
Imread的第2個(gè)參數(shù)可以控制圖片的讀入通道數(shù),如下:
>0 Return a 3-channel color image.
=0 Return a grayscale image.
<0 Return the loaded image as is (with alpha channel).
?
2、方法二:以三通道的形式讀入,然后轉(zhuǎn)成單通道
Mat srcImg = imread( "srcImg.bmp"); ???//以三通道讀入源圖片
if (srcImg.channels() > 1)
{?????
? ? ? ?cvtColor(srcImg,srcImg, CV_BGRA2GRAY);?? //把三通道轉(zhuǎn)成單通道
}總結(jié)
以上是生活随笔為你收集整理的【OpenCV】函数imread的使用之通道数变化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【C/C++】运算结果出现1.#Q0问题
- 下一篇: Window7新建文件夹后刷新才显示的解