#!/usr/bin/env python3

#-*- coding:utf-8 -*-# __author__:kzg'''cv2.imshow("image", img_blank) # 显示图片

cv2.waitKey(0) # 窗口一直开着'''import cv2

import dlib

import numpyasnp

import os, sys, timefromrandom import randint

BASEDIR=os.path.dirname(os.path.abspath(__file__))

# 图片源

sourceDir= os.path.join(BASEDIR, "pic_folder")

# 保存使用过的文件

dataset= os.path.join(BASEDIR, 'dataset')

# 处理图片保存目录

outPic= os.path.join(BASEDIR, "extra_folder")

def tranposeDector(img, cnt=0):''':param infile: imread后的图片对象'''# 检测图上的人脸数try:

dets= dector(img, 1)

except Exceptionasex: # 脸部无法检测return(ex)

# 身份证上只能有一个人脸,即为检查结果的第一个值ifdets:

face= dets[0] # [(354, 96) (444, 186)] 检测出左上、右下两个点

# 计算想裁取的图片的高度 下-上

height= face.bottom() - face.top() + 60# 计算想裁取的图片的宽度 右-左

width= face.right() - face.left() + 40# 以计算出的图片大小生成空白板

img_blank= np.zeros((height, width, 3), np.uint8)

# 将图片写入空白板try:for i inrange(height):for j inrange(width): # top线上方40像素位置开始读, left线左15像素位置开始读

img_blank[i][j]= img[face.top() - 40 + i][face.left() - 15 +j]

cv2.imwrite(os.path.join(outPic, str(randint(0,10000))+".jpg"), img_blank) # 保存写入数据后的空白板图片

except Exceptionasex:

print(ex)

cv2.destroyAllWindows() # 释放所有窗口资源else:

cnt+= 1

if cnt < 3:

transposeImage=cv2.transpose(img) # 图像反向旋转90度

flipedImageX= cv2.flip(transposeImage, 0) # 沿X轴方向的镜像图片

cv2.imshow("flipedImageX",flipedImageX)

cv2.waitKey(1000)

tranposeDector(flipedImageX, cnt)else:

print("人脸检测失败 transpose times:", cnt)

cv2.destroyAllWindows() # 释放所有窗口资源if __name__ == '__main__':

# 初始化正脸检测器

dector=dlib.get_frontal_face_detector()whileTrue:

# 图片目录下所有文件集(增加文件后缀判断)

sSet= set(os.listdir(sourceDir))

# 数据集中所有文件名ifos.path.exists(dataset):

with open(dataset,'r') asfp:

dSet= set()for i infp.readlines():

dSet.add(i.replace("\n", ""))else:

with open(dataset,'w') asfp:

fp.write("")

fp.close()

dSet= set()

sSet.difference_update(dSet)for p insSet:

print("start:", p)

# 利用opencv读取图片

img=cv2.imread(os.path.join(sourceDir, p))

tranposeDector(img)

# 转换过的图片保存到dataset

with open(dataset,'a') asfp:

fp.write(p+ "\n")

time.sleep(5)

