0
我有以下代码转换矩阵的“类型”使用cv :: Mat.convertTo()函数在OpenCV API。在OpenCV中转换矩阵的类型
但是,当我使用imshow()显示它时,图像是完全不同的。
转换后的图像是完全灰色的。
但是,这些图像中的值(cv :: Mat)是相同的。
我想我在这里错过了一些非常平凡的东西。
Mat x = imread("/home/jason/Desktop/1.png",0);
Mat y = Mat(x.rows,x.cols,CV_16S,Scalar(0));
x.convertTo(y,CV_16SC1, 1,0);
imshow("x",x);
imshow("y",y);
waitKey(0);
cout<<x.type()<<endl;
cout<<y.type()<<endl;
//verifying the values in the image.
cout<<"rows 10"<<x.row(10)<<endl;
cout<<"rows 10"<<y.row(10)<<endl;
这很有趣。我只是检查文件。我认为这是非常微不足道的注意。你有什么线索为什么这样做? – garak
有几个原因:1)没有那么多的设备能够显示每个通道8位以上的数据。 2)只有BGR888格式足够便携,才能在OpenCV旨在工作的各种系统上显示。 3)OpenCV中的GUI功能专为算法开发和调试而设计,但不适用于构建真实世界的应用程序。 –