基于OpenCV的形态学操作(一):图片读取,尺寸调整,裁剪

一:OpenCV简介

OpenCV是一个计算机视觉库,其中包含了图像处理与图像识别等等算法。

现在我们要进行的图像的形态学操作均基于OpenCV进行。

二:安装与导入

2.1 安装

使用pip进行安装,命令如下:

pip install [--user] opencv-python

2.2 导入

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

 

你可能感兴趣的:(图像处理,图像分割,图像识别,OpenCV)