【发布时间】:2020-07-07 00:34:03
【问题描述】:
我正在学习 opencv 并研究一些测试用例进行研究,但问题是我得到的图像相似度包括图像的黑色区域。我的目的是检查图像相似性并将每个字母放在同一个文件夹中(例如,所有带有“A”字母的图像都应该在一个文件夹中,所有带有“B”字母的图像应该在同一个文件夹中)目的我发现图像相似性。问题是我的图像中的黑色区域。
这些是我拥有的图像
现在我想找到这些图像之间的相似性并相应地放置它们
我的代码中的问题是所有图像的相似度都超过 0.90,这对于所有图像来说都是不可能的
这是我的代码
def get_similarity(img_1, img_2):
pix1 = img_1.convert('L').load()
pix2 = img_2.convert('L').load()
match_count = 0
pix1_white_count = 0
pix2_white_count = 0
for y in range(0, img_1.height):
for x in range(0, img_1.width):
if pix1[x, y] == pix2[x, y] and pix2[x, y] == 255:
match_count += 1
if pix2[x, y] == 255:
pix2_white_count += 1
if pix1[x, y] == 255:
pix1_white_count += 1
# no of pixels have more than 10% variation
if float(pix1_white_count - pix2_white_count) / float(pix1_white_count + pix2_white_count) >= 1.5:
return 0
return float(match_count)/float(pix2_white_count)
只需要在图像的白色区域找到相似度,或者你可以说在文本之间
我正在研究的算法计算两个图像上的白色像素,然后找到相应的变化
但它给出的索引超出了这一行的范围
if pix1[x, y] == pix2[x, y] and pix2[x, y] == 255:
【问题讨论】:
标签: python opencv image-processing python-imaging-library