QT 5.12.9 版本将 Qbytearray 显示为 Image

问题描述

我正在使用 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() 函数之后也不会转换成彩色图像。

提前致谢。

解决方法

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

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);

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...