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

叁[3],感兴趣区域ROI

1,简介


ROI,感兴趣区域(region of interest),截取图像

2,获取方法


方法1:使用Rect

cv::Mat src=cv::imread("*.bmp");//读取原图
cv::Mat matROI = src(cv::Rect(100,200,50,100));//截取原图,矩形区域


方法2:使用Range

cv::Mat src=cv::imread("*.bmp");//读取原图
cv::Mat matROI = src(cv::Range(100,150),cv::Range(200,300));//截取原图,矩形区域

3,图像叠加


注:Mat类型中copyTo函数和clone函数和赋值操作符操作。


3.1.1,代码1(copyTo,类型+尺寸相同)

stringstream ss;
cv::Mat src = cv::imread("BK5.jpg");//3通道彩图
cv::Mat* srcPointer = &src;
cv::Mat srcROI = src(cv::Rect(src.rows / 2 - 100, src.cols / 2 - 100, 100, 100));
ss << "src.isContinuous=" << src.isContinuous() <<endl;
ss << "src.type=" << src.type() << endl;
ss << "srcROI - Memery Address:" << &srcROI << endl;
cv::Mat srvROI_End = cv::Mat(srcROI.rows, srcROI.cols, srcROI.type(), cv::Scalar(0));
srvROI_End.copyTo(srcROI);
ss << "srcROI - Memery Address:" << &srcROI << endl;
cv::imshow("srcROI", srcROI);
cv::imshow("src-Result", src);
qDebug() << ss.str().c_str();


指针版

stringstream ss;
cv::Mat src = cv::imread("BK5.jpg");//3通道彩图
cv::Mat srcROI = src(cv::Rect(src.rows / 2 - 100, src.cols / 2 - 100, 100, 100));
cv::Mat* srcROIPointer = &srcROI;
ss << "src.isContinuous=" << src.isContinuous() <<endl;
ss << "src.type=" << src.type() << endl;
ss << "srcROI - Memery Address:" << &srcROI << endl;
cv::Mat srcROI_End = cv::Mat(srcROIPointer->rows, srcROIPointer->cols, srcROIPointer->type(), cv::Scalar(0));
srcROI_End.copyTo(*srcROIPointer);
ss << "srcROI - Memery Address:" << &srcROI << endl;
cv::imshow("srcROI", *srcROIPointer);
cv::imshow("src-Result", src);
qDebug() << ss.str().c_str();

3.1.2,打印结果

src.isContinuous=1
src.type=16
srcROI - Memery Address:000000EF810FF980
srcROI - Memery Address:000000EF810FF980


3.1.3,图片显示结果


原图的ROI区域,图片被处理。

3.1.4,结论


类型/尺寸相同,copyTo时,ROI图元修改会生效到原图中。


3.2.1,代码2(copyTo,类型不同,尺寸相同)

stringstream ss;
cv::Mat src = cv::imread("BK5.jpg");//3通道彩图
cv::Mat* srcPointer = &src;
cv::Mat srcROI = src(cv::Rect(src.rows / 2 - 100, src.cols / 2 - 100, 100, 100));
ss << "src.isContinuous=" << src.isContinuous() <<endl;
ss << "src.type=" << src.type() << endl;
ss << "srcROI - Memery Address:" << &srcROI << endl;
cv::Mat srvROI_End = cv::Mat(srcROI.rows, srcROI.cols, CV_8UC1, cv::Scalar(0));
srvROI_End.copyTo(srcROI);
ss << "srcROI - Memery Address:" << &srcROI << endl;
cv::imshow("srcROI", srcROI);
cv::imshow("src-Result", src);
qDebug() << ss.str().c_str();


3.2.2,打印结果


src.isContinuous=1
src.type=16
srcROI - Memery Address:000000EF810FF980
srcROI - Memery Address:000000EF810FF980


3.2.3,图片显示结果


原图的ROI区域,无处理效果。

3.2.4,结论


