如果您知道这本书的确切坐标,您可以使用以下代码选择感兴趣的区域
我假设您已经将原始图像作为 img 作为 numpy 数组。
result_image = img[y:y+h, x:x+w, ...]
其中 x、y、w、h 是图像中书籍的边界框坐标。
如果你想自动找到黑色背景上的书
您可以将图像转换为二进制并找到最大的非黑色部分。然后获取该区域的坐标并进行裁剪。
img
# convert to binary
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
_, binary = cv2.threshold(gray, 10, 255, cv2.THRESH_BINARY)
# find the biggest non-black area
contours, _ = cv2.findContours(
binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE
)
c = max(contours, key=cv2.contourArea)
# get coordinates of the biggest area
x, y, w, h = cv2.boundingRect(c)
# crop it
result_image = img[y:y+h, x:x+w, ...]
result_image