我会尽力帮忙翻译,以下是你需要翻译的内容:
Translated:
我想把一个cvMat类型的图像转换成Qimage类型,但我的实际代码无法正常工作;我已经做了另一种方式(从Qimage到Mat),它可以正常工作,请告诉我我的代码哪里出了问题。
这是我从Qimage到Mat的代码:
Translated:
我想将一个cvMat类型的图像转换为Qimage类型,但使用我的实际代码时应用程序无法工作。我已经成功地将Qimage转换为Mat,但请告诉我我的代码哪里出了问题。
以下是我从Qimage到Mat的代码:
Mat qimage2mat(const QImage& qimage) {
cv::Mat mat = cv::Mat(qimage.height(), qimage.width(), CV_8UC4, (uchar*)qimage.bits(), qimage.bytesPerLine());
cv::Mat mat2 = cv::Mat(mat.rows, mat.cols, CV_8UC3 );
int from_to[] = { 0,0, 1,1, 2,2 };
cv::mixChannels( &mat, 1, &mat2, 1, from_to, 3 );
return mat2;
}
这是我将 Mat 转换为 QImage 的代码:
QImage mat2qimage(const Mat& mat) {
Mat rgb;
cvtColor(mat, rgb, CV_BGR2RGB);
return QImage((const unsigned char*)(rgb.data), rgb.cols, rgb.rows, QImage::Format_RGB888);
}
thank you by advance
Mat rgb
在函数结束时超出作用域并被删除。复制图像数据或从寿命更长的mat
进行转换。 - SpamBotnew
创建一个Mat * rgb
。 - SpamBot