基于Python OpenCV 隐马尔可夫模型 物体识别,汽车飞机摩托车。

网上自己收集的图片进行识别的,准确率可以达到60% 其中通过star 和sift 特征检测。

SIFT算法

来源:
尺度不变特征转换(Scale-invariant feature transform或SIFT)算法是一种特征提取的方法。它在尺度空间中寻找极值点,并提取出其位置、尺度、旋转不变量,并以此作为特征点并利用特征点的邻域产生特征向量。SIFT算法对于光线、噪声、和微小视角改变的容忍度相当高,且对于部分遮挡的物体也有较高的识别相率。
SIFT算法适合于识别旋转度达60度的平面形状,或是旋转度达到20度的三维物体。
SIFT算法对模糊的图像和边缘平滑的图像,检测出的特征点过少,对圆更是无能为力

import os
import warnings
import numpy as np
import cv2 as cvimport hmmlearn.hmm as hlwarnings.filterwarnings('ignore',category=DeprecationWarning)np.seterr(all='ignore')def search_objects(directory):directory = os.path.normpath(directory)if not os.path.isdir(directory):raise IOError("the directory '"+ directory + \"' doesn't exist")objects ={}for curdir ,subdirs, files in os.walk(directory):for jpeg in (file for file in files if file.endswith('.jpg')):path = os.path.join(curdir,jpeg)label = path.split(os.path.sep)[-2]if label not in objects:objects[label]=[]objects[label].append(path)return objectstrain_objects=search_objects('data/objects/training')
print(train_objects)train_x, train_y =[],[]
for label, filenames in train_objects.items():descs = np.array([])for filename in filenames:image = cv.imread(filename)gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)#调整大小h,w =gray.shape[:2]f =200/min(h,w)gray = cv.resize(gray,None,fx=f,fy=f)star=cv.xfeatures2d.StarDetector_create()keypoints = star.detect(gray)sift = cv.xfeatures2d.SIFT_create()_,desc = sift.compute(gray,keypoints)if len(descs)==0:descs=descelse:descs=np.append(descs,desc,axis=0)train_x.append(descs)train_y.append(label)
models={}
for descs, label in zip(train_x,train_y):model= hl.GaussianHMM(n_components=4,covariance_type='diag',n_iter=1000)models[label]=model.fit(descs)test_objects=search_objects('data/objects/testing')
print(train_objects)test_x, test_y, test_z=[],[],[]
for label, filenames in test_objects.items():test_z.append([])descs = np.array([])for filename in filenames:image = cv.imread(filename)test_z[-1].append(image)gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)#调整大小h,w =gray.shape[:2]f =200/min(h,w)gray = cv.resize(gray,None,fx=f,fy=f)star=cv.xfeatures2d.StarDetector_create()keypoints = star.detect(gray)sift = cv.xfeatures2d.SIFT_create()_,desc = sift.compute(gray,keypoints)if len(descs)==0:descs=descelse:descs=np.append(descs,desc,axis=0)test_x.append(descs)test_y.append(label)
pred_test_y=[]
for descs in test_x:best_score, best_label =None,Nonefor label, model in models.items():score=model.score(descs)if(best_score is None)or(best_score<score):best_score, best_label = score,labelpred_test_y.append(best_label)
i=0
for label,pred_label,images in zip(test_y,pred_test_y,test_z):for image in images:i+=1cv.imshow("{}-{} {} {}".format(i,label,'=='if label == pred_label else '!=',pred_label),image)cv.waitKey()

