数字图像处理
读取图像
import cv2 as cv //opencv读取的格式是BGR
import numpy as np
img = cv.imread("image/lenna.jpg")
print(img)
颜色通道提取
import cv2 as cv
import numpy as np
img = cv.imread("image/lenna.jpg")
b,g,r = cv.split(img)
print(b)
img = cv.merge((b,g,r)) //将三个通道融合
图像权重相加
import cv2 as cv
import numpy as np
img1 = cv.imread("image/hy.jpg")
img2 = cv.imread("image/ok.jpg")
img1 = cv.resize(img1,(256,356))
img2 = cv.resize(img2,(256,356))
res = cv.addWeighted(img1,0.4,img2,0.6,0)
cv.imshow("out",res)
cv.waitKey(0)
腐蚀 膨胀运算
开运算 闭运算
图像锐化处理 (提取轮廓)
import cv2
import numpy as np
import matplotlib.pyplot as plt
kernel = np.ones((10,10),np.uint8)
src = cv2.imread("image/hy.jpg")
sobelX = cv2.Sobel(src[:,:,1], cv2.CV_16S, 1, 0)
sobelY = cv2.Sobel(src[:,:,1], cv2.CV_16S, 0, 1)
sobelXY = cv2.Sobel(src[:,:,1], cv2.CV_16S, 1, 1)
sobelXY = cv2.convertScaleAbs(sobelXY)
sobelX = cv2.convertScaleAbs(sobelX)
sobelY = cv2.convertScaleAbs(sobelY)
sobelXY = cv2.addWeighted(sobelX, 0.5, sobelY, 0.5, 0)
plt.subplot(131), plt.title('sobel X')
plt.imshow(sobelX, cmap='gray')
plt.subplot(132), plt.title('sobel Y')
plt.imshow(sobelY, cmap='gray')
plt.subplot(133), plt.title('sobel XY')
plt.imshow(sobelXY, cmap='gray')
plt.show()
上面的是Sobel算子 lapkacian算子等用法基本上差不多
图像平滑处理
剩余的就是边缘检测 轮廓提取