类型不同,尺寸相同,copyTo时,ROI图元不会生效到原图中。

3.3.1,代码2(copyTo,类型不同,尺寸相同)

stringstream ss;
cv::Mat src = cv::imread("BK5.jpg");//3通道彩图
cv::Mat* srcPointer = &src;
cv::Mat srcROI = src(cv::Rect(src.rows / 2 - 100, src.cols / 2 - 100, 100, 100));
ss << "src.isContinuous=" << src.isContinuous() <<endl;
ss << "src.type=" << src.type() << endl;
ss << "srcROI - Memery Address:" << &srcROI << endl;
cv::Mat srvROI_End = cv::Mat(srcROI.rows+100, srcROI.cols+100, srcROI.type(), cv::Scalar(0));
srvROI_End.copyTo(srcROI);
ss << "srcROI - Memery Address:" << &srcROI << endl;
cv::imshow("srcROI", srcROI);
cv::imshow("src-Result", src);
qDebug() << ss.str().c_str();


3.3.2,打印结果


src.isContinuous=1
src.type=16
srcROI - Memery Address:000000FC6E10F8E0
srcROI - Memery Address:000000FC6E10F8E0


3.3.3,图片显示结果


原图的ROI区域,无处理效果。

3.3.4,结论


类型相同,尺寸不同,copyTo时,ROI图元不会生效到原图中。

3.4.1,代码2(clone,类型+尺寸相同)

stringstream ss;
cv::Mat src = cv::imread("BK5.jpg");//3通道彩图
cv::Mat* srcPointer = &src;
cv::Mat srcROI = src(cv::Rect(src.rows / 2 - 100, src.cols / 2 - 100, 100, 100));
ss << "src.isContinuous=" << src.isContinuous() <<endl;
ss << "src.type=" << src.type() << endl;
ss << "srcROI - Memery Address:" << &srcROI << endl;
cv::Mat srcROI_End = cv::Mat(srcROI.rows, srcROI.cols, srcROI.type(), cv::Scalar(0));
srcROI = srcROI_End.clone();
ss << "srcROI - Memery Address:" << &srcROI << endl;
cv::imshow("srcROI", srcROI);
cv::imshow("src-Result", src);
qDebug() << ss.str().c_str();


3.4.2,打印结果


src.isContinuous=1
src.type=16
srcROI - Memery Address:00000006268FF560
srcROI - Memery Address:00000006268FF560


3.4.3,图片显示结果


原图的ROI区域,无处理效果。

3.4.4,结论


clone时,ROI图元不会生效到原图中。

4,制作掩膜


4.1.1,代码1(copyTo,mask)


绿色掩膜

    stringstream ss;cv::Mat src = cv::imread("BK5.jpg");//3通道彩图cv::Mat srcROI = src(cv::Rect(src.rows / 2 - 100, src.cols / 2 - 100, 100, 100));cv::Mat* srcROIPointer = &srcROI;ss << "src.isContinuous=" << src.isContinuous() << endl;ss << "src.type=" << src.type() << endl;ss << "srcROI - Memery Address:" << &srcROI << endl;cv::Mat srcROI_End = cv::Mat(srcROIPointer->rows, srcROIPointer->cols, srcROIPointer->type(), cv::Scalar(0, 255, 0));cv::Mat srcROI_Mask = cv::Mat(srcROIPointer->rows, srcROIPointer->cols, srcROIPointer->type(), cv::Scalar(0, 255, 0));srcROI_End.copyTo(*srcROIPointer, srcROI_Mask);ss << "srcROI - Memery Address:" << &srcROI << endl;cv::imshow("srcROI", *srcROIPointer);cv::imshow("src-Result", src);qDebug() << ss.str().c_str();


 

相关文章:

叁[3],感兴趣区域ROI

