基于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 cv
import hmmlearn.hmm as hl
warnings.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 <