• Opencv-Python学习笔记(一)


    学习和研究计算机视觉,必然绕不开OpenCV。

    于是我下载了它的C++源码,用cmake编译遇到一些错误。

    然后结合网上一些帖子看源码看了好几天,发现有点不知从何处入手。

    于是准备从其python版本的使用来入门。参考书籍:"Learning OpenCV 3 Computer Vision with Python(Second Edition)"

    1. 基本IO

    1.1 读写图像文件

    IMREAD_ANYCOLOR = 4

    IMREAD_ANYDEPTH = 2

    IMREAD_COLOR = 1

    IMREAD_GRAYSCALE = 0

    IMREAD_LOAD_GDAL = 8

    IMREAD_UNCHANGED = -1

    import cv2
    # img = cv2.imread('xyc.jpg')
    grayImage = cv2.imread('xyc.jpg', cv2.IMREAD_GRAYSCALE)
    cv2.imwrite('xyc.jpg', grayImage)

    无论采用哪种模式,imread()函数都会删除所有alpha通道的信息(透明度)

    imwrite()函数要求图像为BGR格式或灰度格式,并且每个通道有一定的位,输出格式要支持这些通道。

    1.2 图像与原始字节之间的转换

    # numpy.random.randint(0, 256, 120000).reshape(300, 400)
    # urandom()Return a string of n random bytes suitable for cryptographic use
    # bytearray()方法返回一个新字节数组。这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256 randomByteArray = bytearray(os.urandom(120000))
    # Create an array flatNumpyArray = numpy.array(randomByteArray) grayImage = flatNumpyArray.reshape(300, 400) cv2.imwrite('RandomGray.png', grayImage) bgrImage = flatNumpyArray.reshape(100, 400, 3) cv2.imwrite('RandomColor.png', bgrImage)

    1.3 用numpy.array访问图像数据

    img.shape

    img.size

    img.dtype

    img.item(150, 120, 0)

    img.itemset((150, 120,0 ), 255)

    img[:, :, 1] = 0将所有G值设为零

    my_roi = img[0:100, 0:100]

    img[300:400, 300: 400] = my_roi

    1.4 视频文件的读写

    读取AVI文件的帧, 并采用YUV颜色编码写入另一帧

    videoCapture = cv2.VideoCapture('MyInputVid.avi')
    
    fps = videoCapture.get(cv2.CAP_PROP_FPS)
    
    size = (int(videoCapture.get(cv2.CAP_PROP_FRAME_WIDTH)),
    
                int(videoCapture.get(cv2.CAP_PROP_FRAME_HEIGHT)))
    
    videoWriter = cv2.VideoWriter('MyOutputvid', cv2.VideoWriter_fourcc('I', '4', '2', '0'), fps, size)
    
    success,frame = videoCapture.read()
    

    指定视频解编码器常用选项:

    cv2.VideoWriter_fourcc('I', '4', '2', '0')未压缩的YUV颜色编码,是4:2:0色度子采样。文件扩展名.avi

    cv2.VideoWriter_fourcc('P', 'I', 'M', '1') MPEG-1类型编码,文件扩展名.avi

    cv2.VideoWriter_fourcc('X', 'V', 'I', 'D') MPEG-4类型编码,文件扩展名.avi

    cv2.VideoWriter_fourcc('T', 'H', 'E', 'O') Ogg Vorbis, 文件扩展名为.ogv

    cv2.VideoWriter_fourcc('F', 'L', 'V', '1') Flash视频, 文件扩展名为.flv

    1.5 捕获摄像头的帧

    1.6 在窗口显示图像

    1.7 在窗口显示摄像头帧

    2. Cameo项目(人脸跟踪和图像处理)

  • 相关阅读:
    linux设置docker阿里云镜像
    RapidJSON使用代码片段
    从输入URL到浏览器显示页面发生了什么
    基于vue发布npm插件时 引入插件时 控制台报错“Cannot read property 'toLowerCase' of undefined”
    通过git、gitHub将本地代码上传至gitHub上
    360浏览器长时间不访问或卡顿时容易自动切换到兼容模式下
    Linux 系统目录结构
    Linux 系统启动过程
    The Best Place for Error Messages on Forms
    BEST PRACTICES FOR FORM DESIGN
  • 原文地址:https://www.cnblogs.com/jdbc2nju/p/9719562.html
Copyright © 2020-2023  润新知