一、安装Anaconda OpenCV
首先请到Anaconda官网https://www.anaconda.com/products/individual 下载适合本机的Anaconda。
在Anaconda Prompt中输入以下命令安装:
conda create -n opencv python=3.7
conda activate opencv
conda install -c conda-forge opencv
验证OpenCV安装是否完整可用的代码如下:
import cv2
import numpy as np
img = cv2.imread('test.jpg', 0)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
二、打开图像文件
可以通过以下代码打开图片文件:
import cv2
img = cv2.imread('test.jpg')
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
其中,“test.jpg” 为图片文件名称
三、在图像中绘制形状
可以通过以下代码绘制矩形、圆形等图形:
import numpy as np
import cv2
img = cv2.imread("test.jpg")
cv2.rectangle(img, (384, 0), (510, 128), (0, 0, 255))
cv2.circle(img, (447, 63), 63, (0, 255, 0))
cv2.imshow("image", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
此代码将在图像中添加红色矩形和绿色圆圈
四、调整图像大小与缩放
可以使用以下代码进行图像大小和缩放的调整:
import cv2
img = cv2.imread('test.jpg')
res = cv2.resize(img, None, fx=2, fy=2, interpolation=cv2.INTER_CUBIC)
cv2.imshow('image', img)
cv2.imshow('res', res)
cv2.waitKey(0)
cv2.destroyAllWindows()
在此代码中,我们将原始图像按照2倍大小进行放大,并通过cv2.imshow()函数展示。
五、旋转图像
可以通过以下代码旋转图像:
import cv2
import numpy as np
img = cv2.imread('test.jpg', 0)
rows, cols = img.shape
M = cv2.getRotationMatrix2D((cols/2,rows/2),45,1)
dst = cv2.warpAffine(img,M,(cols,rows))
cv2.imshow('img',dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
此代码将原始图像顺时针旋转45度。
六、滤波和阈值处理
可以使用以下代码对图像进行滤波和二值化:
import cv2
import numpy as np
img = cv2.imread('test.jpg',0)
# 滤波处理
img = cv2.medianBlur(img,5)
# 二值化处理
ret,th1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY)
th2 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_MEAN_C,\
cv2.THRESH_BINARY,11,2)
th3 = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,\
cv2.THRESH_BINARY,11,2)
# 展示效果
cv2.imshow('image',img)
cv2.imshow('th1',th1)
cv2.imshow('th2',th2)
cv2.imshow('th3',th3)
cv2.waitKey(0)
cv2.destroyAllWindows()
此代码将原始图像进行非线性滤波,并将其转换为3种不同的阈值处理。
七、形态学转换
可以使用以下代码对图像进行形态学转换:
import cv2
import numpy as np
img = cv2.imread('j.png',0)
kernel = np.ones((5,5),np.uint8)
dilation = cv2.dilate(img,kernel,iterations = 1)
erosion = cv2.erode(img,kernel,iterations = 2)
opening = cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)
closing = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)
cv2.imshow('img',img)
cv2.imshow('dilation',dilation)
cv2.imshow('erosion',erosion)
cv2.imshow('opening', opening)
cv2.imshow('closing', closing)
cv2.waitKey(0)
cv2.destroyAllWindows()
此代码将原始图像进行膨胀、腐蚀、开运算和闭运算等形态学操作。