我发现了非常相似的主题:如何将 opencv cv::Mat 转换为 qimage https://stackoverflow.com/questions/5026965/how-to-convert-an-opencv-cvmat-to-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的复制呢。当我只是返回临时图像时,我遇到了段错误。
那里还可以进行其他优化吗?这是一个经常使用的功能,所以我想让它尽可能快。