问题描述
我正在使用 QByteArray
读取 QTcpsocket
并将数组转换为 cvMat 图像。使用 imshow() 显示图像。但我得到的是灰色图像。
代码如下。
//array ->QBytearray (received from socket)
cv::Mat img,img1;
img.cols=320;
img.rows=240;
img = cv::Mat(240,320,CV_8UC1,array.data());
cv::cvtColor(img,img,CV_GRAY2RGB); //
cv::imshow("image display",img);
cv::waitKey(5000);
提前致谢。
解决方法
这是单独修改频道的方法:
img = cv::Mat(240,320,CV_8UC1,array.data());
cv::Mat img1;
cv::divide(img,cv::Scalar(2),img1);
std::vector<cv::Mat> channels;
channels.push_back(img);
channels.push_back(img1);
channels.push_back(img);
cv::merge(channels,img);
cv::imshow("image display",img);
cv::waitKey(5000);