vs 2017 c++ OpenCV 要如何多边形框选图片中的感兴趣区域,举例子详细说明
时间: 2023-06-08 21:05:58 浏览: 189
您好,根据您的问题,我可以为您提供以下答案:
要在 VS 2017 C++ 中使用 OpenCV 对图像进行多边形框选,您可以使用以下步骤:
1. 读取图像并显示图像:
```
Mat image = imread("image.jpg");
imshow("Original Image", image);
```
2. 创建空白的掩码图像并初始化为全黑色:
```
Mat mask = Mat::zeros(image.size(), CV_8UC1);
```
3. 创建一个被选中区域的边界点数组:
```
Point points[1][4];
points[0][0] = Point(100,100);
points[0][1] = Point(300,100);
points[0][2] = Point(300,300);
points[0][3] = Point(100,300);
const Point* ppt[1] = { points[0] };
int npt[] = { 4 };
```
在上面的代码中,我们创建了一个包含四个边界点的数组。您可以根据需要更改边界点的数量和位置。
4. 使用 fillPoly 函数绘制多边形区域:
```
fillPoly(mask, ppt, npt, 1, Scalar(255, 255, 255));
```
在上面的代码中,我们使用 fillPoly 函数将多边形区域绘制到掩码图像中。此函数在掩码图像上着色以标记选定的区域。
5. 将掩码应用于原始图像以提取所选区域:
```
Mat result;
image.copyTo(result, mask);
```
在上面的代码中,我们将掩码应用于原始图像以提取所选区域。这将从原始图像中删除其余部分,使您只能看到所选区域。
6. 显示提取的图像:
```
imshow("Selected Region", result);
```
在上面的代码中,我们显示提取的图像,该图像显示了所选区域。
希望这可以帮助您实现在 VS 2017 C++ 和 OpenCV 中多边形框选所需的感兴趣区域。如果您有任何问题,请随时问我!
阅读全文