opencv学习第三课(摄像头的调用)

   一、opencv调用摄像头是通过VideoCapture(0)

          (1)、其中参数0:代表调用电脑自带摄像头;

          (2)、如果参数为一则调用外接入usb摄像头;

          (3)、官方其他用法(注释内容):""" VideoCapture() -> <VideoCapture object> or VideoCapture(filename) -> <VideoCapture object> or VideoCapture(filename, apiPreference) -> <VideoCapture object> or VideoCapture(index) -> <VideoCapture object> """

  二、代码:

       

# coding=utf-8

import cv2 as cv
import numpy as np


# 读取视频,无声音
def get_video_info():
    capture = cv.VideoCapture(0)
    while(True):
        # frame视频中的每一帧
        ret,frame = capture.read()
        # 摄像头反置
        frame = cv.flip(frame, 1)
        cv.imshow("video", frame)


        # # 检验滤波
        # frame = cv.medianBlur(frame, 5)
        #
        # # 锐化滤波
        # kerrel = np.array([[0, -4, 0], [-4, 17, -4], [0, -4, 0]], np.float32)
        # dst = cv.filter2D(frame, -1, kernel=kerrel)

        cv.imshow("meddian_image", dst)


        c = cv.waitKey(10)
        if c == 27:
            break


# 读取图片
def get_imgs_info(image):
    print(type(image))
    print(image.size)
    print(image.shape)
    print(image.dtype)
    pixel_data = np.array(image)
    print(pixel_data)


if __name__ == '__main__':
    src = cv.imread('xiaofeng.jpg')
    cv.namedWindow("xiaofeng", cv.WINDOW_AUTOSIZE)
    cv.imshow("xiaofeng", src)


    # get_imgs_info(src)
    # # 灰度处理
    # gray = cv.cvtColor(src,cv.COLOR_BGR2GRAY)
    # # 保存
    # cv.imwrite("xiaofeng_1.png", gray)
    get_video_info()


    cv.waitKey(0)
    cv.destroyAllWindows()

      三、cvWaitKey(k)介绍(转自:http://www.360doc.com/content/16/0928/20/25664332_594471048.shtml):

           首先,在cvWaitKey(k)中,k的单位为毫秒,1000毫秒等于1秒,同时,根据资料的说明,在显示图像的时候,每秒显示      27、28帧的时候,我们看到的视频是流畅的。同时采取25帧的话,k=1000/25=40。即,每处理完一帧后,程序会等待40毫秒才会读取下一帧;

          1.显示图像,一般要在cv.imshow()函数后加一句cv.WaitKey(0),此时程序显示出图像后将暂停,等待接收一个键盘输入;若没有这句话,则显示图像的代码很快就执行过去了,所以要用cvWaitKey()来暂停。(按Esc停止)

          2.显示视频时,一般用cvWaitKey(delay) delay是延时的ms数。表示显示一帧,然后等delay ms ,再显示下一帧。如果没有cvWaitKey的话, 那么循环里面的每个指令执行时间为0.0000000001s,总之趋近于0.那么capture可能有10000帧图像, 那么10000帧图像也之需要0.000001s就播放完了, 结果你还没看到画面,就已经黑屏了(按Esc停止)。

         3.你也可以加上自己喜欢的键让其退出,如(cv.waitKey(10) == ord('q')就是按下‘q’退出,也可写成cv.waitKey(10) == 113(‘q’的ACSH码为113))

        c = cv.waitKey(50)
        if c == 27:
            break

         4.所以该段代码是为了人眼能铺抓到视频内容与cv.waitKey(0)作用不同

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值