OpenCV实现将任意形状ROI区域置黑(多边形区域置黑)

18 篇文章 2 订阅
13 篇文章 0 订阅

比较常用的是将 Rect 矩形区域置黑,代码如下:

int testMaskRectROI() {
    cv::Mat image = cv::imread("./test_img/detect_pic.jpeg");

    cv::Rect rect_mask(57, 93, 92, 92);
    cv::Mat subImage = image(rect_mask);
    subImage.setTo(0);

    cv::imshow("src", image);
    cv::waitKey(0);
}

效果如下:
在这里插入图片描述
但在做人脸检测的旋转追踪时,矩形框是随角度旋转的,那如何处理呢?直接上代码:

int testMaskAnyROI() {
    cv::Mat image = cv::imread("./test_img/detect_pic.jpeg");

    vector<cv::Point> contour;
    contour.push_back(cv::Point(66, 80));
    contour.push_back(cv::Point(38, 177));
    contour.push_back(cv::Point(134, 205));
    contour.push_back(cv::Point(162, 108));

    vector<vector<cv::Point> > contours;
    contours.push_back(contour);
    cv::drawContours(image, contours, -1, cv::Scalar::all(0), CV_FILLED);

    cv::imshow("src", image);
    cv::waitKey(0);
}

效果如下:
在这里插入图片描述

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python中使用OpenCV进行不规则多边形ROI区域提取需要以下步骤: 1. 导入所需的库 我们需要导入OpenCV库,并将其命名为cv2。 2. 读取图像 使用cv2.imread()函数读取图像。这里假设图像文件名为"image.jpg"。 3. 创建ROI多边形 定义一个包含不规则多边形顶点的列表作为ROI区域。 4. 创建掩膜 使用cv2.fillPoly()函数创建一个与图像大小相同的空白图像,作为掩膜。然后使用cv2.fillPoly()函数在掩膜上填充多边形。 5. 应用掩膜 使用cv2.bitwise_and()函数将原始图像与掩膜进行按位与操作,即只保留ROI区域。 6. 显示结果 使用cv2.imshow()函数显示提取的ROI区域。 7. 释放窗口 使用cv2.waitKey(0)等待按下任意键后,使用cv2.destroyAllWindows()函数关闭窗口。 以下是一个简单的示例代码: ```python import cv2 import numpy as np # 读取图像 image = cv2.imread('image.jpg') # 创建ROI多边形 roi_vertices = np.array([[(100, 100), (300, 100), (200, 300), (50, 200)]], dtype=np.int32) # 创建掩膜 mask = np.zeros_like(image) cv2.fillPoly(mask, roi_vertices, 255) # 应用掩膜 roi_image = cv2.bitwise_and(image, mask) # 显示结果 cv2.imshow('ROI Image', roi_image) # 释放窗口 cv2.waitKey(0) cv2.destroyAllWindows() ``` 将以上代码保存为Python脚本,运行后会显示提取的ROI区域图像。其中,roi_vertices是一个包含多边形顶点的列表,可以根据需要调整顶点的坐标和个数来定义不规则多边形形状
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值