使用OpenCV从桌面游戏纸牌图像中提取插图
我在python中编写了一个小脚本,试图提取或裁剪仅代表艺术品的扑克牌部分,然后删除所有其余部分。我一直在尝试各种阈值方法,但无法达到目标。还要注意,我不能简单地手动记录图稿的位置,因为它并不总是处于相同的位置或大小,而是总是呈矩形,而其他所有内容都是文本和边框。 from matplotlib import pyplot as plt import cv2 img = cv2.imread(filename) gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) ret,binary = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU | cv2.THRESH_BINARY) binary = cv2.bitwise_not(binary) kernel = np.ones((15, 15), np.uint8) closing = cv2.morphologyEx(binary, cv2.MORPH_OPEN, kernel) plt.imshow(closing),plt.show() 当前输出是我能得到的最接近的东西。我可能是正确的方法,并尝试进一步进行围绕白色部分绘制矩形的尝试,但是我认为这不是可持续的方法: 最后一点,请参阅下面的卡片,并非所有框架的尺寸或位置都完全相同,但是总会有一件艺术品,其周围只有文字和边框。它不一定要精确切割,但是很明显,艺术是卡片的“区域”,周围是包含文本的其他区域。我的目标是尽我所能捕获艺术品的区域。