OpenCV(开源计算机视觉库)是一个广泛应用于图像和视频处理的Python库。以下是一些主要的图像处理知识点汇总和相应的代码示例说明:
1. 图像读取与显示
-
读取图像 :使用
cv2.imread()
函数从文件中加载图像。pythonimport cv2 # 读取图像 img = cv2.imread('image.jpg', cv2.IMREAD_COLOR) # IMREAD_COLOR表示以BGR格式读取,还有IMREAD_GRAYSCALE等选项 if img is not None: # 检查是否成功读取图像 # 显示图像 cv2.imshow('Image', img) cv2.waitKey(0) # 等待用户按键关闭窗口 cv2.destroyAllWindows() # 关闭所有窗口
2. 图像写入
-
保存图像 :使用
cv2.imwrite()
函数将图像矩阵保存到磁盘。pythoncv2.imwrite('output.jpg', img) # 将img矩阵内容保存为'output.jpg'
3. 图像基本操作
-
裁剪图像 :通过numpy切片操作或
cv2.resize()
函数裁剪图像的一部分。pythoncropped_img = img[50:200, 100:300] # 切片裁剪
-
调整图像大小:
pythonresized_img = cv2.resize(img, (new_width, new_height), interpolation=cv2.INTER_LINEAR)
4. 颜色空间转换
-
灰度图像转换:
pythongray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
-
RGB转BGR 或其他颜色空间转换。
5. 图像滤波器
-
均值滤波:减少图像噪声。
pythonblurred_img = cv2.blur(img, (5, 5)) # 使用5x5大小的核进行模糊
-
高斯滤波:
pythongaussian_blurred_img = cv2.GaussianBlur(img, (5, 5), 0)
6. 边缘检测
-
Canny边缘检测:
pythonedges = cv2.Canny(img, threshold1, threshold2)
7. 形态学操作
-
膨胀与腐蚀:
pythonkernel = np.ones((3, 3), np.uint8) dilated_img = cv2.dilate(img, kernel, iterations=1) eroded_img = cv2.erode(img, kernel, iterations=1)
8. 直方图均衡化
-
改善图像对比度:
pythonequalized_img = cv2.equalizeHist(gray_img)
9. 对象检测
-
霍夫直线检测:
pythonlines = cv2.HoughLines(img, rho, theta, threshold)
-
轮廓查找:
pythoncontours, hierarchy = cv2.findContours(thresh_img, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
10. 视频处理
-
打开摄像头并读取视频流:
pythoncap = cv2.VideoCapture(0) # 打开默认摄像头 while True: ret, frame = cap.read() if ret: # 对frame进行处理... cv2.imshow('Video', frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows()