当前位置: 首页 > news >正文

OpenCV7-copyTo截取ROI

OpenCV7-copyTo截取ROI

    • copyTo截取感兴趣区域


copyTo截取感兴趣区域

有时候,我们只对一幅图像中的部分区域感兴趣,而原图像又十分大,如果带着非感兴趣区域一次处理,就会对程序的内存造成负担,因此我们希望从原始图像中截取部分图像后再进行处理。我们将这个区域称作感兴趣区域(Region of Interest,ROI)。

从原图中截取部分内容,可以用Rect数据结构标记,也可以用Range数据结构标记:

typedef Rect2i Rect;
typedef Rect_<int> Rect2i;template<typename _Tp> class Rect_
{
public:// ..._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
};
img(Rect(p.x, p.y, width, height))
class CV_EXPORTS Range
{
public:Range();Range(int _start, int _end);int size() const;bool empty() const;static Range all();int start, end;
};
// 定义开始和结束范围,可以是行的开始和结束范围,也可以是列的开始和结束范围
img(Range(rows_start, rows_end), Range(cols_start, cols_end));

深拷贝函数copyTo:

void cv::Mat::copyTo( OutputArray m ) const;void cv::Mat::copyTo( OutputArray m, InputArray mask ) const;void cv::copyTo(InputArray src, OutputArray dst, InputArray mask);
#include <opencv2\opencv.hpp>
#include <opencv2/core/utils/logger.hpp> // debug no log
#include <iostream>
using namespace cv;
using namespace std;int main()
{cout << "OpenCV Version: " << CV_VERSION << endl;utils::logging::setLogLevel(utils::logging::LOG_LEVEL_SILENT);Mat img = imread("lena.png");Mat noobcv = imread("noobcv.jpg");if (img.empty() || noobcv.empty()){cout << "请确认图像文件名称是否正确" << endl;return -1;}Mat ROI1, ROI2, ROI2_copy, mask, img2, img_copy, img_copy2;resize(noobcv, mask, Size(200, 200));img2 = img;  //浅拷贝//深拷贝的两种方式img.copyTo(img_copy2);copyTo(img, img_copy, img);//两种在图中截取ROI区域的方式Rect rect(206, 206, 200, 200);  //定义ROI区域ROI1 = img(rect);  //截图ROI2 = img(Range(300, 500), Range(300, 500));  //第二种截图方式img(Range(300, 500), Range(300, 500)).copyTo(ROI2_copy);  //深拷贝mask.copyTo(ROI1);  //在图像中加入部分图像imshow("加入noobcv后图像", img);imshow("ROI对ROI2的影响", ROI2);imshow("深拷贝的ROI2_copy", ROI2_copy);circle(img, Point(300, 300), 20, Scalar(0, 0, 255), -1);  //绘制一个圆形imshow("浅拷贝的img2", img2);imshow("深拷贝的img_copy", img_copy);imshow("深拷贝的img_copy2", img_copy2);imshow("画圆对ROI1的影响", ROI1);waitKey(0);return 0;
}
http://www.lryc.cn/news/191210.html

相关文章:

  • OpenCV10-图像直方图:直方图绘制、直方图归一化、直方图比较、直方图均衡化、直方图规定化、直方图反射投影
  • 线性回归模型进行特征重要性分析
  • hadoop -hive 安装
  • 小迈物联网网关对接串口服务器[Modbus RTU]
  • Java版本+企业电子招投标系统源代码+支持二开+招投标系统+中小型企业采购供应商招投标平台
  • Vue3中reactive, onMounted, ref,toRaw,conmpted 使用方法
  • 有哪些免费的PPT模板网站,推荐这6个PPT模板免费下载网站!
  • 剧院建筑三维可视化综合管控平台提高安全管理效率
  • “过度炒作”的大模型巨亏,Copilot每月收10刀,倒赔20刀
  • 顺序表经典的OJ题
  • video_topic
  • uniapp获取公钥、MD5,‘keytool‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
  • Jetson Orin NX 开发指南(5): 安装 OpenCV 4.6.0 并配置 CUDA 以支持 GPU 加速
  • Spring Security 6.x 系列【67】认证篇之安装 ApacheDS
  • 理解线程池源码 【C++】面试高频考点
  • BP神经网络应用案例
  • 日常学习记录随笔-大数据之日志(hadoop)收集实战
  • 【云计算】相关解决方案介绍
  • 攻防世界题目练习——Crypto密码新手+引导模式(二)(持续更新)
  • LeetCode【1】两数之和
  • 【运维笔记】VMWare 另一个程序已锁定文件的一部分,进程无法访问
  • [Springboot]统一响应和异常处理配置
  • Redis第四五六章 持久化事务主从复制
  • 【强烈推荐】免费的PDF工具,包括PDF拆分/分割、转WORD等功能的免费在线软件工具,救了大命,找了半天什么pdf365、福xipdf、还有哔果pdf全是打着免费名义收费,烦死了
  • SpringMVC源码分析(二)启动过程之RequestMappingHandlerMapping分析
  • KWin、libdrm、DRM从上到下全过程 —— drmModeAddFBxxx(7)
  • 2023 年 Arm A-Profile 架构发展
  • 2023年09月 C/C++(五级)真题解析#中国电子学会#全国青少年软件编程等级考试
  • CentOS系统/root根目录扩容(扩展逻辑卷)
  • 苍穹外卖(三) 员工分页及技术实现细节