OpenCv (C++) 使用矩形 Rect 覆盖图像中某个区域

文章目录

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

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

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

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

cpp 复制代码
#include <opencv2\opencv.hpp>

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 参数如下:

bash 复制代码
int x;    // 左上角 x 坐标,对应列坐标
int y;    // 左上角 y 坐标,对应列坐标
int width;     // 宽
int height;    // 高

源码如下:

cpp 复制代码
template<typename _Tp> 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<typename _Tp2> 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_<int> Rect2i;
typedef Rect_<float> Rect2f;
typedef Rect_<double> Rect2d;
typedef Rect2i Rect;
相关推荐
ysa05103025 分钟前
c++常用自带函数用法与注意
c++·笔记·算法
特立独行的猫a25 分钟前
AI 智能硬件:下一个风口的底层逻辑与产品机会
人工智能·ai·智能硬件·趋势·风口·机会
tedcloud12326 分钟前
book-to-skill 怎么部署?把技术书和项目文档变成 AI Agent 可复用知识
linux·运维·服务器·人工智能·开源
世优科技虚拟人30 分钟前
AI数字人企业升级全息舱交互,数字人全息仓让展厅展馆更智慧
人工智能·ai数字人·全息舱数字人·全息数字人
webor200632 分钟前
<七>从3秒记忆到过目不忘——语言模型的三代进化
人工智能·语言模型·自然语言处理
TechEdu20260633 分钟前
[人工智能]SciPy在工程计算中的作用与实践
人工智能·ai·scipy
七牛云行业应用35 分钟前
DeepSeek Harness vs Codex vs Claude Code:三款 AI 编程 Harness 深度对比
人工智能·agent·ai编程
无凭39 分钟前
拆解 DeerFlow Memory:Agent 的长期记忆到底怎么做?
人工智能·设计模式
格尔曼Noah1 小时前
文本转音频技术选型指南:2026年主流TTS与端到端语音大模型深度对比
人工智能·语音识别
hans汉斯1 小时前
采煤工作面隐患目标检测中YOLO11与Faster R-CNN的对比研究
人工智能·目标检测·计算机视觉·cnn·信息与通信·信号处理