python视觉识别定位_基于Python+OpenCV的人脸特征定位程序

python视觉识别定位_基于Python+OpenCV的⼈脸特征定位程
本篇⽤⼀些动漫⼈脸图⽚,向⼤家展⽰基本的opencv库的操作,以及⽤⼀些公共⼈脸数据进⾏简单的⼈脸识别技术学习。
1.OpenCV简介
OpenCV是⼀个开源的跨平台计算机视觉库,提供的有python接⼝,并实现了图像处理和计算机视觉⽅⾯的很多通⽤算法。
2.需要安装的包
本篇先安装Opencv和numpy,pandas等数据分析包即可,如果感觉⿇烦的话,可以直接安装Anaconda科学包(数据分析,挖掘,机器学习库合集),安装与不同编译器配置环境过程这⾥就不讲解了。
安装完后,我们先⽤下⾯的代码输出⼀个图⽚:import cv2
img = cv2.imread("1.jpg", 1)
cv2.imshow("1", img)
cv2.waitKey()
结果如下:
发现我们的环境已经成功安装了。
相关推荐:《Python教程》
3.初步⼈脸识别
由于本篇⽂章是第⼀篇,因此这⾥先简单的展⽰⼀下opencv的⼀些机器视觉的基础⽅法,下⾯就进⾏介绍。
(1)导⼊⼈脸图⽚,这⾥⽤⼀张动漫图
代码和上⾯的类似,更改图⽚即可:import cv2
img = cv2.imread("firstPer.jpg", 1)
cv2.imshow("1", img)
cv2.waitKey()
cv2.destroyAllWindows()
这⾥我们把这段代码封装成⼀个函数:def viewImage(image, name_of_window):
'''
image:图像对象
name_of_window:图像窗⼝名称
'''
cv2.namedWindow(name_of_window, cv2.WINDOW_NORMAL)
cv2.imshow(name_of_window, image)
cv2.waitKey()
cv2.destroyAllWindows()
(2)⼀些基础图像处理的⽅法
cropped:cropped = image[y:y+h, x:x+w],就是以(y, x)为起点,裁剪⼤⼩为(h, w)的图像,以左上⾓为起点,竖直向下的⽅向为y 轴,横向为x轴。
resized:dim = (width, height)
resized = size(img, dim, interpolation = cv2.INTER_AREA)
调整图像的⼤⼩。
⽤下⾯的代码分别进⾏这两种图像的处理:img = cv2.imread("firstPer.jpg", 1)
# 裁剪图⽚⼤⼩,裁剪100范围的图⽚
cropped = img[0:100, 0:100]
机器视觉定位viewImage(cropped,"firstPer")
img = cv2.imread("firstPer.jpg", 1)
scale_percent = 30    #调整30%的⼤⼩
width = int(img.shape[1] * scale_percent / 100)
height = int(img.shape[0] * scale_percent / 100)
dim = (width, height)
resized = size(img, dim, interpolation = cv2.INTER_AREA)
viewImage(resized,"firstPer")
还有⼀⼀些⽤的操作⽅法,就是旋转,调节亮度,变模糊/平滑,绘制边框,绘制线段等,在这⾥并不是进⾏图像处理,因此就先不先向⼤家讲解。哈哈。
(3)图像灰度处理
在进⾏⼈脸识别时,好多地⽅都先进⾏图像变灰度的操作,这⾥也给⼤家介绍⼀下:
这⾥有⼀个阈值函数,gray_image,将所有图像变为⽐127更暗直⾄0或者增加亮度到255,将图像的彩⾊边框的内容略过。
灰度处理代码:gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
viewImage(gray_image,"gray Image")
结果:
亮度彩⾊阈值处理代码:one,threshold_image = cv2.threshold(img, 127, 255, 0)
viewImage(threshold_image,"firstPer")
结果:
主要是有后⾯的三个参数控制,⼤家有兴趣可以⾃⾏学习。
(4)⼈脸识别初讲
img = cv2.imread("firstPer.jpg")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(
gray,          # 灰度图
scaleFactor= 1.1,  # 缩放⽐例
minNeighbors= 2,    # 识别出⼀个⼈脸之前在当前物体周围需要检测的物体数⽬
minSize=(50, 50)    #窗⼝的⼤⼩
)
firstPer = format(len(faces)) + "faces detected!"
print(firstPer)# Draw a rectangle around the faces
for (x, y, w, h) in faces:
viewImage(img,firstPer)
detectMultiScale函数是⼀个检测物体的通⽤函数。当我们把它⽤于⼈脸检测时,它就会从图像中检测出⼈脸。但是我们却发现,根本没有检测出我们可爱的⼩樱的脸,这是为什么呢?不急,我们先⽤其他图⽚检测:

本文发布于:2024-09-24 17:19:58,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/357896.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:图像   视觉   检测   处理   机器   计算机
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议