栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Python

基于模板匹配方法的机场飞机起飞-目标检测

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于模板匹配方法的机场飞机起飞-目标检测


文章目录
  • 1. 模板匹配方法的定义
  • 2. 标注软件labelme 标注以及数据解析裁剪模板
    • 2.1 labelme简介
    • 2.2 labelme标注的json文件解析
  • 3. 基于Opencv python的模板构建与算法编写
  • 4. 机场起飞飞机数据集与检测效果
  • 5. 其他可用的一些图片


1. 模板匹配方法的定义
  1. 百度百科定义如下: 模板匹配是一种最原始、最基本的模式识别方法,研究某一特定对象物的图案位于图像的什么地方,进而识别对象物,这就是一个匹配问题。它是图像处理中最基本、最常用的匹配方法。模板匹配具有自身的局限性,主要表现在它只能进行平行移动,若原图像中的匹配目标发生旋转或大小变化,该算法无效。
  2. wikipedia定义如下: Template matching[1] is a technique in digital image processing for finding small parts of an image which match a template image. It can be used in manufacturing as a part of quality control,[2] a way to navigate a mobile robot,[3] or as a way to detect edges in images.[4] The main challenges in the template matching task are: occlusion, detection of non-rigid transformations, illumination and background changes, background clutter and scale changes.[5].
    翻译一下就是:模板匹配是一种数字图像处理技术,这种技术用于寻找图像中的某一小块目标对象,寻找方法是匹配图像区域,找到与模板的相似性最大的区域。它可以应用在制造中用作质量控制的一部分,[2] 一种移动机器人的导航方式,[3] 或作为检测图像边缘的一种方式。 [4] 模板匹配任务的主要挑战是:遮挡、检测非刚性变换、光照和背景变化、背景杂波和尺度变化[5]。
2. 标注软件labelme 标注以及数据解析裁剪模板 2.1 labelme简介

labelme是图形图像注释工具,它是用Python编写的,并将Qt用于其图形界面。它是一个开源的、有界面可以交互的标注软件,但是它又是由命令行启动的,比软件的使用稍微麻烦点。它的功能很多,包括: 对图像进行多边形,矩形,圆形,多段线,线段,点形式的标注(可用于目标检-测,图像分割等任务)。对图像进行进行 flag 形式的标注(可用于图像分类 和 清理 任务)。 视频标注 - 生成 VOC 格式的数据集 - 生成 COCO 格式的数据集等。其界面如下图:

2.2 labelme标注的json文件解析

先尝试获取下框位置的对角线点坐标

import json
path_head = r"C:UsersLIUDesktopcsdn任务模板匹配-机场飞机起飞"
import os
path = os.path.join(path_head, "IMG_20220807_085255.json")
with open(path, "r") as f:
   row_data = json.load(f)
print(row_data["shapes"][0]["points"])

结果

Out[8]: [[2380.0, 1148.0], [2690.0, 1323.0]]

确认区域正确后,进行裁剪

import cv2

img = cv2.imread("test.png")
print(img.shape)
# 飞机区域确认
img1 = img[1148:1323,2380:2690, :]
cv2.imshow("img0", img1)
cv2.waitkey(0)

截取成功,下面保存模板

cv2.imwrite('template_pic1.jpg', img1)
3. 基于Opencv python的模板构建与算法编写

首先读取模板文件

import cv2
img = cv2.imread("test.png")
templ = cv2.imread("template_pic1.jpg")

读取图像的尺寸,并通过opencv 函数 matchTemplate 对图像进行匹配

height, width, c = templ.shape
results = cv2.matchTemplate(img, templ, cv2.TM_SQDIFF_NORMED)
# 获取匹配结果中的最小值、最大值、最小值坐标和最大值坐标
minValue, maxValue, minLoc, maxLoc = cv2.minMaxLoc(results)
resultPoint1 = minLoc
resultPoint2 = (resultPoint1[0] + width, resultPoint1[1] + height)

画出矩形框,并显示与保存

cv2.rectangle(img, resultPoint1, resultPoint2, (0, 0, 255), 2)
cv2.imshow("img", img)
cv2.waitKey()
cv2.destroyAllWindows()
4. 机场起飞飞机数据集与检测效果

下面是识别效果

5. 其他可用的一些图片

给出了一些在机场拍摄的其他图片,读者可以自行尝试,哈哈
链接:https://pan.baidu.com/s/1qdRKQoF8xCHUKPkRLCLumw
提取码:cwp8
–来自百度网盘超级会员V2的分享

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1038561.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号