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.