image - 如何使用matlab使用对象的边界框裁剪图像中检测到的对象

标签 image matlab image-processing crop matlab-cvst

嗨。我是图像处理的新手。我想将检测到的图像区域提取为新图像。我使用 caseCadeObjectDetector 方法检测脸部的眼睛区域。现在我想知道如何提取检测到的图像区域。这是我所做的。

i=imread('test.jpg');
Eyedetect =  vision.CascadeObjectDetector('RightEye','MergeThreshold',24);
bbox=step(Eyedetect,i);

我使用 insertObjectAnnotation 方法绘制边界框。它绘制了眼睛上方的线。但我想将那只眼睛裁剪为新图像。 bbox 是一个 1x4 矩阵,包含 x, y, height, width。 有谁能够帮助我?我正在使用 MATLAB r2013a。

最佳答案

要使用 bbox[x, y, height, width] 格式提取子图像,您可以使用:

subImage = i(bbox(1):bbox(1)+bbox(3), bbox(2):bbox(2)+bbox(4), :);

P.S.如果bbox格式为[x, y, width, height],你可以直接调用imcrop :

subImage = imcrop(i, bbox);

关于image - 如何使用matlab使用对象的边界框裁剪图像中检测到的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21935691/

相关文章:

java - 如何从 InputStream 创建图像,调整大小并保存?

matlab - 如何在 MATLAB 数据游标中以更高精度显示数字?

matlab - Tupper 的自引用公式 - 在 MATLAB 中?

python - 为什么 plt.imshow 比 plt.pcolor 快得多?

python - 将 .py 文件和图像转换为独立可执行文件

python - (None,None,1) 输入在 keras 中如何工作?

javascript - 为什么我的 javascript 无法使用此代码上传图像并将其放入 Canvas 元素中?

matlab - OpenCV 错误 : [mpeg4 @ 0x7ffe33cb3e60] too many thread_release_buffer calls

python - 使用opencv查找两个多边形之间的最大和最小距离

java - ImageIO.write() 方法和 png