利用C++,输入圆心坐标和半径,截取该图片圆形区域内容
时间: 2023-06-18 14:06:15 浏览: 100
这个问题涉及到图像处理,可以使用OpenCV库来实现。下面是一个示例代码,可以读取一个图片,截取圆形区域并保存为新的图片。
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv) {
if (argc != 4) {
cout << "Usage: " << argv[0] << " <input_image> <center_x> <center_y> <radius>" << endl;
return -1;
}
// 读取输入图片
Mat img = imread(argv[1], IMREAD_COLOR);
if (img.empty()) {
cout << "Failed to read image: " << argv[1] << endl;
return -1;
}
// 获取圆心坐标和半径
int cx = atoi(argv[2]);
int cy = atoi(argv[3]);
int r = atoi(argv[4]);
// 创建掩膜
Mat mask(img.size(), CV_8UC1, Scalar(0));
circle(mask, Point(cx, cy), r, Scalar(255), -1);
// 应用掩膜
Mat result;
img.copyTo(result, mask);
// 保存输出图片
imwrite("result.jpg", result);
return 0;
}
```
在命令行中执行以下命令:
```
./program input.jpg 100 100 50
```
其中,`input.jpg`是输入的图片路径,`(100, 100)`是圆心坐标,`50`是半径。运行后会在当前目录下生成一个名为`result.jpg`的图片,其中圆形区域的内容已经被截取出来了。
阅读全文