如何在python openCV中裁剪框周围的图像?

问题描述 投票:1回答:2

我正在开发一个程序来在OpenCV中围绕一个矩形裁剪图像。我怎么能这样做呢。我还需要能够将多个矩形变成裁剪图像。

我已经尝试过使用本教程:https://www.pyimagesearch.com/2016/02/08/opencv-shape-detection/,但我不知道如何获得形状的边框并围绕它进行裁剪。

我希望获得多个图像的输出,其中包含三角形内容的图片。

先感谢您

python opencv computer-vision
2个回答
0
投票

您可以使用“BoundingRect”功能获取框的坐标。然后使用切片操作,提取所需的图像部分。


0
投票

我刚刚为我的一个项目完成了这项工作,并且完美无缺。

这是我用于在Python OpenCV中实现它的技术:

  • 使用OpenCV的cv2.imshow()函数显示图像。
  • 在图像上选择2个点(x,y)。这可以通过使用OpenCV捕获鼠标单击事件来完成。一种方法是用鼠标点击第一个点所在的位置,同时仍然单击向第二个点移动,一旦光标位于正确的点上,就从鼠标单击开始。这为您选择了2个点。在OpenCV中,您可以使用cv2.EVENT_LBUTTONDOWNcv2.EVENT_LBUTTONUP执行此操作。您可以编写一个函数来使用鼠标捕获事件记录这两个点并将其传递给cv2.setMouseCallback()
  • 一旦你有了2个坐标,就可以使用OpenCV的cv2.rectangle()函数绘制一个矩形,在那里你可以传递图像,2个点和附加参数,比如要绘制的矩形的颜色。
  • 一旦您对这些结果感到满意,您可以使用以下内容裁剪结果:
image = cv2.imread("path_to_image")
cv2.setMouseCallback("image", your_callback_function)
cropped_img = image[points[0][1]:points[1][1], points[0][0]:points[1][0]]
cv2.imshow("Cropped Image", cropped_img)
cv2.waitKey(0)

这是我在其中一张图片上得到的结果之一。

之前(原始图片):before

选择带有围绕它的矩形的感兴趣区域:roi selected

之后(裁剪图像):after

我开始遵循这个关于如何实现它的优秀教程,然后我自己进一步改进它,所以你可以在这里开始:Capturing mouse click events with Python and OpenCV。您还应该阅读附加教程底部的注释,以便轻松改进代码。

© www.soinside.com 2019 - 2024. All rights reserved.