学好python,改变人生!
OpenCV(开源计算机视觉库)是一个非常强大的跨平台计算机视觉库,支持包括Python、C++、Java等在内的多种编程语言。它拥有广泛的模块,覆盖了从底层数字图像处理到高级的机器视觉任务。
下面是一个用opencv进行产品边缘检测的代码和效果
import cv2import numpy as np
defdetect_defects(image_path):# 读取图像 image = cv2.imread(image_path, cv2.IMREAD_COLOR)if image isNone: print("无法读取图片")return
# 转换为灰度图像 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 应用高斯模糊以减少噪声 blurred = cv2.GaussianBlur(gray, (5, 5), 0)
# 使用边缘检测算法检测缺陷 edges = cv2.Canny(blurred, 50, 150)
# 使用膨胀和腐蚀操作来填充缺陷区域 dilated = cv2.dilate(edges, None, iterations=1) eroded = cv2.erode(dilated, None, iterations=1)
# 找到缺陷轮廓 contours, _ = cv2.findContours(eroded, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
# 绘制缺陷区域 defect_image = image.copy() cv2.drawContours(defect_image, contours, -1, (0, 0, 255), 2)
# 显示原始图像和缺陷检测结果 cv2.imshow('Original Image', image) cv2.imshow('Defect Detection', defect_image) cv2.waitKey(0) cv2.destroyAllWindows()
# 使用示例detect_defects(r'C:\Users\pytest\test2.jpg')
OpenCV中的核心类和函数
核心功能模块(Core Functionality)
cv2.imread(): 读取图像文件。cv2.imshow(): 在窗口中显示图像。cv2.imwrite(): 将图像保存到文件。cv2.cvtColor(): 将图像从一种颜色空间转换到另一种颜色空间,例如BGR到灰度或RGB。cv2.resize(): 改变图像的大小。cv2.flip(): 翻转图像。cv2.merge(): 将多个单通道图像合并为一个多通道图像。cv2.split(): 将多通道图像分离成多个单通道图像。
图像处理模块(Image Processing)
cv2.blur(): 对图像进行模糊处理。cv2.GaussianBlur(): 使用高斯滤波器模糊图像。cv2.medianBlur(): 使用中值滤波器去噪。cv2.canny(): Canny边缘检测。cv2.dilate(): 膨胀操作,常用于形态学转换。cv2.erode(): 腐蚀操作,常用于形态学转换。cv2.threshold(): 应用固定阈值到图像。cv2.adaptiveThreshold(): 应用自适应阈值到图像。
特征检测模块(Feature Detection)
cv2.goodFeaturesToTrack(): 检测图像中的角点。cv2.HoughLines(): 霍夫线变换,用于检测图像中的直线。cv2.HoughCircles(): 霍夫圆变换,用于检测图像中的圆。
视频分析模块(Video Analysis)
cv2.VideoCapture(): 从视频文件或摄像头捕获视频。cv2.VideoWriter(): 将视频流写入文件。cv2.calcOpticalFlowPyrLK(): Lucas-Kanade光流算法,用于跟踪图像中的点。
OBJ对象识别模块(Object Detection)
cv2.CascadeClassifier(): 用于加载级联分类器,用于面部和眼睛检测等。cv2.drawContours(): 绘制图像中的轮廓。cv2.findContours(): 检测图像中的轮廓。
机器学习模块(Machine Learning)
cv2.ml.SVM(): 支持向量机,用于分类和回归。cv2.ml.LogisticRegression(): 逻辑回归,用于分类。cv2.ml.NormalBayesClassifier(): 朴素贝叶斯分类器。
深度学习模块(Deep Learning)
cv2.dnn.readNetFromTensorflow(): 从TensorFlow模型中读取深度神经网络。cv2.dnn.readNetFromCaffe(): 从Caffe模型中读取深度神经网络。cv2.dnn.blobFromImage(): 从图像创建一个blob,用于深度学习模型输入。
2D绘图功能
cv2.line(): 在图像上画线。cv2.circle(): 在图像上画圆。cv2.rectangle(): 在图像上画矩形。cv2.putText(): 在图像上添加文本。
3D重建模块(3D Reconstruction)
cv2.triangulatePoints(): 三角测量,用于立体视觉和3D重建。_CALIB相机标定和3D重建(Camera Calibration and 3D Reconstruction)cv2.calibrateCamera(): 相机标定,用于获取相机内参和畸变系数。cv2.initUndistortRectifyMap(): 用于畸变校正。
特征匹配模块(Feature Matching)
cv2.BFMatcher(): 布鲁姆过滤器匹配器,用于特征匹配。cv2.FlannBasedMatcher(): FLANN匹配器,用于特征匹配。这些是OpenCV库中的一些关键功能和函数。实际应用包括但不限于面部识别、物体跟踪、图像分割、机器人视觉、自动驾驶汽车、移动设备上的图像处理应用程序、医学图像分析等。由于OpenCV库非常庞大和活跃,它不断更新,新功能和模块可能会随时添加。
|