Python OpenCV 物体识别相关推荐

  1. Python+OpenCV人脸识别签到考勤系统(新手入门)

    Python+OpenCV人脸识别签到考勤系统(新手入门) 前言 项目效果图 项目需要的环境 编译器 辅助开发QT-designer 项目配置 代码部分 核心代码 项目目录结构 后记 正式版改进 项目 ...

  2. python opencv人脸识别考勤系统的完整源码

    这篇文章主要介绍了python opencv人脸识别考勤系统的完整源码,本文给大家介绍的非常详细,希望对大家的学习或工作具有一定的参考借鉴价值. 代码如下: import wx import wx.g ...

  3. 基于python opencv人脸识别的签到系统

    基于python opencv人脸识别的签到系统 前言 先看下效果 实现的功能 开始准备 页面的构建 功能实现 代码部分 总结 前言 一个基于opencv人脸识别和TensorFlow进行模型训练的人 ...

  4. python识别图像中的物体_OpenCV+Python 指定物体识别

    本文介绍一种基于HoG+Pyramids+Sliding Windows+SVM的物体识别方法 基本流程 (1)确定最小检测物体,对原图img缩放,缩放比例为(滑动窗大小/最小物体大小). (2)缩放 ...

  5. Python+opencv 人脸识别

    python+opencv人脸检测+识别示例及原理解析 一.开发环境搭建 二.图片人脸检测 2.1 文件准备与编程 2.2 注意事项 三.视频人脸识别 3.1文件准备与编程 3.2 注意事项 四.人脸 ...

  6. Python OpenCV 人脸识别

    简单运用Python OpenCV对图片进行人脸识别, 我们先看效果及代码: import cv2img1 = cv2.imread('6.jpeg') gray = cv2.cvtColor(img ...

  7. Python+OpenCV人脸识别技术详解

    总在科幻电影里看到人脸识别,现在我们也可以编程来实现啦.哈哈~~ OpenCV是Intel®开源计算机视觉库.它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法. ...

  8. python 图片中物体识别_使用TensorFlow识别照片中的物体

    1.环境ubuntu14.04.5 安装TensorFlow sudo pip install --upgrade https://storage.googleapis.com/tensorflow/ ...

  9. 基于python opencv人脸识别的员工考勤系统

    WorkAttendanceSystem 一个基于opencv人脸识别的员工考勤系统,作者某双一流A类大学里的一流学生,写于2018/09/,python课设期间. 源代码详细解释请关注微信公众号: ...

最新文章

  1. Chrome 正在测试标签页的预览功能
  2. memcached全面剖析--3.memcached的删除机制和发展方向
  3. android 网络通信框架volly
  4. hashmap put过程_阿里十年技术大咖,教你如何分析1.7中HashMap死循环
  5. 顶级程序员的心得ndash;Coders at Work
  6. 1.7 编程基础之字符串 34 回文子串 python
  7. html5 标签大写还是小写,html5中有没有规定字母标签是用大写还是小写?
  8. 如何优雅地在 Linux 上运行 QQ、微信?
  9. VS Code 轻量级插件推荐
  10. java实现csdn免积分工具_CSDN免积分下载工具
  11. 怎样删除Word文档的强制性回车、断行
  12. 深度学习算法原理——神经网络的基本原理
  13. 股票爆仓有几种情况?股票爆仓具体怎么预防?
  14. oracle 用户名密码找回
  15. 国资分拆上市第一股!上海电气风电集团正式募股上市
  16. python用一维数组存储学号和成绩_用一维数组存储学号和成绩,然后,按成绩排序输出...
  17. md5加密以及可逆的加密解密算法
  18. 网页中,M3U8格式的视频下载
  19. Linux系统中的进程管理
  20. 错误类型:reflection.ReflectionException: Could not set property ‘xxx‘ of ‘class ‘xxx‘ with value ‘xxx‘

热门文章

  1. 35岁程序员:被大厂裁员后,我赚到手的却是这样:
  2. 机甲大师:矩形框选(23/4/23已更新)
  3. 如何从CentOS官网下载我们想要的版本
  4. vue3中进行vuex的分包管理(typescript)
  5. Java--网络编程(利用TCP实现简单的双人聊天)
  6. 有没有人被向量空间、内积空间、欧式空间、希尔伯特空间、巴拿赫空间概念折磨的?
  7. 无理数平方根计算_如何找到数字的平方根并手动计算
  8. 数据结构---基础知识必备
  9. 集成电路光刻机精密运动台控制方法
  10. 2023最新苹果CMS10魔加主题1.1.6去授权版+支持全部版本