gpt4 book ai didi

python - Cv2在其他图片中查找图片

转载 作者:行者123 更新时间:2023-12-02 16:52:10 33 4
gpt4 key购买 nike

一张大图片(300 * 300像素)分为3个区域。大图片的一部分是2个小图片(AAA.png和BBB.png)。

3-areas.png

3-areas.png

AAA.png

AAA.png

BBB.png

BBB.png

我想知道他们位于哪个区域,即在大图片中找到小图片。
理想的输出为:“AAA.png在左侧”; “BBB.png在右边”。

我正在运行以下代码:

import cv2, os
import numpy as np

big_pic = cv2.imread("c:\\TEM\\3-areas.png")

left_area = big_pic[0:300, 0:100] # [y,y1 : x,x1]
mid_area = big_pic[0:300, 100:200]
right_area = big_pic[0:300, 200:300]

AAA = cv2.imread('C:\\TEM\\AAA.png')
AAA_res = cv2.matchTemplate(left_area,AAA,cv2.TM_CCOEFF_NORMED)

threshold = 0.99
AAA_loc = np.where(AAA_res >= threshold)
a_x_cor = list(AAA_loc[0])
a_y_cor = list(AAA_loc[1])
print a_x_cor, a_y_cor

BBB = cv2.imread('C:\\TEM\\BBB.png')
BBB_res = cv2.matchTemplate(right_area,BBB,cv2.TM_CCOEFF_NORMED)

BBB_loc = np.where(BBB_res >= threshold)
b_x_cor = list(BBB_loc[0])
b_y_cor = list(BBB_loc[1])

print b_x_cor, b_y_cor

我想通过循环来简化它。我试过的
big_pic = cv2.imread("c:\\TEM\\3-areas.png")

list_of_areas = {
left : [0,300, 0,100],
mid : [0,300, 100,200],
right : [0,300, 200,300]}

small_picture_folder = "C:\\TEM\\"
small_pictures = []

root, dirs, files = os.walk(small_picture_folder).next()

for path, subdirs, files in os.walk(root):
for f in files:
if ""AAA"" in f or ""BBB"" in f:
small_pictures.append(small_picture_folder + f)

for key, value in list_of_areas.iteritems():
for y,y1,x,x1 in value:
target_area = big_pic[y:y1, x:x1]

“对于y,y1,x,x1的值:”行给出错误:“TypeError:'int'对象不可迭代。”

最好的方法是什么?谢谢。

最佳答案

在您的外循环中,迭代字典条目

for key, value in list_of_areas.iteritems():
value是四个整数的列表,例如 [0, 300, 0, 100]。因此,当您现在尝试使用

for (...) in value:

您将获得四个迭代,并且在每个迭代中,一次将仅“返回”一个列表项。但是现在,您尝试通过以下方式同时将此“返回的”单个整数值分配给四个变量

for y, y1, x, x1 in value:

因此错误!因此,从我的 Angular 来看,最简单的解决方案是跳过内部循环,并将 value中的所有项目直接分配给您的四个变量,如下所示:

for key, value in list_of_areas.iteritems():
y, y1, x, x1 = value
target_area = big_pic[y:y1, x:x1]

希望有帮助!

关于python - Cv2在其他图片中查找图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59209282/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com