首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从cvMat到QImage

从cvMat到QImage
EN

Stack Overflow用户
提问于 2016-05-23 07:41:13
回答 1查看 539关注 0票数 3

我想将图像从cvMat类型转换为Qimage,使用我的实际代码,应用程序无法工作;我用另一种方式(Qimage to Mat it工作很好),请告诉我我的代码出了什么问题

下面是我的Qimage到Mat的代码:

代码语言:javascript
复制
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 to Qimage的代码

代码语言:javascript
复制
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);
}

预先谢谢你

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-23 08:10:38

正如@SpamBot所提到的,当Mat超出作用域时,数据就会被释放。尝试深入复制数据:

代码语言:javascript
复制
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).copy();
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37385254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档