博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剪切图片
阅读量:4490 次
发布时间:2019-06-08

本文共 4049 字,大约阅读时间需要 13 分钟。

总体思路为:读取各个文件夹里面的图片,根据自己的选择,将自己想要得到的头像的颜色,通过opencv剪切下来,并且根据这个文件夹的名字生成相对应的文件来装图片,图片的名字是根据时间戳来确定的 下面是代码:
import cv2 import os import time # 分类器,设置为全局变量 face_cascade = cv2.CascadeClassifier("D:\\face_data\\opencv_testing_mechanism\\da_face\\haarcascade_frontalface_alt.xml") size_data = 64 #将他默认为64大小的 save_add = "D:\\face_data\\black_photo" def read_address():     # 读取地址,并且根据相对应的需求修改图片     target_add = "D:\\face_data\\many_photo"     # 读取文件夹     floder_name_list = os.listdir(target_add)     # print(floder_name_list)     for floder_name in floder_name_list:         floder_add_str = target_add +"\\"+ floder_name         # 创建图片的地址         save_floder_add = save_add+"\\"+ floder_name         isExist = os.path.exists(save_floder_add)         if not isExist:             os.makedirs(save_floder_add)         else:             print("文件已经存在了")             return         print(floder_name+"设置成黑白的头像或者彩色的头像")         demand_data = input(floder_name+"设置成黑白头像的输入black,设置成彩色的头像的输入colour:")         if demand_data=="black":             modify_photo_black_and_white(floder_add_str,save_floder_add)         if demand_data=="colour":             modify_photo_colour(floder_add_str,save_floder_add)         if demand_data != "black" and demand_data != "colour":             print("请重新输入正确的需求")             while(1):                 demand_data = input(floder_name + "设置成黑白头像的输入black,设置成彩色的头像的输入colour:")                 if demand_data == "black":                     modify_photo_black_and_white(floder_add_str,save_floder_add)                     break                 elif demand_data == "colour":                     modify_photo_colour(floder_add_str,save_floder_add)                     break                 else:                     print("请重新输入正确的需求!")     return def modify_photo_black_and_white(floder_add_str,save_floder_add):     # 将图片修改为黑白图片     # 读取文件里面的所有的图片的地址     photo_name_list =  os.listdir(floder_add_str)     # print(photo_name_list)     # 通过循环设置图片的大小和灰度     for photo_name in photo_name_list:         photo_name_add = floder_add_str+"\\"+photo_name         # print(photo_name_add)         photo_data = cv2.imread(photo_name_add)         # print(photo_data)         intercept_photo(photo_data,save_floder_add)     return def intercept_photo(photo_data,save_floder_add):     # 剪切成黑白色的     gray = cv2.cvtColor(photo_data,cv2.COLOR_BGR2GRAY)     faces = face_cascade.detectMultiScale(gray,1.3,5)     for (x,y,w,h) in faces:         face = cv2.resize(gray[y:(y+h),x:(x+w)],(size_data,size_data))         # print(face)         save_photo(face,save_floder_add) def modify_photo_colour(floder_add_str,save_floder_add):     print("将图片修改为彩色的图片")     # 读取文件里面的所有的图片的地址     photo_name_list = os.listdir(floder_add_str)     # print(photo_name_list)     # 通过循环设置图片的大小和灰度     for photo_name in photo_name_list:         photo_name_add = floder_add_str + "\\" + photo_name         # print(photo_name_add)         photo_data = cv2.imread(photo_name_add)         # print(photo_data)         intercept_photo_color(photo_data, save_floder_add)     return def intercept_photo_color(photo_data, save_floder_add):     # 这个是剪切诚彩色的     gray = cv2.cvtColor(photo_data, cv2.COLOR_BGR2BGRA)     faces = face_cascade.detectMultiScale(gray, 1.3, 5)     for (x, y, w, h) in faces:         face = cv2.resize(gray[y:(y + h), x:(x + w)], (size_data, size_data))         # print(face)         save_photo(face, save_floder_add) def save_photo(face,save_floder_add):     # 保存图片     photo_name = str(int(time.time()))     cv2.imwrite(save_floder_add+"\\"+photo_name+".jpg",face) if __name__ == "__main__":     str_size_data = input("请输入您想要生成的图片的大小像素,注意必须是整数:")     try:         size_data = int(str_size_data)     except ValueError:         print("请输入整数")         while (1):             str_size_data = input("请输入您想要生成的图片的大小像素,注意必须是整数:")             try:                 size_data = int(str_size_data)             except ValueError:                 print("请输入整数")             else:                 break     read_address()
 

转载于:https://www.cnblogs.com/MyUniverse/p/10667832.html

你可能感兴趣的文章
手工释放linux内存
查看>>
2014-5-30 总结
查看>>
【H3 BPM工作流程管理产品小故事】第四篇 子表创建
查看>>
洛谷P1148 拱猪计分
查看>>
扑克序列
查看>>
java笔记--适配器模式的运用
查看>>
Replace Nested Conditional with Guard Clauses(用卫语句代替嵌套循环)
查看>>
jsp中${}是EL表达式的常规表示方式
查看>>
[Web Tools] 实用的Web开发工具
查看>>
ContentProvider
查看>>
欢迎来到Attention的博客
查看>>
获取IOS bundle中的文件
查看>>
document
查看>>
Hadoop下大矩阵乘法Version2
查看>>
iPhone内存溢出——黑白苹果
查看>>
Struts2学习笔记(十二) 类型转换(Type Conversion)(下)
查看>>
tcpdump学习
查看>>
局域网内传输文件速度慢
查看>>
Linux的核心版本(摘抄)
查看>>
CASE表达式
查看>>