我想提取图像的一部分并将其另存为边界内的单独图像。我已提取并绘制了边界,如下所示:
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()
如何获得边界内的图像作为单独的图像?这是我的图片:
最佳答案
您应该找到边界矩形,然后将其保存到新图像
像这样:
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
编辑:
您说只想要米粒。由于任何图像都是矩形的,因此您始终会有一些背景。您可以做的是将背景涂成黑色:
如果您想吃所有的米饭,就应该在里面做所有的事情。
关于python - 在找到的边界python opencv中提取内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48648250/