• OpenCV---图像加载与保存


    一:获取图像的信息

    什么是图像:

    结构化存储的数据信息
    图像属性:
    -通道数目
    -高与宽
    -像素数据
    -位图深度


    import cv2 as cv def get_image_info(image): print(type(image)) #<class 'numpy.ndarray'> numpy类型数组 print(image.shape) #打印图像的高度,宽度,通道数(608, 343, 3)3个方向 print(image.size) #打印图像的大小625632==>608*343*3 print(image.dtype) #dtype:每个像素点有3个通道,每个通道所占的位数:无符号的int8位uint8 src = cv.imread("./1.png") #读取图片 get_image_info(src) cv.namedWindow("input image",cv.WINDOW_AUTOSIZE) #创建GUI窗口,形式为自适应 cv.imshow("input image",src) #通过名字将图像和窗口联系 cv.waitKey(0) #等待用户操作,里面等待参数是毫秒,我们填写0,代表是永远,等待用户操作 cv.destroyAllWindows()

    二:读取视频,打开摄像头

    import cv2 as cv
    import numpy as np
    
    def video_demo():
        capture = cv.VideoCapture(0)    #这句话打开摄像头捕获图像   opencv中通过VideoCaptrue类对视频进行读取操作以及调用摄像头
        while True:
            ret,frame = capture.read()  #ret    frame:视频中的每一帧
            frame = cv.flip(frame,1)    #将视频帧左右调换,回正,镜像调换
            cv.imshow("video",frame)    #将视频中每一帧显示出来
            c = cv.waitKey(50)          #50毫秒关闭当前捕获的图像,显示下一个
            # print(c)    #c是用户响应的按键
            if c == 27:                 #27是ESC键的ASCII码值
                break
    
    def get_image_info(image):
        print(type(image))  #<class 'numpy.ndarray'>    numpy类型数组
        print(image.shape)  #打印图像的高度,宽度,通道数(608, 343, 3)3个方向
        print(image.size)   #打印图像的大小625632==>608*343*3
        print(image.dtype)  #dtype:每个像素点有3个通道,每个通道所占的位数:无符号的int8位uint8
        pixel_data = np.array(image) #获取了所有的像素数据
        print(pixel_data)
    
    src = cv.imread("./1.png")  #读取图片
    get_image_info(src)
    cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)    #创建GUI窗口,形式为自适应
    cv.imshow("input image",src)    #通过名字将图像和窗口联系
    video_demo()    #下面的waitKey就是等待图像和视频两个操作
    cv.waitKey(0)   #等待用户操作,里面等待参数是毫秒,我们填写0,代表是永远,等待用户操作
    cv.destroyAllWindows()  #销毁所有窗口

    补充:VideoCapture

    VideoCapture打开视频流,视频文件,VideoCapture(0)--->0代表摄像头,若有多个摄像头,按照顺序0,1,2...
    也可以打开视频文件,写入视频路径,然后循环read读取数据帧即可
    读取视频内容,对每一帧图像进行处理,是要对内容进行分析,对象检测,对象追踪,等等。OpenCV读出来的视频都是没有声音的,而且视频不易过大
    音视频的编码解码是MPEG

    三:图像保存(修改属性)

    import cv2 as cv
    import numpy as np
    
    def video_demo():
        capture = cv.VideoCapture(0)    #这句话打开摄像头捕获图像   opencv中通过VideoCaptrue类对视频进行读取操作以及调用摄像头
        while True:
            ret,frame = capture.read()  #ret    frame:视频中的每一帧
            frame = cv.flip(frame,1)    #将视频帧左右调换,回正,镜像调换
            cv.imshow("video",frame)    #将视频中每一帧显示出来
            c = cv.waitKey(50)          #50毫秒关闭当前捕获的图像,显示下一个
            # print(c)    #c是用户响应的按键
            if c == 27:                 #27是ESC键的ASCII码值
                break
    
    def get_image_info(image):
        print(type(image))  #<class 'numpy.ndarray'>    numpy类型数组
        print(image.shape)  #打印图像的高度,宽度,通道数(608, 343, 3)3个方向
        print(image.size)   #打印图像的大小625632==>608*343*3
        print(image.dtype)  #dtype:每个像素点有3个通道,每个通道所占的位数:无符号的int8位uint8
        pixel_data = np.array(image) #获取了所有的像素数据
        print(pixel_data)
    
    src = cv.imread("./1.png")  #读取图片
    get_image_info(src)
    cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)    #创建GUI窗口,形式为自适应
    cv.imshow("input image",src)    #通过名字将图像和窗口联系
    # video_demo()    #下面的waitKey就是等待图像和视频两个操作
    gray = cv.cvtColor(src,cv.COLOR_BGR2GRAY)  #获取一张灰度图像
    cv.imwrite("./save.png",gray)    #图像保存,数据写入
    cv.waitKey(0)   #等待用户操作,里面等待参数是毫秒,我们填写0,代表是永远,等待用户操作
    cv.destroyAllWindows()  #销毁所有窗口
  • 相关阅读:
    win7游戏窗口设置
    怎么在 html 中 动态的加载一个 script
    nodejs+express +jade模板引擎 新建项目
    将大数据利用 BCP 导出SqlServer数据到CSV
    产品经理如何赢得开发人员的尊重和支持?-摘自infoq
    Microsoft TFS 如何显示在Windows 的上下文菜单中
    使用PowerDesigner 设计SQL Server 数据库
    sqlserver 删掉日志文件ldf以后 救命语句
    SqlServer修改数据库文件及日志文件存放位置
    快速备份sqlserver2005以上版本数据库的方法-摘自网络
  • 原文地址:https://www.cnblogs.com/ssyfj/p/9249008.html
Copyright © 2020-2023  润新知