Python视觉识别--OpenCV调用摄相头(一)

一、OpenCV简介

https://pypi.org/project/opencv-python/
https://opencv.org/releases.html
文档:https://docs.opencv.org/3.0-beta/modules/refman.html

    OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。 OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口。
    在计算机视觉项目的开发中,OpenCV作为较大众的开源库,拥有了丰富的常用图像处理函数库,采用C/C++语言编写,可以运行在Linux/Windows/Mac等操作系统上,能够快速的实现一些图像处理和识别的任务。此外,OpenCV还提供了Java、python、cuda等的使用接口、机器学习的基础算法调用,从而使得图像处理和图像分析变得更加易于上手,让开发人员更多的精力花在算法的设计上。

二、OpenCV应用领域

  1. 计算机视觉领域方向
    1)、人机互动
    2)、物体识别
    3)、图像分割
    4)、人脸识别
    5)、动作识别
    6)、运动跟踪
    7)、机器人
    8)、运动分析
    9)、机器视觉
    10)、结构分析
    11)、汽车安全驾驶

  2. 计算机操作底层技术
    图像数据的操作: 分配、释放、复制、设置和转换。 图像是视频的输入输出I/O ,文件与摄像头的输入、图像和视频文件输出)。
    矩阵和向量的操作以及线性代数的算法程序:矩阵积、解方程、特征值以及奇异值等。
    各种动态数据结构:列表、队列、集合、树、图等。
    基本的数字图像处理:滤波、边缘检测、角点检测、采样与差值、色彩转换、形态操作、直方图、图像金字塔等。
    结构分析:连接部件、轮廓处理、距离变换、各自距计算、模板匹配、Hough变换、多边形逼近、直线拟合、椭圆拟合、Delaunay 三角划分等。
    摄像头定标:发现与跟踪定标模式、定标、基本矩阵估计、齐次矩阵估计、立体对应。
    运动分析:光流、运动分割、跟踪。
    目标识别:特征法、隐马尔可夫模型:HMM。
    基本的GUI:图像与视频显示、键盘和鼠标事件处理、滚动条。
    图像标注:线、二次曲线、多边形、画文字。
    三、安装OpenCV的的两种方法

  3. 下载地址:
    https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv

    image.png

    使用whl文件法:
    (base) C:\Users\Administrator>pip install opencv_python-4.0.1-cp37-cp37m-win_amd
    64.whl
    直接命令法
    pip install opencv-python

  4. anaconda 安装


    anaconda 安装

四、Python调用摄相头

# -*- coding: UTF8 -*-

import cv2 as cv

def video_test():
    # 打开0号摄像头,捕捉该摄像头实时信息
    # 参数0代表摄像头的编号
    # 有多个摄像头的情况下,可用编号打开摄像头
    # 若是加载视频,则将参数改为视频路径,cv.VideoCapture加载视频是没有声音的,OpenCV只对视频的每一帧进行分析
    capture = cv.VideoCapture(0)
    while (True):
        # 获取视频的返回值 ref 和视频中的每一帧 frame
        ref, frame = capture.read()

        # 加入该段代码将使拍出来的画面呈现镜像效果
        # 第二个参数为视频是否上下颠倒 0为上下颠倒 1为不进行上下颠倒
        frame = cv.flip(frame, 1)

        # 将每一帧在窗口中显示出来
        cv.imshow("video", frame)

        # 设置视频刷新频率,单位为毫秒
        # 返回值为键盘按键的值
        c = cv.waitKey(50)

        # 27为 Esc 按键的返回值
        if c == 27:
            break

video_test()
# 等待用户操作
cv.waitKey(0)
# 释放所有窗口
cv.destroyAllWindows()

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容