1 | initial version |
Here is a function to convert Mat to QPixmap or QImage. It's much faster than the direct pixel access using the Mat::at(y,x)
function:
QPixmap MatToPixmap(cv::Mat src)
{
QImage::Format format=QImage::Format_Grayscale8;
int bpp=src.channels();
if(bpp==3)format=QImage::Format_RGB888;
QImage img(src.cols,src.rows,format);
uchar *sptr,*dptr;
int linesize=src.cols*bpp;
for(int y=0;y<src.rows;y++){
sptr=src.ptr(y);
dptr=img.scanLine(y);
memcpy(dptr,sptr,linesize);
}
if(bpp==3)return QPixmap::fromImage(img.rgbSwapped());
return QPixmap::fromImage(img);
}
To convert a QImage to Mat, invert the parameters of the memcpy
function.