如何解决如何将透明 png 蒙版与另一张图片匹配?
我是图像识别方面的新手,所以请保持温和:-)。 目前,我希望将 list of png 文件与屏幕截图相匹配: [右键单击任何图像 + 在新标签中打开以查看更大的版本]
从元数据中,我已经可以归结出可能的匹配项(仅供参考:文件以“pokemon_icon_585*”开头)。
我一直试图弄清楚的是如何“看到”它是哪一个。 (即:具有最高可能性的)。 我已经做过的事情:
- 图像的“中心”是 x / 2,y * (2/3)。因此,这也使检测更多相关点变得更加容易。我一直在试图弄清楚如何根据与该中心的距离使用权重来检查颜色。运气不好——可能是因为我的知识有限。
- 通过 OpenCV (ORB_create) + 匹配 (FBMatcher) 进行特征检测(找到的匹配没有正确匹配——这意味着例如耳朵与脚匹配,但顶部匹配本身都位于动物身上,所以这可能是可用的):
所以在上面的列表中,我一直在寻找有关 3 的信息。我可以搜索什么?我应该使用哪些库/方法?第 4 步呢?你会怎么做? 从屏幕截图和要匹配的“模板”中可以看出,它们与人类非常相似。但他们有点转过身来。至于匹配:截屏1&2应该匹配模板7,截图3&4应该匹配模板5。
当然,如果我的方法是错误的,请告诉我您将如何使用一些关键字来处理它!那就太好了!
我目前的做法是创建一个位掩码来移除背景:
# Read it
img1 = cv2.imread('kkgbgwwpwu04ji.png')
# Find the edges
edges = cv2.Canny(img1,100,200)
# Remove the horizontal line at the bottom:
horizontal_kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(25,1))
detected_lines = cv2.morphologyEx(edges.copy(),cv2.MORPH_OPEN,horizontal_kernel,iterations=2)
cnts,_ = cv2.findContours(detected_lines,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
img2 = edges.copy()
for c in cnts:
cv2.drawContours(img2,[c],-1,(0,0),2)
final = np.vstack([edges[:x1],img2[x1:x2],edges[x2:]])
# Get a bitmask
kernel = np.ones((5,5),np.uint8)
mask = cv2.morphologyEx(edges.copy(),cv2.MORPH_CLOSE,kernel,iterations=10)
但是如何去除顶部的圆弧呢? 我知道我可以直接剪掉图片,但有些口袋妖怪非常大,因此也会被剪掉。
这是最终的:
这是面具:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。