1&#xff0c;简介 ROI&#xff0c;感兴趣区域&#xff08;region of interest)&#xff0c;截取图像 2&#xff0c;获取方法 方法1&#xff1a;使用Rect cv::Mat srccv::imread("*.bmp");//读取原图 cv::Mat matROI src(cv::Rect(100,200,50,100));//截取原图&am…...

文件数据交换格式说明

对于文件的说明 二进制文件和文本文件的对比 对比项二进制文件文本文件定义二进制文件直接由二进制数字0和1组成&#xff0c;不存在统一的字符编码。文本文件是基于字符编码的文件&#xff0c;一般采用定长编码方式&#xff0c;如ASCII编码、UNICODE编码。优势1. 存储利用率高…...

2023NOIP A层联测24 总结

T1 给出树的一度点和三度点的数量&#xff0c;构造树的形态&#xff0c;节点数不超过 2000 2000 2000。我考虑先构造出三度点&#xff0c;发现这一度点至少是三度点2&#xff0c;打完后测样例不对&#xff0c;发现加一度点时要特判是否为三度点&#xff0c;花 5min 打完&#…...

vue3 项目如何配置测试环境打包

vue3 项目如何配置测试环境打包 根目录下创建.env.staging # 测试环境 NODE_ENV staging VUE_APP_MODE staging VUE_APP_TITLE 系统名称# 测试环境API接口地址 VUE_APP_API_URL 接口地址package.json文件中 scripts配置中添加以下代码 "scripts": {"serve&q…...

【CSS】样式的计算过程

标签的 CSS 样式 现在有这么一段 HTML 代码&#xff1a; <div class"test"><h1>Hello World</h1> </div>目前我们没有给 h1 设置任何样式&#xff0c;可以看到 h1 自带了一些样式&#xff0c;eg&#xff1a;font-size、font-weight、margi…...

【ArcGIS微课1000例】0076:KMZ转换KML的方法

文章目录 ArcGIS转kmzkmz转kmlArcGIS转kmz ArcGIS可以很方便的将dwg,shp、等矢量数据转为kmz。 拓展阅读: 【ArcGIS微课1000例】0075:将AutoCAD(Dwg、Dxf)文件转换为shp、KML(kml、kmz)文件...

Python基础入门例程46-NP46 菜品的价格(条件语句)

最近的博文&#xff1a; Python基础入门例程45-NP45 禁止重复注册&#xff08;条件语句&#xff09;-CSDN博客 Python基础入门例程44-NP44 判断列表是否为空&#xff08;条件语句&#xff09;-CSDN博客 Python基础入门例程43-NP43 判断布尔值&#xff08;条件语句&#xff0…...

Docker数据管理、网络与Cgroup资源限制

目录 一、Docker的数据管理 1、数据卷 2、数据卷容器 3、端口映射 4、容器互联 二、Docker网络 2.1Docker网络实现原理 2.2Docker 的网络模式 3.3网络模式详解&#xff1a; host模式 container模式 none模式 bridge模式 自定义网络 创建自定义网络 三、Cgroup资源…...

ubuntu strings | grep使用说明

例子1 查找/bin/ls路径中中&#xff0c;包含libc的字符串&#xff0c;不区分大小写&#xff1a; strings /bin/ls | grep -i libc strings /bin/ls | grep -i libcstrings表示查找字符/bin/ls表示路径| grep表示抓取 -i 表示不区分大小写libc表示要查询的内容 例子2 strings …...

<Vue>使用依赖注入的方式共享数据

什么是vue依赖注入&#xff1f; Vue是一个用于构建用户界面的渐进式框架。 它提供了一种简单而灵活的方式来管理组件之间的数据流&#xff0c;即依赖注入&#xff08;Dependency Injection&#xff0c;DI&#xff09;。 依赖注入是一种设计模式&#xff0c;它允许一个组件从另一…...

从0到1:腾讯云服务器使用教程

腾讯云服务器入门教程包括云服务器CPU内存带宽配置选择&#xff0c;选择云服务器CVM或轻量应用服务器&#xff0c;云服务器创建后重置密码、远程连接、搭建程序环境等&#xff0c;腾讯云服务器网txyfwq.com分享从0到1腾讯云服务器入门教程&#xff1a; 目录 腾讯云服务器入门…...

