Python能干啥( 二 )
接着,我们需要截取当前播放视频的截图到本地。
需要注意的是,抖音视频播放界面包含视频创作者头像、BGM 创作者头像等一些杂乱的元素,可能对人脸识别的结果产生一些误差,所以需要对屏幕截图之后的图像进行「二次裁剪」处理。def get_screen_shot_part_img(image_name): """ 获取手机截图的部分内容 :return: """ # 截图 os.system("adb shell /system/bin/screencap -p /sdcard/screenshot.jpg") os.system("adb pull /sdcard/screenshot.jpg %s" % image_name) # 打开图片 img = Image.open(image_name).convert(\u0026#39;RGB\u0026#39;) # 图片的原宽、高(1080*2160) w, h = img.size # 截取部分,去掉其头像、其他内容杂乱元素 img = img.crop((0, 0, 900, 1500)) img.thumbnail((int(w / 1.5), int(h / 1.5))) # 保存到本地 img.save(image_name) return image_name现在可以使用百度提供的 API 获取到上面截图的人脸列表。def parse_face_pic(pic_url, pic_type, access_token): """ 人脸识别 5秒之内 :param pic_url: :param pic_type: :param access_token: :return: """ url_fi = \u0026#39;https://aip.baidubce.com/rest/2.0/face/v3/detect?access_token=\u0026#39; + access_token # 调用identify_faces,获取人脸列表 json_faces = identify_faces(pic_url, pic_type, url_fi) if not json_faces: print(\u0026#39;未识别到人脸\u0026#39;) return None else: # 返回所有的人脸 return json_faces从上述的人脸列表中筛选出性别为女,年龄为 18-30 岁之间,颜值超过 70 的小姐姐。def analysis_face(face_list): """ 分析人脸,判断颜值是否达标 18-30之间,女,颜值大于80 :param face_list:识别的脸的列表 :return: """ # 是否能找到高颜值的美女 find_belle = False if face_list: print(\u0026#39;一共识别到%d张人脸,下面开始识别是否有美女~\u0026#39; % len(face_list)) for face in face_list: # 判断是男、女 if face == \u0026#39;female\u0026#39;: age = face beauty = face if 18 \u0026lt;= age \u0026lt;= 30 and beauty \u0026gt;= 70: print(\u0026#39;颜值为:%d,及格,满足条件!\u0026#39; % beauty) find_belle = True break else: print(\u0026#39;颜值为:%d,不及格,继续~\u0026#39; % beauty) continue else: print(\u0026#39;性别为男,继续~\u0026#39;) continue else: print(\u0026#39;图片中没有发现人脸.\u0026#39;) return find_belle由于视频是连续播放的,很难通过截取视频某一帧,判断视频有出现颜值高的小姐姐。
另外,大部分短视频播放时长为「10s+」,这里需要对每一个视频多次截图去做人脸识别,直到识别到颜值高的小姐姐。# 一条视频最长的识别时间RECOGNITE_TOTAL_TIME = 10 # 识别次数recognite_count = 1# 对当前视频截图去人脸识别while True: # 获取截图 print(\u0026#39;开始第%d次截图\u0026#39; % recognite_count) # 截取屏幕有用的区域,过滤视频作者的头像、BGM作者的头像 screen_name = get_screen_shot_part_img(\u0026#39;images/temp%d.jpg\u0026#39; % recognite_count) # 人脸识别 recognite_result = analysis_face(parse_face_pic(screen_name, TYPE_IMAGE_LOCAL, access_token)) recognite_count += 1 # 第n次识别结束后的时间 recognite_time_end = datetime.now() # 这一条视频出现了颜值高的小姐姐 if recognite_result: pass else: print(\u0026#39;超时!!!这是一条没有吸引力的视频!\u0026#39;) # 跳出里层循环 break
推荐阅读
- 怎样成为一名合格的Python程序员?
- python 爬虫,咋获得输入验证码之后的搜索结果
- python的html5lib这个库咋使用啊我在网上也没有找到相关文档
- 作为软件工程大二的学生,学习一般,编程一般,毕业后能干些啥
- 零基础入门学习啥语言好
- Python3.4和3.5区别大么
- python 中 def_():...... return _有啥作用
- 新互联网网站用Java还靠谱么对比Php,Python,Ruby的话
- 30岁男,创业失败转行学python,是否很晚?也不好找工作?
- Python 的开发速度比 C#.net 或 Vb.net 更快吗?
