多目标轮廓匹配

前面我们使用模板匹配,得到的结果都是一个图,那么如果我们图片中有许多我们的目标,那么该如何找出来呢?

如上我们图片中有许多箭头和我们的模板一致,只不过方向不对,那么该如何匹配呢?

图片和模板处理

复制代码
ref=cv2.imread('jiantou.jpg')
cv2.imshow('jiantou', jt)
cv2.waitKey(0)
h,w= ref.shape[:2]


yuan=cv2.imread('yuan.jpg')
yuan1=yuan.copy()
cv2.imshow("yuan", yuan)
cv2.waitKey(0)

阈值选择

复制代码
result = cv2.matchTemplate(ref, yuan1, cv2.TM_CCOEFF_NORMED)
threshold =0.9
loc = np.where(result >= threshold)

我们得到的results是一个包含许多匹配度的,如何我们这里使用一个阈值来选择,之前我们选择的都是那个最大的。现在我们选匹配度较好的几个。(where具体看我主页单文章解释)

这里result是一个矩阵,表示以哪一个点做左上角时的匹配度。如何where可以返回这个点的位置。

画出

复制代码
for pt in zip(*loc[::-1]):
    cv2.rectangle(yuan,pt,(pt[0]+w,pt[1]+h),(0,0,255),1)

现在我们值画出了同方向的,那么我们该如何检测不同方向的呢?

旋转

复制代码
rotated_image1 =np.rot90(ref, k=-1)
rotated_image1 =np.rot90(ref, k=1)

这里k=-1顺时针,k=1为逆时针

这是我们可以把箭头旋转一下,如何再进行模板匹配。(关于zip我另一篇文章专门写)

复制代码
rotated_image1 =np.rot90(ref, k=-1)
result1 = cv2.matchTemplate(rotated_image1, yuan1, cv2.TM_CCOEFF_NORMED)

loc1 = np.where(result1 >= threshold)

for pt in zip(*loc1[::-1]):
    cv2.rectangle(yuan,pt,(pt[0]+w,pt[1]+h),(0,0,255),1)
cv2.imshow('yuan', yuan)
cv2.waitKey(0)

rotated_image2 =np.rot90(ref, k=1)
cv2.imshow("yuan1", rotated_image2)
cv2.waitKey(0)
result2 = cv2.matchTemplate(rotated_image2, yuan1, cv2.TM_CCOEFF_NORMED)

loc2 = np.where(result2 >= threshold)

for pt in zip(*loc2[::-1]):
    cv2.rectangle(yuan,pt,(pt[0]+w,pt[1]+h),(0,0,255),1)


cv2.imshow("yuan", yuan)
cv2.waitKey(0)
相关推荐
武子康13 分钟前
150毫秒和2400毫秒:同一 Agent 任务的两种延迟
人工智能·后端·agent
暖心hebbie设计学习20 分钟前
GitHub 热榜周报(10.19)|5 个把 AI 装回本地的开源项目:多 agent 控制台、本地语音、节点式生成(含技术看点)
人工智能·github
猪脚踏浪29 分钟前
open webui 在docker容器里跑,并且是在内网断绝互联网的环境下。生成ppt
人工智能
海边捡石子39 分钟前
FreeSWITCH 入门:把电话系统接入语音客服机器人
人工智能·后端
桃西西呀1 小时前
我把网关限流配置成每秒 100 请求,大促一来照样被打挂,还把别人也拖垮了
人工智能·llm·ai编程
武子康1 小时前
Agent 偏好记忆怎样确认写入:范围、版本与撤销的一个最小例
人工智能·后端·agent
王中阳Go1 小时前
质保期第 90 天我翻了一遍日志目录:交付后真正会坏的 3 处
人工智能·后端·agent
桃西西呀2 小时前
我把整本接口文档塞进 system prompt,前 3 轮答得准,第 8 轮开始胡说,账单还翻了 4 倍
人工智能·llm·ai编程
天天代码码天天2 小时前
给孩子打印一本“数字连点画”!连出小鱼、火箭,画完还能涂色
人工智能
SL_staff3 小时前
规则联动:给工厂装上‘自动化神经反射弧’——JVS·物联网平台规则引擎实战教程
java·人工智能·物联网