3
แยกงานศิลปะจากอิมเมจการ์ดเกมบนโต๊ะด้วย OpenCV
ฉันเขียนสคริปต์ขนาดเล็กในงูหลามที่ฉันพยายามแยกหรือครอบตัดส่วนของไพ่ที่แสดงถึงงานศิลปะเท่านั้นโดยลบส่วนที่เหลือทั้งหมด ฉันได้ลองใช้วิธีการต่างๆในการนวดข้าว แต่ไม่สามารถไปถึงที่นั่นได้ นอกจากนี้โปรดทราบว่าฉันไม่สามารถบันทึกตำแหน่งของงานศิลปะแบบแมนนวลได้เพราะมันไม่ได้อยู่ในตำแหน่งหรือขนาดเดียวกันเสมอไป แต่ในรูปสี่เหลี่ยมผืนผ้าที่ทุกสิ่งอื่นเป็นเพียงข้อความและเส้นขอบ 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() ผลผลิตปัจจุบันเป็นสิ่งที่ใกล้เคียงที่สุดที่ฉันจะได้รับ ฉันอาจจะถูกวิธีและลองโต้เถียงเพิ่มเติมเพื่อวาดรูปสี่เหลี่ยมผืนผ้ารอบส่วนสีขาว แต่ฉันไม่คิดว่ามันเป็นวิธีที่ยั่งยืน: โปรดทราบว่าดูการ์ดด้านล่างไม่ใช่เฟรมทั้งหมดที่มีขนาดหรือตำแหน่งเท่ากัน แต่มีงานศิลปะที่มีข้อความและเส้นขอบอยู่รอบ ๆ เท่านั้น ไม่จำเป็นต้องถูกตัดอย่างเด็ดขาด แต่ชัดเจนว่าศิลปะคือ …