文章目录

1. 使用矩形将图像中某个区域置为黑色2. cv::Rect 类介绍

1. 使用矩形将图像中某个区域置为黑色

推荐参考博客:OpenCV实现将任意形状ROI区域置黑(多边形区域置黑)

比较常用的是使用 Rect 矩形实现该功能,代码如下:

#include

int main() {

std::string filePath = "img.png";

cv::Mat img = cv::imread(filePath);

//创建矩形

int x = img.cols / 2; // x 对应列坐标

int y = img.rows / 2; // y 对应行坐标

int width = 150;

int height = 80;

cv::Rect rect(x, y, width, height);

//将矩形贴到img中,并将矩形区域置为黑色

cv::Mat subImg = img(rect);

subImg.setTo(0);

cv::imwrite("img_rect.png", img);

return 0;

}

效果如下:

2. cv::Rect 类介绍

推荐参考博客:OpenCV 中 cv::Rect 矩形类用法

cv::Rect 用于创建矩形,API 参数如下:

int x; // 左上角 x 坐标,对应列坐标

int y; // 左上角 y 坐标,对应列坐标

int width; // 宽

int height; // 高

源码如下:

template class Rect_

{

public:

typedef _Tp value_type;

//! default constructor

Rect_();

Rect_(_Tp _x, _Tp _y, _Tp _width, _Tp _height);

Rect_(const Rect_& r);

Rect_(Rect_&& r) CV_NOEXCEPT;

Rect_(const Point_<_Tp>& org, const Size_<_Tp>& sz);

Rect_(const Point_<_Tp>& pt1, const Point_<_Tp>& pt2);

Rect_& operator = ( const Rect_& r );

Rect_& operator = ( Rect_&& r ) CV_NOEXCEPT;

//! the top-left corner

Point_<_Tp> tl() const;

//! the bottom-right corner

Point_<_Tp> br() const;

//! size (width, height) of the rectangle

Size_<_Tp> size() const;

//! area (width*height) of the rectangle

_Tp area() const;

//! true if empty

bool empty() const;

//! conversion to another data type

template operator Rect_<_Tp2>() const;

//! checks whether the rectangle contains the point

bool contains(const Point_<_Tp>& pt) const;

_Tp x; //!< x coordinate of the top-left corner

_Tp y; //!< y coordinate of the top-left corner

_Tp width; //!< width of the rectangle

_Tp height; //!< height of the rectangle

};

typedef Rect_ Rect2i;

typedef Rect_ Rect2f;

typedef Rect_ Rect2d;

typedef Rect2i Rect;

好文推荐

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: