OpenCV---图像加载与保存

Posted ssyfj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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()  #销毁所有窗口

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

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()  #销毁所有窗口

 


以上是关于OpenCV---图像加载与保存的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV中原始图像加载与保存压缩技巧

opencv学习笔记opencv加载图像修改图像显示图像保存图像以及代码举例

OpenCV---图像加载与保存

OpenCV之加载修改保存图像

OpenCV之加载修改保存图像

openCV - 1. 加载修改保存图像