当前位置: 首页 > 知识库问答 >
问题:

利用OpenCV和C++从图像中提取子图像

安奇
2023-03-14
Mat src = imread("Images/00011_00025.ppm");
Rect crop(1, 1, 64, 67);
Mat rez = src(crop);

你知道这个错误的原因是什么吗?

共有1个答案

蓝逸仙
2023-03-14
Rect crop(1, 1, 64, 67);

矩形的左上角位于位置(1,1),其大小设置为64x67。

Mat rez = src(crop);

当使用此矩形裁剪图像时,您将超出边界,因为矩形的偏移量为一个像素,但大小与要裁剪的图像相同。您可以手动计算宽度和高度的偏移量,也可以使用CV::Range(这是我首选的裁剪解决方案)。

使用范围,可以定义行和列跨度来执行裁剪:

cv::Range rows(1, 64);
cv::Range cols(1, 67);
Mat rez = src(rows, cols);
 类似资料:
  • 我试图使用OpenCV和Java实现一些图像处理,从图像中提取一张卡片。 以下是我的做法: 转换为BGR图像 转换为灰度图像 应用高斯模糊 应用Canny边缘检测 扩张 查找等高线 查找最大轮廓 使用approxpolydp查找最大轮廓的角 沿最大轮廓获取裁剪图像的自上而下视图 代码如下: 寻求帮助在获得适当的角顶点...提前感谢…

  • 我有一系列图像,我想计算中间图像(以去除运动元素)。直观地说,硬编码一个循环以遍历所有像素将有一个总的运行时间,以及相当大的内存使用量。有没有办法在OpenCV中轻松实现这一点?(我对平均值不感兴趣,我需要做一个中位数)。我是为Android写这篇文章的(使用OpenCV4Android),所以显然计算能力是有限的。

  • 让我们以whalesay图片为例<代码>docker history显示以下内容: 我想提取显示为的层。有这样做的工具/方法吗?

  • 假设我在Neo4j中有一个由5个节点组成的集合,这样集合中的每个节点都至少连接到集合中的另一个节点。我想从Neo4J中提取节点集合及其交互所形成的子图。目前,我使用的是一个非常原始的方法,它涉及到试图从系统中的每个节点找到与其他每个节点的匹配:

  • 包的类提供读取和写入图像的方法。使用OpenCV,可以读取图像并将其存储在矩阵中(如果需要,可在矩阵上执行转换)。之后可以将处理后的矩阵写入文件。 类的方法用于使用OpenCV读取图像。 以下是此方法的语法。 它接受一个参数(文件名),一个字符串类型的变量,表示要读取的文件的路径。 下面给出了使用OpenCV库读取Java图像的步骤。 第1步:加载OpenCV本机库 使用方法加载OpenCV本机库

  • 本文向大家介绍openCV提取图像中的矩形区域,包括了openCV提取图像中的矩形区域的使用技巧和注意事项,需要的朋友参考一下 改编自详解利用OpenCV提取图像中的矩形区域(PPT屏幕等) 原文是c++版,我改成了python版,供大家参考学习。 主要思想:边缘检测—》轮廓检测—》找出最大的面积的轮廓—》找出顶点—》投影变换 运行效果 用到的图片 以上就是本文的全部内容,希望对大家的学习有所帮助