如图上所示
最近刚开始自学opencv
一开始没觉得这个有啥问题,因为都是主要看输出图像
最近用到这个显示通道跟像素数的时候感觉很别扭,但又不知道问题出在哪
球球大神帮忙
上一篇没贴代码,所以重新描述了一下问题
#include<opencv2/opencv.hpp>
#include<iostream>
#include<opencv2/highgui/highgui_c.h>
using namespace std;
using namespace cv;
int main(int argc, char** argv) {
Mat src;
src = imread("C:/临时文件夹/王昭君.jpg");
if (src.empty()) {
cout << "could not load image..." << endl;
return -1;
}
namedWindow("input", CV_WINDOW_AUTOSIZE);
imshow("input", src);
/*Mat dst;
dst = Mat(src.size(), src.type());//创建一个跟src大小一样的图像
dst = Scalar(127, 0, 255);//对这个dst图像重新RGB赋值就可以生成背景图
namedWindow("output", CV_WINDOW_AUTOSIZE);
imshow("output", dst);*/
//Mat dst = src.clone();//对图像src进行完全克隆
/*Mat dst;
src.copyTo(dst);//也可以对src进行拷贝
*/
Mat dst;
cvtColor(src, dst, CV_BGR2GRAY);//第一个参数为原图象,第二个参数为转化后的图象,第三个参数为颜色转换空间标志符
printf("input image channels:%d\n",src.channels());
printf("output image channels:%d\n", dst.channels());
const uchar*firstRow=dst.ptr<uchar>(0);
printf("firet pixel value:%d\n", *firstRow);
namedWindow("output", CV_WINDOW_AUTOSIZE);
imshow("output", dst);
waitKey(0);
return 0;
}