在OpenCV中裁剪一半图像

shj*_*lee 2 opencv roi crop mat

如何裁剪图像并仅保留其下半部分?

我试过了:

Mat cropped frame = frame(Rect(frame.cols/2, 0, frame.cols, frame.rows/2));
Run Code Online (Sandbox Code Playgroud)

但它给了我一个错误.

我也尝试过:

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));
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

Oli*_*ier 6

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

Mat croppedFrame = frame(Rect(0, frame.rows/2, frame.cols, frame.rows/2));
Run Code Online (Sandbox Code Playgroud)


小智 5

这是一个适合所有初学者的python版本.

def crop_bottom_half(image):
    cropped_img = image[image.shape[0]/2:image.shape[0]]
    return cropped_img
Run Code Online (Sandbox Code Playgroud)

  • `img[int(img.shape[0]/2):int(img.shape[0])]` 在高度和/或宽度为奇数的情况下。 (2认同)