преобразование 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. Когда я просто возвращаю временное изображение, у меня возникает ошибка по умолчанию.

Любые другие оптимизации могут быть сделаны там? Это очень часто используемая функция, поэтому я хочу сделать ее как можно быстрее.

Ответы на вопрос(3)

Ваш ответ на вопрос