一、配置环境
1、安装anaconda,本人安装的是Anaconda3-4.2.0;下载链接:https://www.anaconda.com/download/
2、安装numpy,进入安装目录的Lib\site-packages子目录,在cmd中输入命令pip install numpy
3、安装opencv,本人安装的是opencv3.3.0;先把opencv_python-3.3.0-cp35-cp35m-win_amd64.whl下载,放在在Lib\site-packages目录,下载链接http://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv;cmd中输入命令pip install opencv_python-3.3.0-cp35-cp35m-win_amd64.whl
4、在cmd输入python,进入python环境,输入import cv2,没有报错则表示安装成功。
二、opencv在python中的API使用
import cv2
import numpy as np
if __name__ == "__main__":
#从根目录读取图像
src = cv2.imread("1.jpg")
#灰度化
gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)
#二值化
ret,thresh = cv2.threshold(gray, 128, 255, cv2.THRESH_BINARY)
#canny边缘检测
canny = cv2.Canny(src, 50, 150, (3,3))
#sobel边缘检测
x = cv2.Sobel(gray, cv2.CV_16S, 1, 0)
y = cv2.Sobel(gray, cv2.CV_16S, 0, 1)
absX = cv2.convertScaleAbs(x)
absY = cv2.convertScaleAbs(y)
sobel = cv2.addWeighted(absX, 0.5, absY, 0.5, 0)
#gaussian滤波
gaussian = cv2.GaussianBlur(gray, (3,3), 0)
#box filter方框滤波
boxfilter = cv2.boxFilter(gray, -1, (5,5))
#均值滤波
blur = cv2.blur(gray, (5,5))
#中值滤波
median = cv2.medianBlur(gray, 5)
#双边滤波
bilateral = cv2.bilateralFilter(gray, 3, 140, 140)
#获取ROI区域
ROI_img = src[0:(0 + 30), 0:(0 + 100)]
src[0:(0 + 30), 0:(0 + 100)] = ROI_img
#分离颜色通道&多通道图像融合
blue, green, red = cv2.split(src)
merged_img = cv2.merge([blue, green, red])
#形态学运算
#定义kernel方法一
kernel = np.uint8(np.zeros((5,5)))
for i in range(5):
kernel[i, 2] = 1
kernel[2, i] = 1
#定义kernel方法二
element = cv2.getStructuringElement(cv2.MORPH_CROSS, (5,5))
eroded_img = cv2.erode(src, element)
dilated_img = cv2.dilate(src, element)
opening_img = cv2.morphologyEx(src, cv2.MORPH_OPEN, element)
closing_img = cv2.morphologyEx(src, cv2.MORPH_CLOSE, element)
#高斯金字塔&拉普拉斯金字塔
src1 = cv2.pyrDown(src) #gaussian金字塔
temp_src1 = cv2.pyrDown(src1)
temp = cv2.pyrUp(temp_src1)
src2 = src1 - temp #laplace金字塔
#resize()函数
rows, cols, channels = src.shape
resize_img = cv2.resize(src, (cols/2, rows/2), interpolation = cv2.INTER_LINEAR)
#显示图像
cv2.imshow("1", resize_img)
#延时
cv2.waitKey(0)