zoukankan      html  css  js  c++  java
  • 读取电脑自带摄像头

    读取摄像头:

    import numpy as np
    import cv2 as cv
    
    cap = cv.VideoCapture(0)
    while True:
        ret, frame = cap.read()
        # 参数ret 为True 或者False,代表有没有读取到图片
        # 参数frame 表示截取到一帧的图片
        cv.imshow('frame', frame)  # 显示帧图片
    
        if cv.waitKey(1) == 27: # 判断按键,按下即退出
            break
    
    cap.release()  # 释放图像资源
    cv.destroyAllWindows()  # 关闭窗口

    说明:waitKey()一定要有的,如果没有,就直接白屏了,图像读取一直运行,人的视觉跟不上,如果是0,那就只能播放一张就卡一张,因为0的话他等待按键时间是永远

    播放电脑中的视频文件就直接将路径放在VideoCapture()中就可以了其他均不变

    cap = cv.VideoCapture(file_address)
    while True:
        ret, frame = cap.read()
        # 参数ret 为True 或者False,代表有没有读取到图片
        # 参数frame 表示截取到一帧的图片
        cv.imshow('frame', frame)  # 显示帧图片
    
        if cv.waitKey(1) & 0xff == ord('a'):  # 与上0xff还是原始值,这里是来取waiKey返回值的低八位,防止出现bug
            break
    cap.release()  # 释放图像资源
    cv.destroyAllWindows()  # 关闭窗口

     分出来GBR(灰度):

    import numpy as np
    import cv2 as cv
    import matplotlib as plt
    cap = cv.VideoCapture(0)
    while True:
        ret, frame = cap.read()
        b, g, r = cv.split(frame)
        bgr = cv.merge((b, g, r))
        cv.imshow('frame1', b)
        cv.imshow('frame2', g)
        cv.imshow('frame3', r)
        cv.imshow('bgr', bgr)
        if cv.waitKey(1) == 27:
            break

    其他通道设0:

    import numpy as np
    import cv2 as cv
    import matplotlib as plt
    cap = cv.VideoCapture(0)
    while True:
        ret, frame = cap.read()
        b = frame
        # g = frame
        # r = frame
    
        b[:, :, 1] = 0
        b[:, :, 2] = 0
    
        # g[:, :, 0] = 0
        # g[:, :, 2] = 0
    
        # r[:, :, 0] = 0
        # r[:, :, 1] = 0
    
        cv.imshow('b', b)
        # cv.imshow('g', g)
        # cv.imshow('r', r)
    
        if cv.waitKey(1) == 27:
            break

    边界填充:

    import numpy as np
    import cv2 as cv
    import matplotlib as plt
    cap = cv.VideoCapture(0)
    top_size, bottom_size, left_size, right_size = (50, 50, 50, 50)
    while True:
        ret, frame = cap.read()
        frame1 = cv.copyMakeBorder(frame, top_size, bottom_size, left_size, right_size, cv.BORDER_WRAP)
        cv.imshow('frame1', frame1)
        if cv.waitKey(1) == 27:
            break

    阈值:

    import numpy as np
    import cv2 as cv
    import matplotlib as plt
    cap = cv.VideoCapture(0)
    top_size, bottom_size, left_size, right_size = (50, 50, 50, 50)
    while True:
        ret, frame = cap.read()
        ret, dst = cv.threshold(frame, 127, 255, cv.THRESH_BINARY_INV)
        cv.imshow('dst', dst)
        if cv.waitKey(1) == 27:
            break

    均值滤波(卷积和):

    import numpy as np
    import cv2 as cv
    import matplotlib as plt
    cap = cv.VideoCapture(0)
    top_size, bottom_size, left_size, right_size = (50, 50, 50, 50)
    while True:
        ret, frame = cap.read()
        blur = cv.blur(frame, (10, 10))
        # 参数越大越模糊
        cv.imshow('blur', blur)
        cv.imshow('frame', frame)
        if cv.waitKey(1) == 27:
            break

    高斯滤波(高斯函数分配周围权重):

    import numpy as np
    import cv2 as cv
    import matplotlib as plt
    cap = cv.VideoCapture(0)
    while True:
        ret, frame = cap.read()
        gauss = cv.GaussianBlur(frame, (5, 5), 1)
       
        cv.imshow('gauss', gauss)
        cv.imshow('frame', frame)
        if cv.waitKey(1) == 27:
            break

    中值滤波:

    import numpy as np
    import cv2 as cv
    import matplotlib as plt
    cap = cv.VideoCapture(0)
    while True:
        ret, frame = cap.read()
        median = cv.medianBlur(frame, 3)
    
        cv.imshow('median', median)
        cv.imshow('frame', frame)
        if cv.waitKey(1) == 27:
            break

    水平拼接:

    import numpy as np
    import cv2 as cv
    import matplotlib as plt
    cap = cv.VideoCapture(0)
    while True:
        ret, frame = cap.read()
        blur = cv.blur(frame, (3, 3))
        gauss = cv.GaussianBlur(frame, (3, 3), 1)
        median = cv.medianBlur(frame, 3)
    
        # 拼接一起显示
        image_add = np.hstack((frame, blur, gauss, median))
        cv.imshow('image_add', image_add)
        if cv.waitKey(1) == 27:
            break

    腐蚀:

    import numpy as np
    import cv2 as cv
    import matplotlib as plt
    cap = cv.VideoCapture(0)
    kerne = np.ones((10, 10), np.uint8)
    while True:
        ret, frame = cap.read()
        ersion = cv.erode(frame, kerne, 100)
        add = np.hstack((frame, ersion))
        cv.imshow('add', add)
        if cv.waitKey(1) == 27:
            break

    膨胀(一般操作先腐蚀再膨胀,去除杂点):

    import numpy as np
    import cv2 as cv
    import matplotlib as plt
    cap = cv.VideoCapture(0)
    kerne = np.ones((10, 10), np.uint8)
    while True:
        ret, frame = cap.read()
        dilate = cv.dilate(frame, kerne, 50)
        
        add = np.hstack((frame, dilate))
        cv.imshow('add', add)
        if cv.waitKey(1) == 27:
            break

    开运算(先腐蚀,再膨胀):

    import numpy as np
    import cv2 as cv
    import matplotlib as plt
    cap = cv.VideoCapture(0)
    kerne = np.ones((10, 10), np.uint8)
    while True:
        ret, frame = cap.read()
        opening = cv.morphologyEx(frame, cv.MORPH_OPEN, kerne)
        add = np.hstack((frame, opening))
        cv.imshow('add', add)
        if cv.waitKey(1) == 27:
            break

    闭运算(先膨胀,再腐蚀):

    import numpy as np
    import cv2 as cv
    import matplotlib as plt
    cap = cv.VideoCapture(0)
    kerne = np.ones((10, 10), np.uint8)
    while True:
        ret, frame = cap.read()
        opening = cv.morphologyEx(frame, cv.MORPH_CLOSE, kerne)
        add = np.hstack((frame, opening))
        cv.imshow('add', add)
        if cv.waitKey(1) == 27:
            break

    梯度操作(膨胀-腐蚀,求解边缘):

    import numpy as np
    import cv2 as cv
    import matplotlib as plt
    cap = cv.VideoCapture(0)
    kerne = np.ones((10, 10), np.uint8)
    while True:
        ret, frame = cap.read()
        gradident = cv.morphologyEx(frame, cv.MORPH_GRADIENT, kerne)
        add = np.hstack((frame, gradident))
        cv.imshow('add', add)
        if cv.waitKey(1) == 27:
            break
  • 相关阅读:
    一、flink架构模型
    每日看点
    argparse模块用法实例
    Python 牛刀小试
    spark 编程基础
    我想过的100种暴富机会
    hadoop大数据架构
    centOS7 ip 配置
    classNotFound异常的一个原因
    linux上部署java项目
  • 原文地址:https://www.cnblogs.com/CaiFengYuanXing/p/13775303.html
Copyright © 2011-2022 走看看