python头像截取_身份证头像截取 - osc_8plez0fy的个人空间 - OSCHINA - 中文开源技术交流社区...相关推荐

  1. python设计模式理解_如何理解设计模式 - PythonJsGo的个人空间 - OSCHINA - 中文开源技术交流社区...

    一.设计模式是什么? 设计模式是软件设计中常见问题的典型解决方案. 它们就像能根据需求进行调整的预制蓝图,可用于解决代码中反复出现的设计问题.设计模式与方法或库的使用方式不同, 你很难直接在自己的程序 ...

  2. python羊车门问题_羊车门问题 - osc_wq8j2a9a的个人空间 - OSCHINA - 中文开源技术交流社区...

    题目描述:有3扇关闭的门,一扇门后面停着汽车,其余门后是山羊,只有主持人知道每扇门后面是什么.参赛者可以选择一扇门,在开启它之前,主持人会开启另外一扇门,露出门后的山羊,然后允许参赛者更换自己的选择. ...

  3. python遗传算法最短路径问题有几种类型_遗传算法求最短路径 - osc_tn8uhjgi的个人空间 - OSCHINA - 中文开源技术交流社区...

    实例描述 配送中心数为 $1$,客户数 $k$为 $8$,车辆总数 $m$为 $2$:车辆载重皆为 $8$ 吨:各客户点需求为 $g(i = 1, 2, ... , 8)$(单位为吨),已知客户点与配 ...

  4. python获取中文字体点阵坐标_点阵汉字显示 - freecamel的个人空间 - OSCHINA - 中文开源技术交流社区...

    目录: DOS下的点阵汉字 汉字的内码 汉字字模 汉字库文件 打印字库文件和HZK12 main() { unsigned char *s,*e="ABcd",*c="你 ...

  5. python 白盒测试_白盒测试教程 - 颜丽的个人空间 - OSCHINA - 中文开源技术交流社区...

    总共贴了39节,后续还有很长,共122节,文章名为'白盒测试教程' 1.白盒测试概念 2.测试覆盖标准 3.逻辑驱动测试 4.基本路径测试 白盒测试概念 1.白盒测试也称结构测试或逻辑驱动测试,是一种 ...

  6. 关联规则可视化python语言_关联规则可视化 - 猪猪daxia的个人空间 - OSCHINA - 中文开源技术交流社区...

    关联规则挖掘是一种流行的数据挖掘方法,在R语言中为扩展包arules.然而,挖掘关联规则往往导致非常多的规则,使分析师需要通过查询所有的规则才能发现有趣的规则.通过手动筛选大量的规则集是费时费力.在本 ...

  7. python 条件表达式换行_Python基础语法 - LongKing-Xu的个人空间 - OSCHINA - 中文开源技术交流社区...

    python基础语法 一.标识符 在Python中,所有标识符可以包括英文.数字以及下划线(_),但不能以数字开头. 在Python中的标识符是区分大小写的. 在Python中以下划线开头的标识符是有 ...

  8. python列表去重效率_python面试题 - osc_yztbpii7的个人空间 - OSCHINA - 中文开源技术交流社区...

    1.一行代码实现1--100之和 In [1]: sum(range(1,101)) Out[1]: 5050 1-100求和 2.如何在一个函数内部修改全局变量 a=520 deffun():glo ...

  9. php面试题 优信二手车_分布式定时任务对比 - sharedCode的个人空间 - OSCHINA - 中文开源技术交流社区...

    分布式定时任务 1. 什么是分布式定时任务 把分散的,可靠性差的计划任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式.叫做分布式定时任务. 2. 常见开源方案 elastic ...

  10. python清空变量值_Python的变量 - YGH1215的个人空间 - OSCHINA - 中文开源技术交流社区...

    听完下面这首日语歌,你也差不多阅读完此文了   : ) 1. 概念 Python变量是用于存储值所在的内存位置.换句话说,python程序中的变量将数据提供给计算机进行处理. Python中的每个值都 ...

最新文章

  1. serv-u 15 设置非21端口外网FTP访问以及更改被动模式端口、防火墙映射
  2. Python Module_pdb_DEBUG 方法
  3. 微信“看一看“个性化推荐:排序篇
  4. spark应用程序转换_Spark—RDD编程常用转换算子代码实例
  5. 王仲远 | 基于概念知识图谱的短文本理解
  6. 如何从标签创建新分支?
  7. DOTween的Sequence图例说明
  8. PHP Mysql-简介
  9. 方舟服务器修改错误,求解,方舟正在进服务器出现错误
  10. stata抓取html,Stata 网页表格爬取示例
  11. ureport2报表详细使用(一)-集成及配置
  12. linux的vi2编辑相关命令,Linux vi/vim编辑器常用命令与用法总结
  13. pyltp安装失败python 3.7_pyltp模块安装问题
  14. 浏览器怎么导入导出|删除书签,方法步骤来咯
  15. 吉林省专升本历年真题高频词汇
  16. 计算机用老毛桃u盘备份系统,如何用老毛桃u盘备份系统
  17. 嵌入式系统开发笔记16:CJ/T-188 冷热量表协议解析5
  18. N个字符或数字的全排列
  19. C语言中lwr是谁的缩写,C语言中关于字符串的操作(转)
  20. 菜鸟与 cef 的邂逅之旅(三):Cef3 中 C++ 与 JavaScript 的互相调用

热门文章

  1. 为什么要面向对象编程?
  2. 计算机视觉SIFT算法详解
  3. 二级页表如何节省内存
  4. Python模拟随机游走
  5. OpenSSL库下载地址
  6. 单片机C语言-include、sfr和sbit 的讲解
  7. 中药知多少!!!!!
  8. harmonyos下载安装,HarmonyOS系统
  9. Google Authenticator(谷歌身份验证器)C#版
  10. 秋风,唱给田野动听的歌