1 #ifndef __ASM_OPENCV_H__ 2 #define __ASM_OPENCV_H__ 16 #include "opencv2/imgproc/imgproc.hpp" 17 #include "opencv2/imgproc/types_c.h" 21 inline QImage cvMatToQImage(
const cv::Mat &inMat )
23 switch ( inMat.type() )
28 QImage image( inMat.data, inMat.cols, inMat.rows, inMat.step, QImage::Format_RGB32 );
36 QImage image( inMat.data, inMat.cols, inMat.rows, inMat.step, QImage::Format_RGB888 );
38 return image.rgbSwapped();
44 static QVector<QRgb> sColorTable;
47 if ( sColorTable.isEmpty() )
49 for (
int i = 0; i < 256; ++i )
50 sColorTable.push_back( qRgb( i, i, i ) );
53 QImage image( inMat.data, inMat.cols, inMat.rows, inMat.step, QImage::Format_Indexed8 );
55 image.setColorTable( sColorTable );
61 qWarning() <<
"ASM::cvMatToQImage() - cv::Mat image type not handled in switch:" << inMat.type();
68 inline QPixmap cvMatToQPixmap(
const cv::Mat &inMat )
70 return QPixmap::fromImage( cvMatToQImage( inMat ) );
76 inline cv::Mat QImageToCvMat(
const QImage &inImage,
bool inCloneImageData =
true )
78 switch ( inImage.format() )
81 case QImage::Format_RGB32:
83 cv::Mat mat( inImage.height(), inImage.width(), CV_8UC4,
const_cast<uchar*
>(inImage.bits()), inImage.bytesPerLine() );
85 return (inCloneImageData ? mat.clone() : mat);
89 case QImage::Format_RGB888:
91 if ( !inCloneImageData )
92 qWarning() <<
"ASM::QImageToCvMat() - Conversion requires cloning since we use a temporary QImage";
94 QImage swapped = inImage.rgbSwapped();
96 return cv::Mat( swapped.height(), swapped.width(), CV_8UC3,
97 const_cast<uchar*
>(swapped.bits()),
98 swapped.bytesPerLine() ).clone();
102 case QImage::Format_Indexed8:
104 cv::Mat mat( inImage.height(), inImage.width(), CV_8UC1,
const_cast<uchar*
>(inImage.bits()), inImage.bytesPerLine() );
106 return (inCloneImageData ? mat.clone() : mat);
110 qWarning() <<
"ASM::QImageToCvMat() - QImage format not handled in switch:" << inImage.format();
120 inline cv::Mat QPixmapToCvMat(
const QPixmap &inPixmap,
bool inCloneImageData =
true )
122 return QImageToCvMat( inPixmap.toImage(), inCloneImageData );
126 #endif // __ASM_OPENCV_H__ Definition: asmOpenCV.h:20