我发现了非常相似的主题:如何将 opencv 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的复制。当我简单地返回临时图像时,我遇到了段错误。
可以在那里进行任何其他优化吗?这是非常常用的功能,所以我想尽可能快地使用它。