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()

 

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值