gpt4 book ai didi

python - 在找到的边界python opencv中提取内容?

转载 作者:行者123 更新时间:2023-12-02 17:37:44 26 4
gpt4 key购买 nike

我想提取图像的一部分并将其另存为边界内的单独图像。我已提取并绘制了边界,如下所示:

cnts, hierarchy= cv2.findContours(gray.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
for contour in cnts:
print(cv2.boundingRect(contour))
cv2.drawContours(img,cnts,-1,(125,125,0),3 )
cv2.imshow('contours',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

如何获得边界内的图像作为单独的图像?这是我的图片:

enter image description here

最佳答案

您应该找到边界矩形,然后将其保存到新图像

像这样:

r = cv2.boundingRect(contour)
crop_img = im[r[1]:r[1]+r[3], r[0]:r[0]+r[2]]
cv2.imwrite('roi.png', crop_img)

因为numpy slice 期望y:y + h,所以x:x + h

如果需要定向的边界框,请使用minAreaRect

编辑:

您说只想要米粒。由于任何图像都是矩形的,因此您始终会有一些背景。您可以做的是将背景涂成黑色:
  • 创建一个具有原始图像大小的黑色图像(带有许多米粒的图像)
  • drawContours(),厚度= CV_FILLED(或任何负数),颜色为白色。它应该是黑色的图像,白色只有一个米粒。我们称其为“掩码”
  • 然后执行原始图像的bitwise_and和“mask”
  • 然后做上面
  • 解释的裁剪(boundingRect)

    如果您想吃所有的米饭,就应该在里面做所有的事情。

    关于python - 在找到的边界python opencv中提取内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48648250/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com