在QT中如何使用cv::drawContours
时间: 2024-04-23 20:28:08 浏览: 119
QT画图工具的使用
在QT中使用cv::drawContours函数,需要将OpenCV与QT集成在一起,并在QT的界面上显示绘制的结果。以下是一个简单的示例代码,演示了如何在QT中使用cv::drawContours函数:
```cpp
#include <opencv2/opencv.hpp>
#include <QImage>
#include <QLabel>
#include <QVBoxLayout>
#include <QMainWindow>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// 创建一个QT主窗口
QMainWindow window;
// 创建一个包含矩形边界点的点集合
std::vector<std::vector<cv::Point>> contours;
std::vector<cv::Point> rectanglePoints;
rectanglePoints.push_back(cv::Point(100, 100));
rectanglePoints.push_back(cv::Point(400, 100));
rectanglePoints.push_back(cv::Point(400, 400));
rectanglePoints.push_back(cv::Point(100, 400));
contours.push_back(rectanglePoints);
// 创建一个黑色图像
cv::Mat image(500, 500, CV_8UC3, cv::Scalar(0, 0, 0));
// 绘制矩形
cv::drawContours(image, contours, 0, cv::Scalar(0, 255, 0), 2);
// 将OpenCV图像转换为QT图像
QImage qtImage(image.data, image.cols, image.rows, image.step, QImage::Format_RGB888);
// 创建一个QT标签控件用于显示图像
QLabel label;
label.setPixmap(QPixmap::fromImage(qtImage));
// 将标签添加到主窗口中
QVBoxLayout layout;
layout.addWidget(&label);
QWidget centralWidget;
centralWidget.setLayout(&layout);
window.setCentralWidget(¢ralWidget);
window.show();
return a.exec();
}
```
在上述示例代码中,我们首先创建了一个QT主窗口,并定义了一个包含矩形边界点的点集合。然后,我们创建了一个黑色图像,并使用cv::drawContours函数在图像上绘制矩形。接下来,我们将OpenCV图像转换为QT图像,并创建一个QT标签控件来显示图像。最后,我们将标签添加到主窗口中,并显示主窗口。
请注意,上述代码只是一个简单示例,您可以根据自己的需求进行修改和扩展。另外,确保已正确配置OpenCV和QT的环境,并将相关头文件和库文件包含到项目中。
阅读全文