OpenCV是一个计算机视觉库,其中包含了图像处理与图像识别等等算法。
现在我们要进行的图像的形态学操作均基于OpenCV进行。
使用pip进行安装,命令如下:
pip install [--user] opencv-python
import cv2;
在这里需要注意的是cv2对彩色图像的读取是以BGR格式读取的,而matplotlib.pyplot.imshow的显示是以RGB格式显示的,因此很多结合matplot和cv2初次使用的人都会出现有色差问题。
好了,现在直接上代码吧,图像读取部分允许多中读取方式:灰度图、RGB、绿\红\蓝单一通道
import cv2;
import numpy as np;
# resize
def resize(img,x=600,y=400):
# img = cv2.resize(img,None,fx=size,fy=size,interpolation=cv2.INTER_LINEAR);
# 该形式表示为尺寸调整为原尺寸(x,y)的(fx*x,fy*y)
img = cv2.resize(img,(x,y),interpolation=cv2.INTER_AREA);
# 该形式则是调整到直接给出的尺寸(x,y)
return img;
def cut(img,xsize,ysize):
# 裁剪到感兴趣区域
# size=(min,max)
img = img[ysize[0]:ysize[1],xsize[0]:xsize[1]];
# 读取图片,返回RGB模式图
def imread(filename,*,flags=None,channel=None):
# cv2.imread(filename,flags) flags:0:gray level 1:colormap,BGR: [blue,green,red]
if flags is None:
img = cv2.imread(filename); # 读取BGR格式
if channel is None:
img = img[:,:,[2,1,0]]; # 转换成RGB格式
elif channel == 'red': # 红色通道
img = img[:,:,2];
elif channel == 'green': # 绿色通道
img = img[:,:,1];
elif channel == 'blue': # 蓝色通道
img = img[:,:,0];
else:
img = cv2.imread(filename,flags=flags);
return img;
图片的显示可以有多种方式:
基于cv2的,基于matplotlib的:
cv2.imshow() :以BGR格式显示
plt.imshow():以RGB格式显示
import cv2;
import matplotlib.pyplot as plt;
img=cv2.imread('filename',flags=0); # 以灰度图读取
# 使用cv2显示图片
cv2.imshow('window_fig_name',img);
cv2.waitKey();
# 使用matplotlib
plt.imshow(img,'gray'); #以灰度图显示
plt.title('title');
plt.show();