1直方图
#直方图--增强对比度 def equalHist_demo(image): gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) dst = cv.equalizeHist(gray) cv.imshow("equalHist_demo", dst) def clahe_demo(image): gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) clahe = cv.createCLAHE(clipLimit=5.0, tileGridSize=(8, 8)) dst = clahe.apply(gray) cv.imshow("clahe_demo", dst) #直方图投影--视频跟踪
2二值化
#二值化 import cv2 as cv import numpy as np def threshold_demo(image): gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) ret, binary = cv.threshold(gray, 127, 255, cv.THRESH_BINARY|cv.THRESH_OTSU)#OTSU计算阈值 print("threshold value %s"%ret) cv.imshow("binary", binary) def local_threshold(image): gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) binary = cv.adaptiveThreshold(gray, 255, cv.ADAPTIVE_THRESH_GAUSSIAN_C, cv.THRESH_BINARY, 25, 10) cv.imshow("binary", binary) def custom_threshold(image):#局部二值化 gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) h, w = gray.shape[:2] m = np.reshape(gray, [1, w*h]) mean = m.sum() / (w*h) print("mean : ", mean) ret, binary = cv.threshold(gray, mean, 255, cv.THRESH_BINARY) cv.imshow("binary", binary) print("--------- Python OpenCV Tutorial ---------") src = cv.imread("D:/vcprojects/images/test.png") cv.namedWindow("input image", cv.WINDOW_AUTOSIZE) cv.imshow("input image", src) custom_threshold(src) cv.waitKey(0) cv.destroyAllWindows()
3图像梯度
#图像梯度 def lapalian_demo(image):#拉普拉斯算子 #dst = cv.Laplacian(image, cv.CV_32F) #lpls = cv.convertScaleAbs(dst) kernel = np.array([[1, 1, 1], [1, -8, 1], [1, 1, 1]]) dst = cv.filter2D(image, cv.CV_32F, kernel=kernel) lpls = cv.convertScaleAbs(dst) cv.imshow("lapalian_demo", lpls) def sobel_demo(image):#soble算子 grad_x = cv.Scharr(image, cv.CV_32F, 1, 0) grad_y = cv.Scharr(image, cv.CV_32F, 0, 1) gradx = cv.convertScaleAbs(grad_x) grady = cv.convertScaleAbs(grad_y) cv.imshow("gradient-x", gradx) cv.imshow("gradient-y", grady) gradxy = cv.addWeighted(gradx, 0.5, grady, 0.5, 0) cv.imshow("gradient", gradxy)
来源:https://www.cnblogs.com/wml2018/p/12181670.html