OpenCV-python 常见用法 · 个人总结 ゝ一纸荒年。 2021-12-17 02:19 231阅读 0赞 今天给自己总结一下 python openCV 的一些常见用法。 包括 1. 显示原图 2. 显示灰度图 3. GRB通道分离 4. 坐标旋转 5. 重定义大小 6. 图像裁剪 7. 亮度增强 8. 直方图均衡 9. 滤波 10. 边缘检测 11. 角点检测 #coding: utf-8 import cv2 import numpy as np #原图显示 im = cv2.imread("star.jpg") cv2.imshow("pic.jpg", im) cv2.waitKey(0) #灰度值显示 gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY) cv2.imshow("gray.jpg", gray) cv2.waitKey(0) #BGR通道分离 (B, G, R) = cv2.split(im) cv2.imshow("Red", R) cv2.imshow("Green", G) cv2.imshow("Blue", B) cv2.waitKey(0) #坐标旋转 rows, cols, channel = im.shape M = cv2.getRotationMatrix2D(((cols-1)/2.0, (rows-1)/2.0), 90, 1) dst = cv2.warpAffine(im, M, (cols, rows)) cv2.imshow("dst", dst) dst = cv2.flip(im, 1) #水平翻转 dst = cv2.flip(im, 0) #垂直翻转 dst = cv2.flip(im, -1) #水平垂直翻转 cv2.waitKey(0) #resize res = cv2.resize(im, None, fx=2, fy=0.5, interpolation = cv2.INTER_CUBIC) cv2.imshow("res", res) cv2.waitKey(0) #图像裁剪 im1 = im[200:500, 300:600] #(y0:y1, x0:x1) cv2.imshow("im1", im1) cv2.waitKey(0) #亮度增强 res1 = np.uint8(np.clip(1.5*im,0,255)) res2 = np.uint8(np.clip(0.7*im,0,255)) tmp1 = np.hstack((im, res1, res2)) cv2.imshow("image", tmp1) cv2.waitKey(0) #暂时跳过饱和度、对比度、锐度增强 #直方图均衡 gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY) equalize = cv2.equalizeHist(gray) cv2.imshow('equalize', equalize) cv2.waitKey(0) #滤波 blur = cv2.blur(im, (5,5)) #均值平滑滤波 gauss = cv2.GaussianBlur(im, (5,5), 0) #高斯滤波 median = cv2.medianBlur(im, 5) #中值滤波 bilateral = cv2.bilateralFilter(im, 9, 5, 5) #双边滤波 filt = np.hstack([blur, gauss, median, bilateral]) cv2.imshow("filter", filt) cv2.waitKey(0) #边缘检测 gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY) _, binary = cv2.threshold(gray,127,255,cv2.THRESH_BINARY) contours, hierarchy = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) con = cv2.drawContours(im,contours,-1,(0,0,255),3) cv2.imshow("con", con) cv2.waitKey(0) #角点检测 gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY) dst = cv2.cornerHarris(gray,5,5,0.04) dst = cv2.dilate(dst,None)#图像膨胀 im[dst>0.01*dst.max()]=[0,0,255] cv2.imshow('dst',im) cv2.waitKey(0) cv2.destroyAllWindows()
还没有评论,来说两句吧...