VScode + opencv + c++ + win配置教程

准备&#xff1a; 1、下载opencv 2、下载MinGw 3、 3、下载CMake 下载完解压放到一个文件夹里面&#xff0c;便于环境管理&#xff0c;文件夹我重命名了&#xff0c;解压出来文件名不一样正常 环境变量配置 C:\Users\wuxulong\cpp_env\MinGw\mingw64\bin C:\Users\wuxulon…...

机器学习---SVM目标函数求解,SMO算法

1. 线性可分支持向量机 1.1 定义输入数据 假设给定⼀个特征空间上的训练集为&#xff1a; 其中&#xff0c;(x , y )称为样本点。 x 为第i个实例&#xff08;样本&#xff09;。 y 为x 的标记&#xff1a; 当y 1时&#xff0c;x 为正例&#xff1b;当y −1时&#xff0c;x…...

044_第三代软件开发-保存PDF

第三代软件开发-保存PDF 文章目录 第三代软件开发-保存PDF项目介绍保存PDF头文件源文件使用 关键字&#xff1a; Qt、 Qml、 pdf、 painter、 打印 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&#xff08;Qt Meta-Object Language&#xff…...

2023红帽论坛:构建开放AI生态,助力企业数字革新之路

随着人工智能技术的飞速发展&#xff0c;各行各业正面临着一场前所未有的数字化转型浪潮。尤其是AIGC&#xff08;人工智能生成内容&#xff09;技术自2022年底以来的蓬勃兴起&#xff0c;不仅重塑了用户体验&#xff0c;也为企业运营带来了深刻的变革。 在这样的大背景下&…...

阿里云国际站和华为云国际站之间该如何选择?

阿里云国际站和华为云国际站都是知名的云计算服务提供商&#xff0c;它们各自具有一些独特的优势和劣势。以下是它们之间的一些对比&#xff0c;九河云根据不同的使用场景提供的建议&#xff1a; 阿里云国际站&#xff1a; 优势&#xff1a; 全球覆盖&#xff1a;阿里云国际…...

JavaScript设计模式之责任链模式

适用场景&#xff1a;一个完整的流程&#xff0c;中间分成多个环节&#xff0c;各个环节之间存在一定的顺序关系&#xff0c;同时中间的环节的个数不一定&#xff0c;可能添加环节&#xff0c;也可能减少环节&#xff0c;只要保证顺序关系就可以。 如下图&#xff1a; ES5写法…...

云安全—kubelet攻击面

0x00 前言 虽然说总结的是kubelet的攻击面&#xff0c;但是在总结攻击面之前还是需要去了解kubelet的基本原理&#xff0c;虽然说我们浅尝即止&#xff0c;但是还是要以能给别人讲出来为基本原则。 其他文章: 云安全—K8s APi Server 6443 攻击面云安全—K8S API Server 未授…...

leetcode经典面试150题---5.多数元素

目录 题目描述 前置知识 代码 方法一 排序法 思路 实现 复杂度 方法二 哈希表 思路 实现 题目描述 给定一个大小为 n 的数组 nums &#xff0c;返回其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。 你可以假设数组是非空的&#xff0c;并且给…...

Vue ElementUI el-tooltip 全局样式修改

el-tooltip 要点 此处是全局配置&#xff1b;如果想设置指定的 tooltip 可设置属性 popper-class&#xff0c;为 tooltip 的 popper 添加类名&#xff1b;代码 6 - 8 行&#xff0c;隐藏小三角&#xff1b; .el-tooltip__popper {border-radius: 4px !important;color: #9E9…...

蒙特卡洛方法与科学计算十大经典算法解析

