我找到了一个非常相似的主题:如何将opencv cv :: Mat转换为QImage,但它并没有解决我的问题。
我有一个将cv :: Mat转换为QImage的函数。
我有一个将cv :: Mat转换为QImage的函数。
QImage cvMatToQImg(cv::Mat& mat)
{
cv::Mat rgb;
if(mat.channels()==1)
{
cv::cvtColor(mat,rgb,CV_GRAY2BGR);
cv::cvtColor(rgb,rgb,CV_BGR2BGRA);
QImage temp = QImage((unsigned char*)(rgb.data), rgb.cols,
rgb.rows,QImage::Format_ARGB32 );
QImage returnImage = temp.copy();
return returnImage;
}
它对我来说是有效的,但我希望使其更加高效。 首先:为什么要将2个cvtColor函数更改为:
cv::cvtColor(mat,rgb,CV_GRAY2BGRA)
失败于
QImage returnImage = temp.copy()
出现了段错误。
那么如何消除 QImage 的复制?当我简单返回临时图像时,会出现段错误。
还有其他可优化的地方吗?这是一个非常常用的功能,所以我想尽可能让它快速。
mat
的图像格式,它是一个24位灰度图像吗? - cmannett85