[英]How to auto detect trim and crop part of image using OpenCV python?
[英]What is the easy way to crop a part of image using Python OpenCV
我有以下代码来裁剪图像的一部分:
import cv2
def on_mouse(event, x, y, flags, param):
if event == cv2.EVENT_LBUTTONDOWN:
print("X: {} | Y: {}".format(x, y))
win_name = "Image"
cv2.namedWindow(win_name)
cv2.setMouseCallback(win_name, on_mouse)
img = cv2.imread('park.jpg')
cropImg = img[179:470, 511:645]
cv2.imshow(win_name, img)
cv2.imshow("Crop", cropImg)
cv2.waitKey(0)
cv2.destroyAllWindows()
在上面的代码中,您可以看到我已经定义了一个 function 调用on_mouse
,它基本上为我们提供了鼠标在图像上单击的任何位置的坐标 (x, y)。 这有助于获取我们要裁剪区域的x1, y1
和x2, y2
坐标。 在下图中,我试图裁剪giraffe
的区域。 所以我点击了长颈鹿附近的左上角,坐标为X: 470 | Y: 179
X: 470 | Y: 179
然后我点击了长颈鹿的右下角,它给了我坐标X: 645 | Y: 511
X: 645 | Y: 511
。 在上面的代码中使用它们时,它给出以下 output
下面是原图
任何人都可以帮助我了解如何裁剪它以及这些x1, y1 and x2, y2
表示什么? 谢谢
(x1, y1) 是起点的坐标,而 (x2, y2) 是图像中的终点。 在矩形中,您可以将它们视为左上角是 (x1, y1) 而 (x2, y2) 是右下角 - 或者就像宽度和高度一样。
但是在裁剪时它们有一点反向格式
cropImage = image[ y1: y2 , x1: x2]
# or
cropImage = image[ Y: H, X: W ]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.