在这里,我尝试从图像中检测矩形并要保存,但是图像有两个矩形,我需要保存的是每个图像的较大矩形,此处较小的一个将另存为新图像。 如何获得更大的一个。
我尝试过的是
import cv2
import numpy as np
img = cv2.imread('napis.jpg')
h,w = img.shape[:2]
mask = np.zeros((h,w), np.uint8)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
_,thresh = cv2.threshold(灰色,0,255,cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
_, contours, hierarchy = cv2.findContours(thresh,
cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)
cnt = max(contours, key=cv2.contourArea)
cv2.drawContours(mask, [cnt], 0, 255, -1)
res = cv2.bitwise_and(img, img, mask=mask)
mask = np.zeros((h,w), np.uint8)
gray = cv2.cvtColor(res,cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(灰色,0,255,cv2.THRESH_BINARY + cv2.THRESH_OTSU)
_, contours, hierarchy =
cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)
cnt = max(contours, key=cv2.contourArea)
cv2.drawContours(mask, [cnt], 0, 255, -1)
res = cv2.bitwise_and(img, img, mask=mask)
x,y,w,h = cv2.boundingRect(cnt)
cv2.rectangle(res,(x,y),(x+w,y+h),(255,255,255),1)
final_image = res[y:y+h+1, x:x+w+1]
cv2.imwrite('img', final_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
中间的这两行也是代码的一部分,它们是有序的。