cv::Mat 与 QImage 之间的转换
时间: 2024-02-06 18:02:19 浏览: 143
ImageWatch,vs 2015, vs 2017调试的时候查看cv::Mat 图片插件
在OpenCV和Qt中,分别使用cv::Mat和QImage表示图像。如果需要在两者之间进行转换,可以使用以下方法:
1. cv::Mat转QImage
可以使用以下代码将cv::Mat转换为QImage:
```c++
cv::Mat mat;
// 读取或创建cv::Mat图像
QImage img(mat.data, mat.cols, mat.rows, static_cast<int>(mat.step), QImage::Format_RGB888);
```
此处,使用QImage的构造函数,将cv::Mat的数据指针、宽、高、每行字节数和像素格式传入,创建一个QImage图像。
2. QImage转cv::Mat
可以使用以下代码将QImage转换为cv::Mat:
```c++
QImage img;
// 读取或创建QImage图像
cv::Mat mat(img.height(), img.width(), CV_8UC4, img.bits(), img.bytesPerLine());
```
此处,使用cv::Mat的构造函数,将QImage的高、宽、像素格式、数据指针和每行字节数传入,创建一个cv::Mat图像。需要注意的是,QImage的像素格式与cv::Mat的像素格式并不完全对应,需要根据实际情况选择合适的像素格式。
阅读全文