OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它包含了许多常用的图像处理和分析功能。以下是一些OpenCV中常用的接口和功能:
- 图像读取与保存:
cv2.imread(filename, flags=cv2.IMREAD_COLOR)
: 读取图像文件。cv2.imwrite(filename, img)
: 保存图像到文件。cv2.imshow(winname, mat)
: 在窗口中显示图像。cv2.waitKey(delay=0)
: 等待键盘输入。cv2.destroyAllWindows()
: 关闭所有OpenCV窗口。
- 图像基本操作:
cv2.resize(src, dsize, interpolation=cv2.INTER_LINEAR)
: 调整图像大小。cv2.cvtColor(src, code, dst=None, dstCn=None)
: 图像颜色空间转换,如BGR到灰度图(cv2.COLOR_BGR2GRAY
)。cv2.flip(src, flipCode=0)
: 翻转图像,水平或垂直。cv2.rotate(src, rotateCode)
: 旋转图像90度,180度,270度等。
- 图像滤波与增强:
cv2.blur(src, ksize, dst=None, anchor=None, borderType=None)
: 均值滤波。cv2.GaussianBlur(src, ksize, sigmaX, dst=None, sigmaY=0, borderType=cv2.BORDER_DEFAULT)
: 高斯滤波。cv2.medianBlur(src, ksize)
: 中值滤波。cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace, dst=None, borderType=cv2.BORDER_DEFAULT)
: 双边滤波。cv2.equalizeHist(src, dst=None)
: 直方图均衡化。
- 特征检测与描述:
cv2.Canny(image, threshold1, threshold2, edges=None, apertureSize=3, L2gradient=False)
: Canny边缘检测。cv2.findContours(image, mode, method[, contours[, hierarchy[, offset]]])
: 查找轮廓。cv2.HoughLines(image, rho, theta, threshold[, lines[, srn[, stn[, min_theta[, max_theta]]]]])
:霍夫线变换。cv2.HoughLinesP(image, rho, theta, threshold[, lines[, minLineLength[, maxLineGap]]])
: 霍夫线变换的概率版本。- SIFT, SURF, ORB等特征检测和描述符算法。
- 图像变换:
cv2.warpAffine(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]])
: 仿射变换。cv2.warpPerspective(src, M, dsize[, dst[, flags[, borderMode[, borderValue]]]])
: 透视变换。cv2.getPerspectiveTransform(src, dst)
: 计算透视变换矩阵。cv2.getAffineTransform(src, dst)
: 计算仿射变换矩阵。
- 视频处理:
cv2.VideoCapture(filename)
: 打开视频文件或摄像头。cap.read()
: 读取视频的下一帧。cv2.VideoWriter(filename, fourcc, fps, frameSize[, isColor])
: 创建视频写入对象。out.write(frame)
: 将帧写入视频文件。
- 相机标定与3D重建:
- 相机标定函数,如
cv2.calibrateCamera()
。 - 3D点重建函数,如
cv2.triangulatePoints()
。
- 相机标定函数,如
- 其他功能:
- 图像处理与分析的各种函数,如形态学操作、轮廓分析、直方图比较等。
- 机器学习模块,包含SVM、KNN、决策树等分类器。
- 面部和对象识别功能,如Haar级联分类器和LBP级联分类器。
- 光流法、背景减除、运动估计等视频分析功能。
这只是OpenCV功能的一个概览,实际上OpenCV提供了非常丰富的接口和算法,可以满足各种计算机视觉任务的需求。