0

我正在阅读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);

在 cvtColour() 函数之后,它也没有转换成彩色图像。

提前致谢。

4

1 回答 1

0

这是单独修改通道的方法:

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);
于 2020-12-23T11:26:38.237 回答