Python-opencv摄像头图像捕获

实例一 (灰色调度)

#!/usr/bin/env python
# _*_ coding:utf-8 _*_

import cv2 as cv
import numpy as np


capture = cv.VideoCapture(0)                        # 创建一个VideoCapture对象
while(True):
    ret, frame = capture.read()                     # 一帧一帧读取视频
    gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)    # 对每一帧做处理,设置为灰度图
    cv.imshow('frame', gray)  # 显示结果
    if cv.waitKey(1) &0xFF == ord('q'):             # 按q停止
        break

capture.release()                                   # 释放cap,销毁窗口
cv.destroyAllWindows()

实例二 (正常图像捕获)

import cv2
import numpy as np

"""
函数名:cv2.VideoCapture()
功  能:通过摄像头捕获实时图像数据
返回值:有
参数一:摄像头代号,0为默认摄像头,笔记本内建摄像头一般为 0
     或者填写视频名称直接加载本地视频文件
"""
cap = cv2.VideoCapture(0)  # 创建一个 VideoCapture 对象

"""
函数名:cap.set( propId , value )
功  能:设置视频参数,设置视频的宽高值和摄像头有关使用笔记本内置摄像头时只能设置为 1280*720 以及 640*480,
    哪怕设置值不同时都会自动校正过来,并且仍然返回 True
返回值:布尔值
参数一:需要设置的视频参数
参数二:设置的参数值
"""
cap.set(3, 960)
cap.set(4, 960)

flag = 1  # 设置一个标志,用来输出视频信息
"""
函数名:cv2.isOpened()
功  能:返回一个布尔值( True / False ),检查是否初始化成功,成功返回 True
返回值:布尔值
"""
while(cap.isOpened()):  # 循环读取每一帧
    """
    函数名:cap.read()
    功  能:返回两个值
         先返回一个布尔值,如果视频读取正确,则为 True,如果错误,则为 False,也可用来判断是否到视频末尾
         再返回一个值,为每一帧的图像,该值是一个三维矩阵
         通用接收方法为:
         ret,frame = cap.read();
        这样 ret 存储布尔值,frame 存储图像
        若使用一个变量来接收两个值,如
        frame = cap.read()
        则 frame 为一个元组,原来使用 frame 处需更改为 frame[1]
    返回值:R1:布尔值
        R2:图像的三维矩阵
    """
    ret, frame = cap.read()
    # gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    # cv2.imshow("Gray", gray)

    cv2.imshow("Capture_Test", frame)  # 窗口显示,显示名为 Capture_Test

    k = cv2.waitKey(1) & 0xFF  # 每帧数据延时 1ms,延时不能为 0,否则读取的结果会是静态帧
    if k == ord('s'):  # 若检测到按键 ‘s’,打印字符串
        """
        函数名:cap.get( propId )
        功  能:查询视频的参数
        返回值:无
        参数一:查询的视频参数,其中部分值可以使用 cap.set() 进行修改
        """
        print(cap.get(3))
        print(cap.get(4))
         #保存一帧图片
        cv2.imwrite('1.jpg', frame)

    elif k == ord('q'):  # 若检测到按键 ‘q’,退出
         break

cap.release()  # 释放摄像头
cv2.destroyAllWindows()  # 删除建立的全部窗口

实例三 (图像抓取,保存为图片)

#!/usr/bin/env python  
# -*- coding: utf-8 -*-  

from VideoCapture import Device  
import time  

#最多保存5张抓取到的图片,超过5张,覆盖最早的那一张,依次循环  
MAX_PIC_NUM = 5  

#抓取频率,30秒抓取一次  
SLEEP_TIME_LONG = 30  

#初始化摄像头  
cam = Device(devnum=0, showVideoWindow=0)  

iNum = 0  
while True:  
  
    #抓图  
    cam.saveSnapshot(str(iNum)+ '.jpg', timestamp=3, boldfont=1, quality=75)  
  
    #休眠一下,等待一分钟  
    time.sleep(SLEEP_TIME_LONG)  
  
    #超过5张,则覆盖之前的,否则,硬盘很快就会写满  
    if iNum == MAX_PIC_NUM:  
        iNum = 0  
    else:  
        iNum += 1
        

实例四 (人脸识别,模糊)

转载于:https://www.cnblogs.com/ArchitecTang/p/10189997.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值