преобразование cv :: Mat в QImage
Я нашел очень похожую тему:как конвертировать 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. Когда я просто возвращаю временное изображение, у меня возникает ошибка по умолчанию.
Любые другие оптимизации могут быть сделаны там? Это очень часто используемая функция, поэтому я хочу сделать ее как можно быстрее.