OpenCV-Python——第1章:图像的读入、显示与保存

读入图像

cv2.imread():

图像变量 = cv2.imread(‘图片路径’,第二参数)

第二参数 = cv2.IMREAD_COLOR 或者 > 0:           读入一副彩色图像。图像的α通道会被忽略, 这是默认参数。

第二参数 = cv2.IMREAD_GRAYSCALE 或者 = 0:    以灰度模式读入图像

第二参数 = cv2.IMREAD_UNCHANGED 或者 < 0: 读入一幅图像,并且包括图像的α通道(透明度)

另外flag在-1~3有宏定义:

第二参数 =-1,8位深度,原通道(有透明度)

第二参数 = 0,8位深度,1通道

第二参数 = 1,   8位深度,3通道

第二参数 = 2,原深度,  1通道

第二参数 = 3,   原深度,  3通道

需要额外注意的是OpenCV中的颜色通道顺序是BGR,而不是RGB

 

显示图像

cv.imshow('窗口名', 图像变量):只要窗口名不重复就可以一直创建

cv.waitKey(ms) : 是一个键盘绑定的函数,按下任何键则返回那个键的ASCII码,否则返回-1,函数的参数用于指定函数运行多少毫秒,如果参数为0则会一直检测

cv2.destroyWindow('窗口名'):删除特定的窗口

cv2.destroyAllWindows():删除我们建立的所有窗口

 

当然你也可以先建一个空窗口再加载图像:

cv2.namedWindow(‘窗口名’,flag):

对于第二参数

flag = cv2.WINDOW_AUTOSIZE  窗口大小和图像大小一致

flag = cv2.WINDOW_NORMAL   窗口大小可调

cv2.resizeWindow(‘窗口名’, 宽, 高): 调整窗口大小

当出现下面的错误时:

cv2.error: OpenCV(3.4.5) C:\projects\opencv\python\opencv\modules\highgui\src\window.cpp:358: 
error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'

表示在图片读入时出现错误,图像变量为空,有可能是文件名错误或者地址错误造成的

 

保存图像

cv2.imwrite('图像文件地址',图像变量) :将图像变量保存到指定位置的指定文件中

 

最后给一个结合所有函数的例子:

import cv2
import numpy as np
from matplotlib import pyplot as plt

for i in range(-1, 4):
    img = cv2.imread('test2.png', i) # 选择自己的图片
    WindowName = 'image' + str(i) # 使每个窗口名不同
    cv2.namedWindow(WindowName, cv2.WINDOW_AUTOSIZE)  # 建立空窗口
    cv2.imshow(WindowName, img)
    # cv2.resizeWindow(WindowName, 500, 312) # 定义窗口大小
    k = cv2.waitKey(0)  # 始终检测键盘
    if k == 27:  # 按ESC退出
        cv2.destroyAllWindows()
    elif k == ord('s'):  # 按s保存
        cv2.imwrite(WindowName+'.png', img)
        cv2.destroyAllWindows()
    elif k == ord('p'):  # 按p用matplotlib打开
        rgb =  cv2.cvtColor(img, cv2.COLOR_BGR2RGB)  # 将opencv用的的BGR通道顺序变为plt用的RGB顺序
        plt.imshow(rgb)
        plt.xticks([]), plt.yticks([])
        plt.show()

 

你可能感兴趣的:(—OpenCV)