首页 > 其他分享 >OpenCV(cv::rectangle())

OpenCV(cv::rectangle())

时间:2024-10-31 13:25:05浏览次数:3  
标签:OpenCV pt1 图像 LINE 矩形 cv rectangle

目录



cv::rectangle() 是 OpenCV 提供的一个函数,用于在图像上绘制矩形。可以通过此函数指定矩形的位置、大小、颜色、边框粗细等,适合在图像处理中标记感兴趣区域(ROI)或绘制边框。以下是对 cv::rectangle() 的详细解析:



1. 函数定义

void cv::rectangle(
    cv::InputOutputArray img,
    cv::Point pt1,
    cv::Point pt2,
    const cv::Scalar &color,
    int thickness = 1,
    int lineType = cv::LINE_8,
    int shift = 0
);

参数说明:

  1. img:指定绘制矩形的图像,通常是通过 cv::Mat 对象表示。该图像会被直接修改,因此必须是可写的(非常量)。

  2. pt1:矩形左上角的坐标,以 (x, y) 表示。该点定义了矩形的一个顶点。

  3. pt2:矩形右下角的坐标,以 (x, y) 表示。与 pt1 一起定义了矩形的大小和位置。

  4. color:矩形的颜色,由 BGR 或 BGRA 值构成(如:Scalar(255, 0, 0) 表示蓝色)。Scalar 类可以接受 1 到 4 个参数,对应图像的通道数(3 或 4)。

  5. thickness(可选):矩形边框的厚度,单位是像素。默认值1,若设置为负数(通常为 -1),则绘制实心矩形,填充矩形内部。

  6. lineType(可选)

    • 默认值:cv::LINE_8
    • 线条类型,可选项有:
      • cv::LINE_8(默认值):8 连通线条(较常用)
      • cv::LINE_4:4 连通线条
      • cv::LINE_AA:抗锯齿线条,适用于需要平滑边缘的情况
  7. shift(可选):坐标的小数位精度,默认值 0 表示无精度位,若为 1pt1pt2 的坐标均乘以 2^1 = 2 以提高精度,依次类推。



2. 示例代码

以下代码在图像上绘制一个红色矩形:

#include <opencv2/opencv.hpp>

int main() {
    // 创建一个黑色图像
    cv::Mat img = cv::Mat::zeros(400, 400, CV_8UC3);

    // 定义矩形左上角和右下角坐标
    cv::Point pt1(50, 50);
    cv::Point pt2(300, 300);

    // 绘制红色矩形,边框厚度为 2 像素
    cv::rectangle(img, pt1, pt2, cv::Scalar(0, 0, 255), 2, cv::LINE_8);

    // 显示图像
    cv::imshow("Rectangle", img);
    cv::waitKey(0);
    return 0;
}


3. 应用场景

  1. 标记 ROI:可以使用矩形标记感兴趣区域(Region of Interest),比如目标物体的边框、检测区域等。
  2. 结合检测模型:在图像上标出检测到的物体边框,比如人脸检测、物体检测等。
  3. 填充矩形:设置 thickness = -1 时会填充矩形,可以用来遮挡图像的某些区域,或为注释区域添加背景。


4. 注意事项

  • 如果 pt1pt2 超出图像边界,OpenCV 会自动裁剪矩形以适应图像大小,但在程序设计时尽量确保坐标在图像范围内。
  • lineType 设置为 cv::LINE_AA,矩形边缘会更平滑,但对性能略有影响,因此一般用于需要高质量边缘的图像处理。

通过 cv::rectangle(),可以灵活地在图像上标注、绘制边框,应用广泛且性能优异。



标签:OpenCV,pt1,图像,LINE,矩形,cv,rectangle
From: https://www.cnblogs.com/keye/p/18517518

