赞
踩
如果dilb和face_recognition第三方包安装失败,请移步到Python 解决dilb和face_recognition第三方包安装失败_水w的博客-CSDN博客
目录
pycharm中,如果要安装cv2,就需要安装opencv-python库,这个库并不是自带的,所以我们要pip一下。注意不要写成opencv!它还会自己安装另一个依赖库,
pip install opencv-python
注意:import时就不是opencv-python或者opencv了,要用cv2了!
import cv2
dlib支持检测人脸特征关键点,官方提供了68维度和5维度的人脸关键店检测预训练模型提供下载使用。
相关数据与模型文件下载地址:Index of /files
想要处理图片,就得先要读取图片,光读取不行,还得把图片显示出来。
整个代码如下:
- # 导入cv模块
- import cv2 as cv
-
- # 读取图片
- img = cv.imread('face4.jpg')
- # 显示图片
- cv.imshow('read_img', img)
- # 为了防止自动退出(pycharm可能会发生),所以可以在代码后面加入:等待
- cv.waitKey(0)
- # 释放内存
- cv.destroyAllWindows()
效果如下:
在图像预处理中,图像的灰度变换是图像增强的重要手段,灰度变换可以使图像对比度扩展,图像清晰,特征明显,灰度变换主要利用点运算来修正像素灰度,由输入像素点的灰度值确定相应输出点的灰度值,是一种基于图像变换的操作。
在数字图像中,像素是基本的表示单位,各个像素的亮安程度用灰度值来标识,只含亮度信息,不含色彩信息的图像称为灰度图像,对于单色图像,它的每个像素的灰度值用【0,255】区间的整数表示,即图像分为256个灰度等级,对于彩色图像,他的每个像素由R,G,B三个单色调配而成,如果每个像素的R,G,B完全相同,也就是R=G=B=D,该图像就是灰度图像,其中D被称为各个像素的灰度值。
整个代码如下:
- # 导入cv模块
- import cv2 as cv
-
- # 读取图片
- img = cv.imread('face1.jpg')
- # 灰度转换
- gray_img = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
- # 显示灰度图片
- cv.imshow('gray', gray_img)
- # 保存灰度图片
- cv.imwrite('gray_face11.jpg', gray_img)
- # 显示图片
- cv.imshow('read_img', img)
- # 等待
- cv.waitKey(0)
- # 释放内存
- cv.destroyAllWindows()
报错:
我发现代码报错,代码检查过,没有问题,这是怎么回事?
原因:这可能是因为你的路径中有中文,opencv的致命弱点:路径不能有中文!
解决方法:
(1)重新新建路径中没有中文的新文件夹,重新运行代码,但是还是报错了。
(2)已经修改了路径中没有中文,但是还是显示不出来。
这就比较少见,可能是因为图片格式比较冷门,或者是错误的,所以无法显示。--》换一张图片
成功了,效果如下:
整个代码如下:
- # 导入cv模块
- import cv2 as cv
-
- # 读取图片
- img = cv.imread('face4.jpg')
- # 修改尺寸
- resize_img = cv.resize(img, dsize=(200, 200))
- # 显示原图
- cv.imshow('img', img)
- # 显示修改后的
- cv.imshow('resize_img', resize_img)
- # 打印原图尺寸大小
- print('未修改:', img.shape)
- # 打印修改后的大小
- print('修改后:', resize_img.shape)
- # 等待
- while True:
- if ord('q') == cv.waitKey(0):
- break
- # 释放内存
- cv.destroyAllWindows()
效果如下:
整个代码如下:
- # 导入cv模块
- import cv2 as cv
-
- # 读取图片
- img = cv.imread('face4.jpg')
- # 坐标
- x, y, w, h = 100, 100, 100, 100
- # 绘制矩形
- cv.rectangle(img, (x, y, x + w, y + h), color=(0, 0, 255), thickness=1)
- # 绘制圆形
- cv.circle(img, center=(x + w, y + h), radius=100, color=(255, 0, 0), thickness=5)
- # 显示
- cv.imshow('re_img', img)
- while True:
- if ord('q') == cv.waitKey(0):
- break
- # 释放内存
- cv.destroyAllWindows()
效果如下:
(1)首先,需要找到我们需要用到的haarcascade_frontalface_alt2.xml,位置是在Python的环境/虚拟环境下的lib/site-packages/的cv2/data/下。
此处我的路径是D:/my/python-pycharm/python-envs/venv-deep/Lib/site-packages/cv2/data/haarcascade_frontalface_alt2.xml
整个代码如下:
- # 导入cv模块
- import cv2 as cv
-
- # 检测函数
- def face_detect_demo():
- gary = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
- face_detect = cv.CascadeClassifier('D:/my/python-pycharm/python-envs/venv-deep/Lib/site-packages/cv2/data/haarcascade_frontalface_alt2.xml')
- face = face_detect.detectMultiScale(gary, 1.01, 5, 0, (100, 100), (300, 300))
- for x, y, w, h in face:
- cv.rectangle(img, (x, y), (x + w, y + h), color=(0, 0, 255), thickness=2)
- cv.imshow('result', img)
-
-
- # 读取图像
- img = cv.imread('face4.jpg')
- # 检测函数
- face_detect_demo()
- # 等待
- while True:
- if ord('q') == cv.waitKey(0):
- break
- # 释放内存
- cv.destroyAllWindows()
效果如下:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。