图像基础操作——读取、显示、保存

一幅被定义为二维函数f(x,y)坐标的图像,亮度为任何坐标(x,y)处的振幅。当f的x,y和振幅都是有限且离散的量时,称为数字图像。

一、读取图像:imread(‘filename’)

filename中不包含任何路径信息时,imread会从当前目录中寻找并读取图像文件。若当前目录中没有所需要的文件,则会尝试在父目录下搜寻。

src = cv.imread('D:/OpenCV/opencv-python/coins.png')

二·、显示图像:imshow(winname, mat)

@param winname Name of the window.
@param mat Image to be shown.
cv.imshow('input image', src)

三、保存图像:imwrite(filename, img, params=None)

filename为保存的路径,若不包含路径信息,则imwrite会将文件保存到当前的工作目录中。
img为需要保存的文件名。
params为一些可选参数,比如图片为哪种格式。

cv.imwrite('D:/OpenCV/opencv-python/coins1.png', src)

四、waitkey

  1. waitKey():在一个给定的时间内(单位ms)等待用户按键触发;如果用户没有按下:键,则继续等待,一直处在循环中。
  2. 下面程序中OpenCv等待用户触发事件,等待时间为50ms,如果在这个时间段内, 用户按下ESC(ASCII码为27),则跳出循环,否则,则继续循环。
c = cv.waitKey(50)
if c == 27:
   break
  1. 如果设置waitKey(0),则表示程序会无限制的等待用户的按键事件

五、代码展示

 import cv2 as cv
import numpy as np


# 读取视频
def video_demo():
    capture = cv.VideoCapture('D:/OpenCV/20220305_11.mp4')  # 中间加入视频文件可以打开
    while True:
        ret, frame = capture.read()
        """
        src:输入数组。
        DST:输出数组的大小和类型与src相同。
        flipCode:指定如何翻转数组的标志;0表示绕x轴翻转,而正值(例如,1)表示绕y轴翻转。负值(例如,-1)表示在两个轴上翻转。
        """
        frame = cv.flip(frame, 1)
        cv.imshow('video', frame)
        c = cv.waitKey(1)
        if c == 27:
            break


# 读取图像
def get_image_info(image):
    """
    type(object_or_name, bases, dict)
    type(object) -> the object's type
    type(name, bases, dict) -> a new type
    """
    print(type(image))
    # 返回的是图像的行数,列数,色彩通道数
    print(image.shape)
    # 数组元素的总个数,等于shape属性中元组元素的乘积
    print(image.size)
    # type:返回数据结构类型(list、dict、numpy.ndarray等)
    # dtype:返回数据元素的数据类型(int、float等)
    print(image.dtype)
    # array 模块就是数组,可以存放放一组相同类型的数字;array(‘b’)创建出的数组就只能存放一个字节大小的整数,范围从 -128到127
    pixel_data = np.array(image)  # numpy的值
    print(pixel_data)


print("-------Hello Python-------")
src = cv.imread('D:/OpenCV/opencv-python/coins.png')
"""
namedWindow(winname[, flags]) -> None
winname:窗口的名字
flags:窗口类型,CV_WINDOW_AUTOSIZE表明窗口大小自动适应图片大小,并且不可手动更改。 CV_WINDOW_NORMAL表明窗口可以被随意拖动改变大小。
"""
cv.namedWindow('input image', cv.WINDOW_AUTOSIZE)
"""
@param winname Name of the window.
@param mat Image to be shown.
"""
cv.imshow('input image', src)
get_image_info(src)
# 写入图像,保存起来
gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)
cv.imwrite('D:/OpenCV/opencv-python/coins1.png', src)

video_demo()
cv.waitKey(0)
# 释放掉变量所占用的内存
cv.destroyAllWindows()
print('Hi,Python!')

你可能感兴趣的:(python,opencv,图像处理)