【发布时间】:2021-04-01 23:54:34
【问题描述】:
我正在使用 QTcpSocket 读取 QByteArray 并将数组转换为 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() 函数之后也没有转换成彩色图像。
提前致谢。
【问题讨论】:
-
看
cv::Mat::convertTo。在cvtColorsrc 和 dest 具有相同的深度。 -
用 CV_8UC3 测试一下
-
@rafix07 在更改 src 和目标后也显示相同的灰色图像。
-
请出示序列化和发送图片的代码。
-
@Farshid616 它会引发错误。 OpenCV 错误: cvtColor 中的断言失败 (scn == 1 && (dcn == 3 || dcn == 4)),文件 /build/opencv-ys8xiq/opencv-2.4.9.1+dfsg/modules/imgproc/src/color .cpp,第 3789 行终止在抛出“cv::Exception”实例后调用什么():/build/opencv-ys8xiq/opencv-2.4.9.1+dfsg/modules/imgproc/src/color.cpp:3789:错误: (-215) scn == 1 && (dcn == 3 || dcn == 4) in function cvtColor Aborted (core dumped)
标签: c++ qt opencv opencv-mat