在使用Qt和OpenCV混合编程时,我们有时需要在两种图片类cv::Mat和QImage之间进行转换,下面的代码参考了网上这个帖子:
//##### cv::Mat ---> QImage ##### // Shallow copy QImage mat2qimage_ref(cv::Mat &m, QImage::Format format) { return QImage(m.data, m.cols, m.rows, m.step, format); } // Deep copy QImage mat2qimage_cpy(cv::Mat &m, QImage::Format format) { return QImage(m.data, m.cols, m.rows, m.step, format).copy(); } //##### QImage ---> cv::Mat ##### // Shallow copy cv::Mat qimage2mat_ref(QImage &img, int format) { return cv::Mat(img.height(), img.width(), format, img.bits(), img.bytesPerLine()); } // Deep copy cv::Mat qimage2mat_ref(QImage &img, int format) { return cv::Mat(img.height(), img.width(), format, const_cast<uchar*>(img.bits()), img.bytesPerLine()).clone(); }
时间: 2024-10-25 04:14:47