我如何使用 OpenCV 裁剪图像,就像我之前在 PIL 中所做的那样。
PIL 上的工作示例
im = Image.open('0.png').convert('L') im = im.crop((1, 1, 98, 33)) im.save('_0.png')
但是我如何在 OpenCV 上做到这一点?
这是我尝试过的:
im = cv.imread('0.png', cv.CV_LOAD_IMAGE_GRAYSCALE) (thresh, im_bw) = cv.threshold(im, 128, 255, cv.THRESH_OTSU) im = cv.getRectSubPix(im_bw, (98, 33), (1, 1)) cv.imshow('Img', im) cv.waitKey(0)
但它不起作用。
我认为我错误地使用了getRectSubPix。如果是这种情况,请解释如何正确使用此功能。
getRectSubPix
要使用 OpenCV 裁剪图像,您不需要使用getRectSubPix。相反,您可以使用数组切片直接裁剪图像。以下是操作方法:
Python复制代码import cv2 as cv # Load the image in grayscale im = cv.imread('0.png', cv.IMREAD_GRAYSCALE) # Crop the image using array slicing # im[y1:y2, x1:x2] cropped_im = im[1:33, 1:98] # Save the cropped image cv.imwrite('_0.png', cropped_im) # Display the cropped image cv.imshow('Cropped Image', cropped_im) cv.waitKey(0) cv.destroyAllWindows()
Python 复制代码 im = cv.imread('0.png', cv.IMREAD_GRAYSCALE)
这将以灰度模式加载图像。
Python 复制代码 cropped_im = im[1:33, 1:98]
切片im[y1:y2, x1:x2]选择图像从 (x1, y1) 到 (x2, y2) 的区域。在您的示例中,这对应于 (1, 1) 到 (98, 33)。
im[y1:y2, x1:x2]
Python 复制代码 cv.imwrite('_0.png', cropped_im)
这会将裁剪的图像保存到文件中。
Python复制代码cv.imshow('Cropped Image', cropped_im) cv.waitKey(0) cv.destroyAllWindows()
这些命令在窗口中显示裁剪的图像,直到按下某个键,然后关闭窗口。
在 OpenCV 中使用数组切片来裁剪图像是一种简单而有效的方法。