cv :: Conversão Mat to QImage

Eu encontrei um tópico muito semelhante:como converter um opencv cv :: Mat para qimage , mas isso não resolve o meu problema.

Tenho função convertendo cv :: Mat para 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;
}

E funciona para o meu, mas quero torná-lo mais eficiente. Primeiro: por que mudar 2 funções cvtColor com:

cv::cvtColor(mat,rgb,CV_GRAY2BGRA)

falha em

QImage returnImage = temp.copy() 

com segfault.

Então, como eliminar a cópia do QImage. Quando eu simplesmente retorno a imagem temp, estou ficando segfault.

Qualquer outra otimização pode ser feita lá? É muito freqüentemente usada função, então eu quero fazer isso o mais rápido possível.

questionAnswers(3)

yourAnswerToTheQuestion