在 OpenCV 中裁剪一半图像
Crop half of an image in OpenCV
如何裁剪图像并只保留图像的下半部分?
我试过了:
Mat cropped frame = frame(Rect(frame.cols/2, 0, frame.cols, frame.rows/2));
但是它给我一个错误。
我也试过:
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));
但效果不佳。
Rect
函数参数是 Rect(x, y, width, height)
。在 OpenCV 中,数据的组织方式是第一个像素位于左上角,因此您的 rect
应该是:
Mat croppedFrame = frame(Rect(0, frame.rows/2, frame.cols, frame.rows/2));
这里有适合所有初学者的 python 版本。
def crop_bottom_half(image):
cropped_img = image[image.shape[0]/2:image.shape[0]]
return cropped_img
快速复制粘贴:
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中select图像的一部分,你可以简单地select图像的开始和结束像素。意思是:
image[yMin:yMax, xMin:xMax]
用人类的话来说:yMin = top | yMax = 底部 | xMin = 左 | xMax = 右 |
" : "表示从:左边的值到右边的值
为了保留下半部分,我们只需执行 [int(yMax/2):yMax, xMin:xMax]
,这意味着从图像的一半到底部。 x 是 0 到最大宽度。
请记住,OpenCV 从图像的左上角开始,增加 Y 值意味着向下。
要获取图像的宽度和高度,您可以执行 image.shape,它给出 3 个值:
yMax,xMax, amount of channels
其中您可能不会使用的渠道。要仅获取高度和宽度,您还可以执行以下操作:
高度,宽度=image.shape[0:2]
这也称为获取感兴趣区域或 ROI
如何裁剪图像并只保留图像的下半部分?
我试过了:
Mat cropped frame = frame(Rect(frame.cols/2, 0, frame.cols, frame.rows/2));
但是它给我一个错误。
我也试过:
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));
但效果不佳。
Rect
函数参数是 Rect(x, y, width, height)
。在 OpenCV 中,数据的组织方式是第一个像素位于左上角,因此您的 rect
应该是:
Mat croppedFrame = frame(Rect(0, frame.rows/2, frame.cols, frame.rows/2));
这里有适合所有初学者的 python 版本。
def crop_bottom_half(image):
cropped_img = image[image.shape[0]/2:image.shape[0]]
return cropped_img
快速复制粘贴:
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中select图像的一部分,你可以简单地select图像的开始和结束像素。意思是:
image[yMin:yMax, xMin:xMax]
用人类的话来说:yMin = top | yMax = 底部 | xMin = 左 | xMax = 右 |
" : "表示从:左边的值到右边的值
为了保留下半部分,我们只需执行 [int(yMax/2):yMax, xMin:xMax]
,这意味着从图像的一半到底部。 x 是 0 到最大宽度。
请记住,OpenCV 从图像的左上角开始,增加 Y 值意味着向下。
要获取图像的宽度和高度,您可以执行 image.shape,它给出 3 个值:
yMax,xMax, amount of channels
其中您可能不会使用的渠道。要仅获取高度和宽度,您还可以执行以下操作:
高度,宽度=image.shape[0:2]
这也称为获取感兴趣区域或 ROI