def focusToContent(img):
img_ = 255*(img < 128).astype(np.uint8)
coords = cv.findNonZero(img_) # Find all non-zero points (text)
x, y, w, h = cv.boundingRect(coords) # Find minimum spanning bounding box
rect = img[y:y+h, x:x+w] # Crop the image - note we do this on the original image
rect_originalSized = cv.resize(rect,(img.shape))
return rect_originalSized
img应为opencv图像(具有正确数据类型的numpy数组) 测试代码
#testing
img = cv.imread(r"D:/ENTC/SEM_4/EN2550 - Fundamentals of Image Processing and Machine Vision/~images/int-rec/test/1650009171.5083215.png",0)
assert img is not None
focused = focusToContent(img)
fig,ax = plt.subplots(1,2)
ax[0].imshow(img,cmap="gray")
ax[1].imshow(focused,cmap="gray")
plt.show()
1条答案
按热度按时间zsohkypk1#
我希望你问的是“自动裁剪掉图像的白色”。这里我们假设一个二进制图像:像素具有高值和低值。
img应为opencv图像(具有正确数据类型的numpy数组)
测试代码