首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在OpenCV中裁剪图像的一半

在OpenCV中裁剪图像的一半
EN

Stack Overflow用户
提问于 2016-07-30 02:24:08
回答 3查看 12.2K关注 0票数 4

如何裁剪图像而只保留图像的下半部分?

我试过了:

代码语言:javascript
运行
复制
Mat cropped frame = frame(Rect(frame.cols/2, 0, frame.cols, frame.rows/2));

但它给了我一个错误。

我也试过了:

代码语言:javascript
运行
复制
double min, max;
Point min_loc, max_loc;
minMaxLoc(frame, &min, &max, &min_loc, &max_loc);
int x = min_loc.x + (max_loc.x - min_loc.x) / 2;
Mat croppedframe = = frame(Rect(x, min_loc.y, frame.size().width, frame.size().height / 2));

但它并不能很好地工作。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-07-30 03:11:28

Rect函数参数为Rect(x, y, width, height)。在OpenCV中,数据的组织方式是第一个像素位于左上角,因此您的rect应为:

代码语言:javascript
运行
复制
Mat croppedFrame = frame(Rect(0, frame.rows/2, frame.cols, frame.rows/2));
票数 6
EN

Stack Overflow用户

发布于 2016-07-30 04:01:59

这里有一个适用于任何初学者的python版本。

代码语言:javascript
运行
复制
def crop_bottom_half(image):
    cropped_img = image[image.shape[0]/2:image.shape[0]]
    return cropped_img
票数 11
EN

Stack Overflow用户

发布于 2019-07-10 16:09:42

要快速复制粘贴,请执行以下操作:

代码语言:javascript
运行
复制
image = YOURIMAGEHERE #note: image needs to be in the opencv format
height, width, channels = image.shape
croppedImage = image[int(height/2):height, 0:width] #this line crops

说明

在OpenCV中,要选择图像的一部分,只需选择图像的开始像素和结束像素即可。意思是:

image[yMin:yMax, xMin, xMax]

用人类的话来说: yMin = top | yMax = left | xMin =left| xMax = right |

“:”表示从:左边的值到右边的值

为了保持下半部分,我们简单地做yMax/2:yMax,这意味着从图像的一半到底部。X是最大宽度的0。

请记住,OpenCV从图像的左上角开始,增加Y值意味着向下。

要获得图像的宽度和高度,您可以执行image.shape,它提供3个值:

yMax,xMax, amount of channels,其中您可能不会使用通道。要仅获取高度和宽度,您还可以执行以下操作:

高度,宽度= image.shape0:2

这也称为获取感兴趣区域或ROI

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38665277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档