QT的opencv在图片上画圈
时间: 2024-09-29 18:07:55 浏览: 53
在Qt中结合OpenCV库进行图像处理时,要在图片上画圆可以使用OpenCV的`cv2.circle()`函数。首先,你需要导入必要的库,然后创建一个OpenCV的Mat对象表示你的图像。接下来,你可以这样做:
```cpp
#include <opencv2/opencv.hpp>
#include <QImage>
#include <QApplication>
// 假设loadImage是从文件加载图像
cv::Mat image = loadImage();
// 定义圆心坐标和半径
int centerX = 50;
int centerY = 100;
int radius = 50;
// 创建一个与原图同尺寸的白色背景 Mat
cv::Mat circleMask(image.size(), CV_8UC1, cv::Scalar(0));
cv::circle(circleMask, cv::Point(centerX, centerY), radius, cv::Scalar(255), -1); // 第二个参数代表线宽为-1表示填充整个圆
// 将圆形区域从原图复制过来
image(circleMask == 255) = image(circleMask == 0);
// 把OpenCV的Mat转换为QImage
QImage qi = QImage(image.data, image.cols, image.rows, QImage::Format_RGB888);
// 现在你可以显示qi,或者将它保存为图片文件
```
这将在原始图像`image`的给定位置画出一个红色的圆。记得在实际项目中替换`loadImage()`函数为从文件读取图片的实际方法。
阅读全文