二十年前人类就有了黑客帝国这样的电影,如今人工智能再次风靡,未来何去何从。人工智能的时代,python的天下;python的天下,算法为王。

模块导入

import cv2  
import matplotlib.pyplot as plt
import numpy as np 
%matplotlib inline  
说明:
 # opencv读取的格式是BGR
 # %matplotlib inline的含义:官方给出的定义是:IPython有一组预先定义好的所谓的魔法函数(Magic Functions),你可以通过命令行的语法形式来访问它们。
 %matplotlib inline 用在Jupyter notebook中(代替plt.show()); PyCharm中不支持,在PyCharm中去掉这个即可(用plt.show()代替图像的显示)。
 魔法命令都以%或者%%开头,以%开头的成为行命令,%%开头的称为单元命令。行命令只对命令所在的行有效,而单元命令则必须出现在单元的第一行,对整个单元的代码进行处理。
 plt.plot(x,y_1) # 由于 %matplotlib inline 的存在,当输入plt.plot(x,y_1)后,不必再输入 plt.show(),图像将自动显示出来
 用在Jupyter notebook中具体作用是当你调用matplotlib.pyplot的绘图函数plot()进行绘图的时候,或者生成一个figure画布的时候,可以直接在你的python console里面生成图像。

图片读入

img_python=cv2.imread('python.jpg')
img_heikediguo=cv2.imread('heikediguo.jpg')
# cv2.imread(filename, flags)
 参数:
 filepath:读入imge的完整路径;
 flags:标志位,{cv2.IMREAD_COLOR, cv2.IMREAD_GRAYSCALE,cv2.IMREAD_UNCHANGED};
 cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道,可用1作为实参替代;
 cv2.IMREAD_GRAYSCALE:读入灰度图片,可用0作为实参替代;
 cv2.IMREAD_UNCHANGED:顾名思义,读入完整图片,包括alpha通道,可用-1作为实参替代;
 PS:alpha通道,又称A通道,是一个8位的灰度通道,该通道用256级灰度来记录图像中的透明度复信息,定义透明、不透明和半透明区域,其中黑表示全透明,白表示不透明,灰表示半透明。

获取图片的shape属性

img_python.shape

运行结果如下:
图1

img_heikediguo.shape

运行结果如下:
图2

说明:
print(img.shape)        # 参数-1为按原通道读入,不写的话默认读入三通道图片,例如(112,112,3),其含义分别是高、宽、通道数;
print(img.shape[0])     # 读入的时图片的高度height;
print(img.shape[1])     # 读入的时图片的宽度weight;
print(img.shape[2])     # 图像的通道数;
img.shape[ : 2] 表示取彩色图片的长、宽;
img.shape[ : 3] 则表示取彩色图片的长、宽、通道;
在矩阵中,[0]就表示行数,[1]则表示列数。

图片的显示

cv2.imshow('python',img_python)
cv2.waitKey(0)
cv2.destroyAllWindows()

运行结果:
图3

# 每次要显示一个图都写上面三行是比较麻烦,故将其放入一个函数当中,下面定义了cv_show这样一个函数
def cv_show(name,img):           
    cv2.imshow(name,img) 
    cv2.waitKey(0) 
    cv2.destroyAllWindows()
cv2.namedWindow('heikediguo',cv2.WINDOW_NORMAL)
cv_show('heikediguo',img_heikediguo)
# 这时就可以调用定义的cv_show()函数来显示图片。
# cv2.namedWindow(‘窗口标题’,默认参数)
(1)窗口大小可以改变:
cv2.namedWindow("image",cv2.WINDOW_NORMAL)或者cv2.namedWindow('image',cv2.WINDOW_GUI_NORMAL)
(2)窗口大小不可以改变:
cv2.namedWindow("image",cv2.WINDOW_AUTOSIZE)
(3)窗口大小自适应比例:
cv2.namedWindow("image",cv2.WINDOW_FREERATIO)
(4)窗口大小保持比例:
cv2.namedWindow("image",cv2.WINDOW_KEEPRATIO)    
(5)显示色彩变成暗色:
cv2.namedWindow('image',cv2.WINDOW_GUI_EXPANDED)
- cv2.imshow(‘窗口标题’,image),如果前面没有cv2.namedWindow,就自动先执行一个cv2.namedWindow()。窗口默认cv2.WINDOW_AUTOSIZE。
- 使用cv2.imshow()的时候,如果图片太大,会显示不全并且无法调整,因此在cv2.imshow()的前面加上这样的一个语句:cv2.namedWindow('image', 0),得到的图像框就可以自己调整大小,按住四个角会出来小箭头可以拉伸调整。

图片缩放

img_python = cv2.resize(img_python, (1680, 1050))
# 说明:
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