Opencv-Python 图像

目标

在这里你将学会这样读入一副图像,怎么样显示一副图像,以及如何保存一副图像

你将学习如下函数:cv2.imread(), cv2.imshow(), cv2.imwrite()

如果你愿意的话,我会教你如何使用Matplotlib显示一副图片

 

读入图像

使用函数cv2.imread()读入图像。

第一个参数是这幅图像应该在此程序的工作路径,或者给函数提供完整路径

第二个参数是告诉函数应该如何读取这幅图片

cv2.IMREAD_COLOR:读入一副彩色图像。图像的透明度也会被忽略,这是默认参数

cv2.IMREAD_GRAYSCALE:以灰度模式读入图像

cv2.IMREAD_UNCHANGED:读入一副图像,并且包括图像的alpha通道

import numpy as np
import cv2

# cv2.IMREAD_COLOR # 读入一副彩色图像,图像的透明度会被忽略,这是默认参数 -1
# cv2.IMREAD_GRAYSCALE #以灰度模式读入图像 0
# cv2.IMREAD_UNCHANGED #读入一副图像,并且包括图像的alpha通道 1
img = cv2.imread('timg.jpg', 0)

警告: 就算图片的路径是错误的,Opencv也不会提醒你,但是但你使用命令print(img)的时候得到的结果是None.

 

显示图像

使用函数cv2.imshow()显示图像,窗口会自动调整Wie图像大小,第一个参数是窗口的命令,其次才是我们的图像,你可以创建多个窗口,只要你喜欢,但是必须给他们不同的名字

cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

展示效果:

 

cv2.waitKey()是一个键盘绑定函数。需要制定的是它的时间尺度是毫秒级。函数等待特定的几毫秒,看是否有键盘输入。在特定的几毫秒之内,如果按下任意键,这个

函数会返回按键的ASCII码值,程序将会继续运行。如果没有键盘输入,返回值为-1,如果我们设置的这个函数的参数为0,那它将会无限的等待键盘输入。它也可以被

用来检测特定键盘是否被按下。它也可以被用来检测特定键是否被按下,例如按键a是否被按下,后面我们可以接着讨论。

cv2.destoryAllWindows()可以轻易的删除任何我们建立的窗口。如果你想删除特定的窗口可以使用cv2.destoryAllWindow(),在括号内输入你想删除的窗口名。

建议:一种特殊的情况是,你也可以先创建一个窗口,之后再加载图像。这种情况下,你可以决定窗口是否可以调整大小。使用到的函数是cv2.namedWindow().

初始设定函数标签是cv2.WINDOW_AUTOSIE.但是如果你把标签改为cv2.WINDOW_NORMAL,你就可以调整窗口大小了。当图像维度太大,或者要添加轨迹条的时候

调整窗口大小将会很有用。

代码如下:

import cv2

img = cv2.imread('timg.jpg', 0)
cv2.namedWindow('image',cv2.WINDOW_NORMAL)
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyWindow('image')
# cv2.destroyAllWindows()

 

保存图像

下面的程序将会加载出来一个灰度图,显示图片, 按下's'键后保存后退出,或者是按下ESC键盘退出不保存

import cv2

img = cv2.imread('timg.jpg', 0)
cv2.namedWindow('image',cv2.WINDOW_NORMAL)
cv2.imshow('image', img)
key = cv2.waitKey() #默认是0,0的话会一直无限等下去; 如果不是0的话,相当于传入等待参数,最多等待多久,毫秒, 例如3000,3秒,如果在3秒内按下键的话,则key就是对应的键ASCII值,否则-1
if key == ord('s'): #等待按下s键
    cv2.imwrite('test_back.jpg', img) #保存的图片路径,img对象
    cv2.destroyAllWindows()
    print('按下S键')
elif key == 27: #等待按下ESC键
    cv2.destroyAllWindows()
    print('按下ESC键')
else:
    print('其他键')
# cv2.destroyWindow('image')

 

 警告:如果你用的是64位系统,你需要将key = cv2.waitKey(0)改为key = cv2.waitKey(0)&OxFF

 

使用Matplotlib

Matplotlib是Python的一个绘图库,里面有各种各样的绘图方法,之后会陆续了解到。现在,可以学习怎么样用Matplotlib显示图像,你可以放大图像,保存它等。

import cv2
from matplotlib import pyplot as plt

img = cv2.imread('timg.jpg', 1)
plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([]), plt.yticks([]) # to hide tick values on X and Y axis
plt.show()

显示如下:

 

posted @ 2020-12-20 20:19  风不再来  阅读(178)  评论(0编辑  收藏  举报