OpenCV7-copyTo截取ROI

2023-10-13 04:01
文章标签 截取 opencv7 roi copyto

本文主要是介绍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;
}

这篇关于OpenCV7-copyTo截取ROI的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/200631

相关文章

【语句】如何将列表拼接成字符串并截取20个字符后面的

base_info = "".join(tree.xpath('/html/head/script[4]/text()'))[20:] 以下是对这个语句的详细讲解: tree.xpath('/html/head/script[4]/text()')部分: tree:通常是一个已经构建好的 HTML 文档树对象,它是通过相关的 HTML 解析库(比如 lxml)对 HTML 文档进行解

怎么截取app崩溃日志

1.配置adb工具说明                   2.配置完成的检测     3.App崩溃的时候,截取错误日志。

openCV ROI

#include "opencv2/core.hpp"#include "opencv2/imgproc.hpp"#include "opencv2/highgui.hpp"#include "opencv2/videoio.hpp"#include <iostream>using namespace std;using namespace cv;//仅最大化HSV图像S和 V部分vo

shell 之 脚本变量和字符串截取

脚本变量: $$   Shell本身的PID(ProcessID) $!    Shell最后运行的后台Process的PID $?    最后运行的命令的结束代码(返回值) $-    使用Set命令设定的Flag一览 $*    所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 $@  所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$

linux字符截取

用一个例子: 示例字符为 url = www.google.com 1, echo ${url%.*}      %表示移除.*所匹配最右边的字符 输出:www.google 2,  echo ${url%%.*}    %%从右边开始一直移除.*所匹配最大化的字符(属贪婪匹配)  输出:www  3,  echo ${url#*.}     #移除*.

截取pdf中的部分内容,又保证内容不失真,实现方式

文章目录 0.为什么需要截取pdf1.访问网站2.上传你需要截取的pdf文件3.选取区域下载 0.为什么需要截取pdf 如果直接截图工具截图的话,里面的文字和图片内容会出现失真的情况,但是我们希望pdf空白部分的内容不要,这个时候就需要截取pdf工具 1.访问网站 进入网站截取pdf文件的内容 2.上传你需要截取的pdf文件 3.选取区域 下载

R6010 OpenCV copyTo函数使用时所遇到错误

环境:vs2013 opencv2.4 目的:将ROI存储在一个临时变量中,简化图像的大小,方便后续的处理。 所遇到错误:使用src.copyTo(dist(rect))时候(rect表示兴趣区域),程序总是崩溃,【rect大小 保证在图像区域内部】 解决方案:img(rect).copyTo(f_face),虽然还没有弄懂原理,但是遇到同样错误的朋友可以参考。 注:该拷贝方式是浅拷贝,引

正則截取url參數

截取v參數的值 1.s參數后帶& 2.s參數結尾 var matchReg =/([&|?]s)=[^&]*/gconsole.log('?test=test&s=we&type=long'.match(matchReg))console.log('?s=we&type=long'.match(matchReg))

pyhton一: 元祖截取

本内容是对于http://www.runoob.com/python/python-tuples.html教程中的元祖截取的补充 a=(1,2,3,4,5,6); b=(:3); c=(3:); 那么a[3],4这个元素到底在b中还是在c中,还是都在,还是都不在? b=(1,2,3) c=(4,5,6) 可以运行试下,答案是只出现在c中,所以默认切的那把刀在所给元素序号(比如本例是3

java按照字节截取字符

java按照字节截取字符 import java.util.ArrayList;public class 按照字节截取字符串 {public static void main(String[] args) {String str = "12d4fg";String subStrings = subStrings(str, 2, 4);System.out.println(subStrings);