1. 蒙特卡洛方法&#xff1a;从赌场到科学计算的跨界革命 1946年&#xff0c;三位天才科学家在洛斯阿拉莫斯实验室的咖啡时间里&#xff0c;可能不会想到他们正在创造一种将彻底改变科学计算的方法。蒙特卡洛方法的名字来源于摩纳哥著名的赌城&#xff0c;这暗示了其核心思想—…...

HJ163 时津风的资源收集

题目题解(15)讨论(7)排行 中等 通过率&#xff1a;44.75% 时间限制&#xff1a;1秒 空间限制&#xff1a;256M 知识点广度优先搜索(BFS) 校招时部分企业笔试将禁止编程题跳出页面&#xff0c;为提前适应&#xff0c;练习时请使用在线自测&#xff0c;而非本地IDE。 描述 …...

02_Elasticsearch知识体系之Mapping映射设计与索引建模实战

02_Elasticsearch知识体系之Mapping映射设计与索引建模实战 Elasticsearch知识体系 基础概念层数据存储层【本文】查询语言层搜索能力层数据处理层集群架构层开发集成层AI增强层行业应用层 关键词&#xff1a; Elasticsearch、Mapping、动态映射、显式映射、字段类型、分片、副…...

COMSOL水力压裂岩石多裂隙损伤耦合模型及含离散裂隙Matlab建模文件

comsol水力压裂岩石多裂隙损伤耦合模型&#xff0c;含离散裂隙matlab建模文件地下三千米的页岩层正在经历一场暴力美学——高压水柱像手术刀般精准切开岩石&#xff0c;形成错综复杂的裂缝网络。这个看似野蛮的过程背后&#xff0c;隐藏着流-固-损伤三场耦合的精密舞蹈。今天我…...

字符串题目

字符串输入char s[10];fgets(s,10,stdin);int lenstrlen(s);if(s[len-1]\n){s[len-1]0;}len--;拼数#include <stdio.h> #include <string.h>#define MAX 100005char res[MAX][20]; int n;int cmp(const void *a,const void *b) {char *pa(char*)a;char *pb(char*)b…...

5分钟搞懂阻抗匹配:从L型网络到Smith圆图实战指南(附ADS仿真步骤)

5分钟搞懂阻抗匹配&#xff1a;从L型网络到Smith圆图实战指南&#xff08;附ADS仿真步骤&#xff09; 引言&#xff1a;为什么阻抗匹配如此重要&#xff1f; 想象一下&#xff0c;你正在调试一块射频电路板&#xff0c;信号强度总是达不到预期。用频谱仪观察波形时&#xff0c;…...

如何用SillyTavern在5分钟内创建你的第一个AI虚拟伙伴?

如何用SillyTavern在5分钟内创建你的第一个AI虚拟伙伴&#xff1f; 【免费下载链接】SillyTavern LLM Frontend for Power Users. 项目地址: https://gitcode.com/GitHub_Trending/si/SillyTavern 你是否曾幻想过拥有一个专属的AI聊天伙伴&#xff1f;一个能理解你情绪、…...

无损图像转PDF新方案:img2pdf工具全攻略

无损图像转PDF新方案&#xff1a;img2pdf工具全攻略 【免费下载链接】img2pdf mirror of https://gitlab.mister-muffin.de/josch/img2pdf for Travis and appveyor CI 项目地址: https://gitcode.com/gh_mirrors/im/img2pdf 在数字文档处理领域&#xff0c;图像转PDF的…...

2025届学术党必备的十大降AI率工具推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 对于知网AI检测系统来讲&#xff0c;要降低生成文本的可识别性&#xff0c;得从词汇层面施展…...

如何用Excel实现3D打印GCode的完全控制:FullControl GCode Designer终极指南

如何用Excel实现3D打印GCode的完全控制&#xff1a;FullControl GCode Designer终极指南 【免费下载链接】FullControl-GCode-Designer Software for designing GCODE for 3D printing 项目地址: https://gitcode.com/gh_mirrors/fu/FullControl-GCode-Designer 想要真正…...