QPixmap转opencv的mat
时间: 2023-10-18 21:18:46 浏览: 390
可以使用以下代码将QPixmap转换为OpenCV的Mat:
```
QPixmap pixmap = ...; // your QPixmap object
QImage image = pixmap.toImage(); // convert QPixmap to QImage
Mat mat(image.height(), image.width(), CV_8UC4, image.bits(), image.bytesPerLine()); // create OpenCV Mat object
cvtColor(mat, mat, COLOR_RGBA2BGR); // convert RGBA to BGR
```
这段代码将QPixmap转换为QImage,然后将QImage转换为OpenCV的Mat对象,并将RGBA格式转换为BGR格式。
相关问题
C++ opencv Mat 转QPixmap
要将C++ OpenCV中的Mat转换为Qt中的QPixmap,需要进行以下步骤:
1. 将Mat转换为QImage:
```c++
cv::Mat mat; // 定义OpenCV中的Mat
QImage image(mat.data, mat.cols, mat.rows, mat.step, QImage::Format_RGB888); // 将Mat转换为QImage
image = image.rgbSwapped(); // 如果需要显示的话,需要将图像颜色通道进行交换
```
2. 将QImage转换为QPixmap:
```c++
QPixmap pixmap = QPixmap::fromImage(image);
```
这样就完成了从C++ OpenCV中的Mat到Qt中的QPixmap的转换。
QImage转opencv
将QImage转换为OpenCV中的Mat可以通过以下步骤完成:
1. 将QImage转换为QPixmap
```
QPixmap pixmap = QPixmap::fromImage(qimage);
```
2. 将QPixmap转换为cv::Mat
```
cv::Mat cvimg;
QPixmap pixmap = QPixmap::fromImage(qimage);
QPixmap pixmap_copy = pixmap.copy(); // Make a deep copy of the pixmap
QImage img = pixmap_copy.toImage();
cvimg = cv::Mat(img.height(), img.width(), CV_8UC4, img.bits(), img.bytesPerLine());
```
注意:上述代码假设QImage的格式为32位ARGB,如果QImage的格式不同,需要进行适当的转换。
阅读全文