Python-OpenCV 处理图像(六):对象识别
2016-01-04 10:23
861 查看
0x00. 特征识别
这里主要用到两个函数:GoodFeaturesToTrack和
extractSURF
GoodFeaturesToTrack: 在图像中寻找具有大特征值的角点。
SURF算法: 是一个稳健的图像识别和描述算法。
总之这俩个我目前也不清楚能用来干嘛,以后用到了在更新吧。
import cv2.cv as cv import math im = cv.LoadImage("img/church.png", cv.CV_LOAD_IMAGE_GRAYSCALE) im2 = cv.CloneImage(im) # Goodfeatureto track algorithm eigImage = cv.CreateMat(im.height, im.width, cv.IPL_DEPTH_32F) tempImage = cv.CloneMat(eigImage) cornerCount = 500 quality = 0.01 minDistance = 10 corners = cv.GoodFeaturesToTrack(im, eigImage, tempImage, cornerCount, quality, minDistance) radius = 3 thickness = 2 for (x,y) in corners: cv.Circle(im, (int(x),int(y)), radius, (255,255,255), thickness) cv.ShowImage("GoodfeaturesToTrack", im) #SURF algorithm hessthresh = 1500 # 400 500 dsize = 0 # 1 layers = 1 # 3 10 keypoints, descriptors = cv.ExtractSURF(im2, None, cv.CreateMemStorage(), (dsize, hessthresh, 3, layers)) for ((x, y), laplacian, size, dir, hessian) in keypoints: cv.Circle(im2, (int(x),int(y)), cv.Round(size/2), (255,255,255), 1) x2 = x+((size/2)*math.cos(dir)) y2 = y+((size/2)*math.sin(dir)) cv.Line(im2, (int(x),int(y)), (int(x2),int(y2)), (255,255,255), 1) cv.ShowImage("SURF ", im2) cv.WaitKey(0)
0x01. 人脸识别
可以使用 OpenCV 训练好的级联分类器来识别图像中的人脸,当然还有很多其他的分类器:例如表情识别,鼻子等,具体可在这里下载:OpenCV分类器
具体使用代码:
#import library - MUST use cv2 if using opencv_traincascade import cv2 # rectangle color and stroke color = (0,0,255) # reverse of RGB (B,G,R) - weird strokeWeight = 1 # thickness of outline # set window name windowName = "Object Detection" # load an image to search for faces img = cv2.imread("mao.jpg") # load detection file (various files for different views and uses) cascade = cv2.CascadeClassifier("haarcascade_frontalface_alt.xml") # preprocessing, as suggested by: http://www.bytefish.de/wiki/opencv/object_detection # img_copy = cv2.resize(img, (img.shape[1]/2, img.shape[0]/2)) # gray = cv2.cvtColor(img_copy, cv2.COLOR_BGR2GRAY) # gray = cv2.equalizeHist(gray) # detect objects, return as list rects = cascade.detectMultiScale(img) # display until escape key is hit while True: # get a list of rectangles for x,y, width,height in rects: cv2.rectangle(img, (x,y), (x+width, y+height), color, strokeWeight) # display! cv2.imshow(windowName, img) # escape key (ASCII 27) closes window if cv2.waitKey(20) == 27: break # if esc key is hit, quit! exit()
效果:
相关文章推荐
- Python-OpenCV 处理视频(五): 运动方向判断
- Python-OpenCV 处理视频(四): 运动检测
- urllib 详解
- Python--基础程序设计
- Python-OpenCV 处理视频(三): 标记运动轨迹
- Numpy:常用函数
- Python--初识
- Python-OpenCV 处理视频(二): 视频处理
- Python-OpenCV 处理视频(一): 输入输出
- Ubuntu下安装Pillow
- python 的encode和decode
- python性能优化
- python实现网站的模拟登录
- python --字符串格式化
- python 对ACCESS数据库操作封装模块
- python实现网站的模拟登录
- Python实现控制台进度条功能
- Python字符串特性及常用字符串方法的简单笔记
- 如何系统地自学一门Python 语言
- python-71:get_text()