您的位置:

Anaconda优秀的OpenCV应用

一、安装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()

此代码将原始图像进行膨胀、腐蚀、开运算和闭运算等形态学操作。