python3 识别人像照片并纠正照片正反

实现效果:

本程序可以将下图第二张照片进行人脸识别,发现相片是否是正向,如果不是就进行相片转正形成下图第一张图。

 代码

安装配置

模型下载

首先在我的这篇文件下载相应的人脸识别模型,一般 64标记点就够用,当然你也可以换成68位

人脸识别模型 shape_predictor_68_face_landmarks.dat 和81位下载_shape_predictor_68_face_landmarks.dat下载-CSDN博客

依赖下载

需要pip install 安装下面依赖

opencv-python

opencv-contrib-python

numpy

cmake

boost

imutils

dlib

问题解决

安装dlib这个可能遇到问题

python安装dlib报ERROR: Failed building wheel for dlib-CSDN博客

源码

# 安装cv2 安装的全名为:opencv-python同时还要按个指示包:opencv-contrib-python
import cv2 as cv
# 安装numpy,numPy 是 Python 科学计算的基础包。NumPy 包的核心是 ndarray 对象,他封装了同构数据类型的 n 维数组。
import numpy as np
# 安装dlib 需要先安装cmake包,否则可能造成报错
import dlib
# 安装imutils from和import意思是导入imutils包,但是在这个同级py文件中没有无需要的函数,我需要到对应下级py文件中的face_utils这个功能块或函数
from imutils import face_utilsclass PhotoCorrect:# datapath:人脸数据文件位置路径,人脸识别的68个特征点检测库dat文件# inpath:人脸图片输入路径# outpath:纠正后输出路径def photoCorrect(datapath, inpath, outpath):try:# opencv读取图片image = cv.imread(inpath)# 读取的图片先存一张原图,用于原图旋转FirstImage = imageresult = 0for i in range(4):# 加载人脸数据detector = dlib.get_frontal_face_detector()predictor = dlib.shape_predictor(datapath)# 图片转灰(用于提高人脸识别度)gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)# 获取特征集合rects = detector(gray, 1)for (i, rect) in enumerate(rects):# 如果存在shape说明人脸已经识别出来了shape = predictor(gray, rect)shape = face_utils.shape_to_np(shape)# 然后根据result就知道需要旋转几次# 然后再使用opencv旋转保存之前的备份图片即可,这样就不会更改原有的图片for (x, y) in shape:if result == 0:cv.imwrite(outpath, FirstImage, [int(cv.IMWRITE_JPEG_QUALITY), 70])elif result == 1:cv.imwrite(outpath, np.rot90(FirstImage), [int(cv.IMWRITE_JPEG_QUALITY), 70])elif result == 2:cv.imwrite(outpath, np.rot90(np.rot90(FirstImage)), [int(cv.IMWRITE_JPEG_QUALITY), 70])elif result == 3:cv.imwrite(outpath, np.rot90(np.rot90(np.rot90(FirstImage))),[int(cv.IMWRITE_JPEG_QUALITY), 70])return True# 如果不具备相应特征,旋转图片90°image = np.rot90(image)# 记录旋转次数加1result += 1# 进程结束,退出代码return Falseexcept Exception as e:print(e)return Falseif __name__ == '__main__':PhotoCorrect.photoCorrect(r'F:\exercise\py\AI\dat\shape_predictor_68_face_landmarks.dat', r'F:\testResource\Test\photo\testPhoto1.jpg',r'F:\testResource\Test\photo\right1.jpg')

调用主方法,这个有点慢 莫要着急

------------------------------------------与正文内容无关------------------------------------
如果觉的文章写对各位读者老爷们有帮助的话,麻烦点赞加关注呗!小弟在这拜谢了!
如果您觉得我的文章在某些地方写的不尽人意或者写的不对,从而让你对你人生观产生颠覆(概不负责),需要斧正,麻烦在评论区不吝赐教,作者看到后会根据您的提示查阅文章进行修改,还这世间一个公理一片蓝天

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/314944.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP 基础编程 (1)

