软件要进行大量的qimage和cvmat互相转换,以及cvmat相关颜色处理
颜色处理以及转换次数多了后就会出现图片变成黑白条状,并且横向会缩小
这是用到的转换代码
//qimage转cvmat
cv::Mat MainWindow::QImageTocvMat(const QImage image) {
cv::Mat mat( image.height(), image.width(),CV_8UC4,const_cast<uchar*>(image.bits()), static_cast<size_t>(image.bytesPerLine())
cv::Mat matNoAlpha;
cvtColor(mat, matNoAlpha, cv::COLOR_BGRA2BGR);
return matNoAlpha;
}
//cvmat转qimage
QImage MainWindow::cvMatToQImage(const cv::Mat mat) {
cv::Mat temp = mat.clone();
QImage image(temp.data, temp.cols, temp.rows, temp.step, QImage::Format_RGB888);
QImage image2 = image.rgbSwapped();
return image2.copy();
}
尝试过网上各种互转的写法,都不得行
网上说的qimage深拷贝或者mat四字节对齐问题,也是没有效果