【发布时间】:2017-04-09 21:09:17
【问题描述】:
我必须将 QImage 转换为 cv::Mat,如果我使用 similar topics 中描述的技术,我会收到不同数量的轮廓 (7--8) 和奇怪的结果矩阵,但如果我这样做了
QImage im;
im.save ("tmp.bmp");
cv::Mat rImage;
rImage = cv::imread ("tmp.bmp", CV_LOAD_IMAGE_GRAYSCALE);
函数 findContours 可以正常工作。这些技术之间有什么区别,我可以通过哪种方式在这些方法之间归档相同的结果?
【问题讨论】:
-
这可能取决于 QImage 格式。你的是什么?
-
RGB32格式的源图像。
-
你能说明你实际使用的是哪个代码,你得到了什么奇怪的结果吗?
-
cv::Mat qimage_to_mat_cpy(const QImage &img, int format) { uchar* b = const_cast
(img.bits ()); int c = img.bytesPerLine(); cv::Mat mat = cv::Mat(img.height(), img.width(), 格式, b, c).clone();返回垫; } -
请尝试使用this 代码。
QImageToCvMat函数...应该适用于您的情况(通常有一些事情需要更正/更新)。