gpt4 book ai didi

c++ - Qimage转cvMat 64FC3格式

转载 作者:太空宇宙 更新时间:2023-11-03 22:26:27 24 4
gpt4 key购买 nike

我在互联网上搜索了很多,但我只找到了如何将 Qimage 转换为 RGB 格式,我想将 Qimage 转换为 cv mat 格式 CV_64FC3。当我使用 CV_8UC3 时,我的结果非常糟糕

这是我的代码:

QImage myImage;
myImage.load("C://images//PolarImage300915163358.bmp");

QLabel myLabel;
myLabel.setPixmap(QPixmap::fromImage(myImage));

//myLabel.show();

cv::Mat image1 = QImage2Mat(myImage);



Mat img;

image1.convertTo(img, CV_64FC3, 1.0 / 255.0);

这是我使用的函数:

cv::Mat QImage2Mat(QImage const& src)
{
cv::Mat tmp(src.height(),src.width(),CV_8UC3,(uchar*)src.bits(),src.bytesPerLine());
cv::Mat result; // deep copy just in case (my lack of knowledge with open cv)
cvtColor(tmp, result,CV_BGR2RGB);
return result;
}

请帮助我,我是 opencv 和 Qt 的新手

最佳答案

不确定你的坏结果是什么意思,但你假设 QImage还将图像加载为 OpenCV (BGR)。在文档中它告诉您他们使用 ARGB

所以,知道这一点后,您有 2 个选择:

  1. 使用函数 convertToFormatQimage 转换为 QImage::Format_RGB888然后这一行 cvtColor(tmp, result,CV_BGR2RGB); 是不需要的,因为它已经是 RGB 了。
  2. 在创建 cv::Mat 时使用 CV_8UC4,然后使用 split and join 或 mixchannels 删除第一个 channel ( channel alpha)。

关于c++ - Qimage转cvMat 64FC3格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37112351/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com