相关文章

  • OpenCV(cv::dnn::NMSBoxes())
    目录1.函数定义2.函数工作流程3.示例代码4.应用场景5.注意事项cv::dnn::NMSBoxes()是OpenCVDNN模块中用于非极大值抑制(Non-MaximumSuppression,NMS)的函数,常用于目标检测任务中,以去除重叠度较高的框,保留检测得分最高的框。cv::dnn::NMSBoxes()主要在检测过程中对多......
  • NVR设备ONVIF接入平台EasyCVR国标GB28181视频平台智能视频质量检测:自动化技术的革命性
    视频质量诊断技术是一种基于图像和视频处理的前沿技术,旨在评估和分析视频的质量,发现潜在问题并提供改进建议。该技术通过智能化的图像分析算法,对前端设备传回的视频流进行实时监测和诊断,确保视频监控系统能够持续提供高质量的监控画面。一、EasyCVR平台支持视频质量诊断NVR设备O......
  • 萤石私有化设备视频平台EasyCVR视频融合平台如何构建农业综合监控监管系统?
    现代农业的迅速发展中,集成监控管理系统已成为提高农业生产效率和优化管理的关键工具。萤石私有化设备视频平台EasyCVR,作为一个具有高度可扩展性、灵活的视频处理能力和便捷的部署方式的视频监控解决方案,为农业监控系统的建设提供了坚实的技术支持。该平台支持包括GB28181国家标......
  • OpenCV(cv::Mat::colRange())
    目录1.函数定义2.功能3.代码示例3.1选择第1列到第3列(列索引从0开始)3.2使用Range参数4.注意事项5.常见用途cv::Mat::colRange()是OpenCV中的一个函数,用于在矩阵中选择指定的列范围。这对于图像或数据矩阵处理时需要选择特定列的情况非常有用。1.函数定义colRan......
  • (ICCV2023)多尺度空间特征提取模块,有效涨点,即插即用
    题目:SAFMN:Spatially-AdaptiveFeatureModulationforEfficientImageSuper-Resolution期刊:CVPR(ConferenceonComputerVisionandPatternRecognition)GitHub地址:https://github.com/sunny2109/SAFMN年份:2023作者单位:TheChineseUniversityofHongKong(CUHK)......
  • OpenCV | 基于最细长轮廓自动校正旋转图片
    点击查看代码importcv2importnumpyasnpdefpreprocess_image(image):#转换为灰度图像gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)#高斯模糊去噪blurred=cv2.GaussianBlur(gray,(33,33),0)#自适应阈值二值化binary=cv2.a......
  • 使用 OpenCV 进行视频帧操作
    视频帧的基本操作是视频处理的基础,构建了图像分析和计算机视觉等高级应用的技术前提。通过OpenCV库,视频处理从视频加载、帧读取到窗口显示与帧保存的流程逐步展开,实现了对视频信息的逐帧获取和操作。在此基础上,引入了灰度转换、模糊处理和边缘检测等技术,提升了视频帧的处理......
  • OpenCV与AI深度学习 | 实战 | YOLO11自定义数据集训练实现缺陷检测 (标注+训练+预测
    本文来源公众号“OpenCV与AI深度学习”,仅用于学术分享,侵权删,干货满满。原文链接:实战|YOLO11自定义数据集训练实现缺陷检测(标注+训练+预测保姆级教程)导 读   本文将手把手教你用YOLO11训练自己的数据集并实现缺陷检测。安装环境YOLO11的介绍和使用这里不再赘......
  • 如何使用腾讯云CVM搭建出海电商平台
    引言:2024年已经有太多的企业开始了迈出国门,在出海贸易当中进行试水。但由于政策、文化等诸多方面的不同,更多的企业在做低成本的尝试,以避免一次性投入过大带来的损失。因此,越来越多的企业和个人,开始学习电商平台的相关知识,了解电商平台的相关业务,一些开发者们也开始通过了解开源......
  • 编译opencv 提示opencv_sfm links to target absl::log but not found解决办法
    先说解决办法,安装ceres库版本需要<2ErrorwhileconfiguringCMaketobuildwithcontribmodules在香橙派5上编译opencv+opencv_contrib我是先源码编译的ceres库(2.2版本的,查看include\version.h)在opencv\build目录下生成配置时,提示configdone,generatefailed!并报......