文章目录 前后端交互尝试php简介php版本php 基础语法php的变量前后端交互 - 计算器体验php数据类型php的常量和变量的区别php的运算符算数运算符自增自减比较运算符赋值运算符逻辑运算 php的控制结构ifelseelse if 前后端交互尝试 前端编程语言:JS (Java…

Java智慧校园源码,SaaS云平台,私有云部署,移动端小程序使用小程序原生语言开发

系统概述: 电子班牌系统又称之为智慧班牌,是当前校园数字化信息化建设、文化建设的主流,是校园日常工作安排、校园信息发布、班级文化风采展示、课堂交流的重要应用载体。智慧班牌系统在传统信息发布和校园文化展示功能基础上,融…

C#设计模式之策略模式

策略模式简介 策略模式在设计模式中属于对象行为型模式,它的意图是定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。策略模式使得算法可独立于使用它的客户而变化。 策略模式的图解如下所示: 示例 本文通过一个简…

jenkins+pytest+allure

jenkinspytestallure allure下载地址 Releases allure-framework/allure2 GitHub allure环境变量配置 allure --version 查看版本(确定是否配置完成) python安装allure插件 pip install allure-pytest pytest的运行指令 pytest -sv test_demo.py 开发完毕后将代码上传到…

Python-docx 深入word源码 带有序号的段落无法设置段后、段前距离、间距等段落属性

如果使用p doc.add_paragraph(内容, styleList Number)来创建序号段落,会发现设置序号段落之间的段前、段后以及段落间距无法生效。后来将docx库生成的word文档打开后发现段落的设置出现问题,如下图红框所示,将该选项去掉即可使段落间距属性…

PACC:数据中心网络的主动 CNP 生成方案

PACC:数据中心网络的主动 CNP 生成方案 文章目录 PACC:数据中心网络的主动 CNP 生成方案PACC算法CNP数据结构PACC参数仿真结果参考文献 PACC算法 CNP数据结构 PACC参数 仿真结果 PACC Hadoop Load0.2 的情况: PACC Hadoop Load0.4 的情况&a…

谷歌Gemini Pro模型 Api 调用

写在前面 本篇博客主要介绍如下内容 Gemini Pro模型 ApiKey的申请 Gemini Pro模型 Api调用的方法 几个模型Api调用的demo程序 调用Gemini Pro模型中可能遇到的问题及解决方案 模型 ApiKey的申请 注册好Google账号,并在浏览器完成登录访问 : https://makersuite.g…

孩子写作业用什么品牌的护眼台灯好?2024备考台灯推荐

随着近视度数的不断加深,眼轴会被过度拉长,导致各种眼病高发。调查发现,600度以上的高度近视人群,发生视网膜脱落、白内障、青光眼、黄斑变性等疾病的风险,比普通人高很多。这些眼病均可导致视力严重下降,严…

【Python动漫系列】高级皮卡丘(完整代码)

文章目录 皮卡丘环境需求完整代码皮卡丘 皮卡丘是《宠物小精灵》系列中的一种可爱的电气宝可梦,是最受欢迎的角色之一。它是由杉森建设计师创造并在游戏、动画和电影中广泛展现的。 皮卡丘的外观非常独特,它身体呈黄色,耳朵上有两个黑色的竖耳朵,脸上有两个红色的圆圈,两…

新手入门安装PyTorch及其测试验证

目录 检查系统要求 安装PyTorch 通过pip在windows环境中安装GPU版本: 使用conda方式在windows中安装GPU版本 在windows环境安装cpu版本 验证安装 总结 检查系统要求 在开始安装PyTorch之前,请确保你的系统满足以下要求: Python版本…

【K8S 部署】基于kubeadm搭建Kurbernetes集群

目录 一、基本架构 二、环境准备: 三、安装部署 1、所有节点安装docker 2、、所有节点安装kubeadm,kubelet和kubectl 3、配置网络--flannel 4、测试 pod 资源创建 四、安装部署与k8s集群对接的Harbor仓库 五、Dashboard安装部署: 一、基本架构…

人工智能_机器学习085_DBSCAN算法介绍_具有噪声基于密度的聚类_基于密度的空间聚类方法---人工智能工作笔记0125

然后我们再来看一种聚类算法,叫做DBSCAN算法 可以看到,他和KMeans的原理完全不一样, 这个是基于密度的聚类方法,就是在一堆数据中,把密度最大的数据,归为一类 这里的划分为簇,其实就是 划分类别的意思 这个簇,就跟鱼群一样,一个鱼群中肯定是同一种鱼类. 然后我们再来看,DBSC…