当前位置:脚本大全 > > 正文

opencv提取图像轮廓python代码(Python基于opencv调用摄像头获取个人图片的实现方法)

时间:2022-01-24 00:33:40类别:脚本大全

opencv提取图像轮廓python代码

Python基于opencv调用摄像头获取个人图片的实现方法

接触图像领域的应该对于opencv都不会感到陌生,这个应该算是功能十分强劲的一个算法库了,当然了,使用起来也是很方便的,之前使用windows7的时候出现多该库难以安装成功的情况,现在这个问题就不存在了,需要安装包的话可以去我的资源中下载使用,使用pip安装方式十分地便捷。

今天主要是基于opencv模块来调用笔记本的内置摄像头,然后从视频流中获取到人脸的图像数据用于之后的人脸识别项目,也就是为了构建可用的数据集。整个实现过程并不复杂,具体如下:

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • #!usr/bin/env python
  • #encoding:utf-8
  • '''
  • __author__:沂水寒城
  • 功能: python opencv调用摄像头获取个人图片
  • 使用方法:
  •     启动摄像头后需要借助键盘输入操作来完成图片的获取工作
  •     c(change): 生成存储目录
  •     p(photo): 执行截图
  •     q(quit): 退出拍摄
  • opencv简介
  • 1、videocapture()方法打开摄像
  •   摄像头变量 cv2.videocapture(n)  n为整数内置摄像头为0,若有其他摄像头则依次为1,2,3,...
  •   cap=cv2.videocapture(0) 打开内置摄像头
  • 2、cap.isopened()方法判断摄像头是否处于打开,返回结果为:true、false
  • 3、ret,img=cap.read() 读取图像
  •   布尔变量,图像变量=cap.read()
  • 4、cap.release() 释放摄像头
  • 5、action=cv2.waitkey(n) 获取用户输入,同时可获取按键的ascll码值
  • '''
  • import os
  • import cv2
  • import sys
  • reload(sys)
  • sys.setdefaultencoding('utf-8')
  • def cameraautoforpictures(savedir='data/'):
  •   '''
  •   调用电脑摄像头来自动获取图片
  •   '''
  •   if not os.path.exists(savedir):
  •     os.makedirs(savedir)
  •   count=1 #图片计数索引
  •   cap=cv2.videocapture(0)
  •   width,height,w=640,480,360
  •   cap.set(cv2.cap_prop_frame_width,width)
  •   cap.set(cv2.cap_prop_frame_height,height)
  •   crop_w_start=(width-w)//2
  •   crop_h_start=(height-w)//2
  •   print 'width: ',width
  •   print 'height: ',height
  •   while true:
  •     ret,frame=cap.read() #获取相框
  •     frame=frame[crop_h_start:crop_h_start+w,crop_w_start:crop_w_start+w] #展示相框
  •     frame=cv2.flip(frame,1,dst=none) #前置摄像头获取的画面是非镜面的,即左手会出现在画面的右侧,此处使用flip进行水平镜像处理
  •     cv2.imshow("capture", frame)
  •     action=cv2.waitkey(1) & 0xff
  •     if action==ord('c'):
  •       savedir=raw_input(u"请输入新的存储目录:")
  •       if not os.path.exists(savedir):
  •         os.makedirs(savedir)
  •     elif action==ord('p'):
  •       cv2.imwrite("%s/%d.jpg" alt="opencv提取图像轮廓python代码(Python基于opencv调用摄像头获取个人图片的实现方法)" border="0" /> % (savedir,count),cv2.resize(frame, (224, 224),interpolation=cv2.inter_area))
  •       print(u"%s: %d 张图片" % (savedir,count))
  •       count+=1
  •     if action==ord('q'):
  •       break
  •   cap.release() #释放摄像头
  •   cv2.destroyallwindows() #丢弃窗口
  • if __name__=='__main__'
  •   cameraautoforpictures(savedir='data/')
  • 上述代码的运行环境需要是python2,因为python2中才有reload方法,去掉那些语句就可以在python3中执行了,我们在python2的环境中执行结果截图如下:

    opencv提取图像轮廓python代码(Python基于opencv调用摄像头获取个人图片的实现方法)

    我的保存路径是data,按q退出后,进入data文件夹下就可以看到自己的“靓照”了哈,好了数据集准备到此结束,接下来准备实战人脸识别。 

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对开心学习网的支持。如果你想了解更多相关内容请查看下面相关链接

    原文链接:https://blog.csdn.net/Together_CZ/article/details/87808392

    上一篇下一篇

    猜您喜欢

    热门推荐