以下是 OpenCV 中常用的 100 个 API,这些 API 涉及图像读取、处理、特征提取、绘图、视频处理等常见操作:
1. 图像操作
cv2.imread(filename, flags)
- 读取图像。cv2.imwrite(filename, img)
- 保存图像。cv2.imshow(window_name, img)
- 显示图像。cv2.cvtColor(src, code)
- 转换图像颜色空间。cv2.resize(src, dsize, fx, fy, interpolation)
- 缩放图像。cv2.rotate(src, rotateCode)
- 旋转图像。cv2.flip(src, flipCode)
- 翻转图像。cv2.split(src)
- 拆分通道。cv2.merge(mv)
- 合并通道。cv2.copyMakeBorder(src, top, bottom, left, right, borderType, value)
- 添加边框。
2. 图像变换
cv2.warpAffine(src, M, dsize)
- 仿射变换。cv2.getAffineTransform(srcPoints, dstPoints)
- 获取仿射变换矩阵。cv2.warpPerspective(src, M, dsize)
- 透视变换。cv2.getPerspectiveTransform(srcPoints, dstPoints)
- 获取透视变换矩阵。cv2.remap(src, map1, map2, interpolation)
- 重映射。cv2.resize(src, dsize)
- 调整大小。cv2.getRotationMatrix2D(center, angle, scale)
- 获取旋转矩阵。cv2.invertAffineTransform(M)
- 仿射矩阵求逆。cv2.convertScaleAbs(src, alpha, beta)
- 调整对比度和亮度。cv2.normalize(src, dst, alpha, beta, norm_type)
- 归一化。
3. 绘图功能
cv2.line(img, pt1, pt2, color, thickness)
- 画线。cv2.rectangle(img, pt1, pt2, color, thickness)
- 画矩形。cv2.circle(img, center, radius, color, thickness)
- 画圆。cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color, thickness)
- 画椭圆。cv2.polylines(img, pts, isClosed, color, thickness)
- 画多边形。cv2.fillPoly(img, pts, color)
- 填充多边形。cv2.putText(img, text, org, fontFace, fontScale, color, thickness)
- 添加文本。
4. 图像阈值
cv2.threshold(src, thresh, maxval, type)
- 图像二值化。cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C)
- 自适应阈值。cv2.inRange(src, lowerb, upperb)
- 范围筛选。
5. 图像平滑与滤波
cv2.blur(src, ksize)
- 均值滤波。cv2.GaussianBlur(src, ksize, sigmaX)
- 高斯滤波。cv2.medianBlur(src, ksize)
- 中值滤波。cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace)
- 双边滤波。cv2.filter2D(src, ddepth, kernel)
- 任意核卷积。
6. 边缘检测与轮廓
cv2.Canny(image, threshold1, threshold2)
- 边缘检测。cv2.findContours(image, mode, method)
- 查找轮廓。cv2.drawContours(image, contours, contourIdx, color, thickness)
- 绘制轮廓。cv2.arcLength(contour, closed)
- 计算轮廓周长。cv2.contourArea(contour)
- 计算轮廓面积。cv2.approxPolyDP(curve, epsilon, closed)
- 多边形逼近。cv2.boundingRect(points)
- 计算矩形边界。cv2.minEnclosingCircle(points)
- 最小包围圆。cv2.convexHull(points)
- 凸包。cv2.isContourConvex(contour)
- 判断是否为凸形。
7. 形态学操作
cv2.erode(src, kernel, iterations)
- 腐蚀。cv2.dilate(src, kernel, iterations)
- 膨胀。cv2.morphologyEx(src, op, kernel)
- 形态学操作(开闭运算等)。cv2.getStructuringElement(shape, ksize)
- 获取结构元素。
8. 图像直方图
cv2.calcHist(images, channels, mask, histSize, ranges)
- 计算直方图。cv2.equalizeHist(src)
- 直方图均衡化。cv2.createCLAHE(clipLimit, tileGridSize)
- 自适应直方图均衡化。
9. 特征检测与描述
cv2.SIFT_create()
- SIFT特征检测。cv2.ORB_create()
- ORB特征检测。cv2.FastFeatureDetector_create()
- FAST特征检测。cv2.MSER_create()
- MSER特征检测。cv2.BRISK_create()
- BRISK特征检测。cv2.SimpleBlobDetector_create()
- 简单Blob检测。cv2.goodFeaturesToTrack(src, maxCorners, qualityLevel, minDistance)
- 检测角点。
10. 特征匹配
cv2.BFMatcher(normType)
- 暴力匹配器。cv2.FlannBasedMatcher()
- FLANN匹配器。cv2.drawMatches(img1, kp1, img2, kp2, matches, outImg)
- 绘制匹配结果。
11. 视频操作
cv2.VideoCapture(source)
- 打开视频文件或摄像头。cv2.VideoWriter(filename, fourcc, fps, frameSize)
- 保存视频。cap.read()
- 读取视频帧。cap.isOpened()
- 检查视频是否打开。cap.release()
- 释放视频资源。
12. 几何变换与数学操作
cv2.addWeighted(src1, alpha, src2, beta, gamma)
- 图像加权。cv2.bitwise_and(src1, src2)
- 按位与。cv2.bitwise_or(src1, src2)
- 按位或。cv2.bitwise_not(src)
- 按位取反。cv2.bitwise_xor(src1, src2)
- 按位异或。cv2.minMaxLoc(src)
- 最值定位。cv2.reduce(src, dim, rtype)
- 归约操作。
13. 模板匹配
cv2.matchTemplate(image, templ, method)
- 模板匹配。cv2.minMaxLoc(result)
- 获取匹配位置。
14. 深度学习相关
cv2.dnn.readNetFromCaffe(protoTxt, model)
- 读取Caffe模型。cv2.dnn.readNetFromTensorflow(model, config)
- 读取TensorFlow模型。cv2.dnn.readNetFromONNX(model)
- 读取ONNX模型。cv2.dnn.blobFromImage(image, scalefactor, size, mean, swapRB, crop)
- 图像转换为深度学习输入。
15. 基本工具
cv2.waitKey(delay)
- 等待键盘输入。cv2.destroyAllWindows()
- 销毁所有窗口。cv2.getTickCount()
- 获取时间戳。cv2.getTickFrequency()
- 获取时间频率。cv2.setMouseCallback(window_name, callback)
- 设置鼠标回调。
16. 深入功能
cv2.calcOpticalFlowFarneback(prev, next, flow, pyrScale, levels, winsize, iterations, polyN, polySigma, flags)
- 光流计算。cv2.cornerHarris(src, blockSize, ksize, k)
- Harris角点检测。cv2.cornerSubPix(image, corners, winSize, zeroZone, criteria)
- 亚像素角点优化。
17. 自定义与扩展
cv2.getTrackbarPos(trackbarname, winname)
- 获取滑块值。cv2.createTrackbar(trackbarname, winname, value, count, onChange)
- 创建滑块。cv2.fillConvexPoly(img, points, color)
- 填充凸多边形。cv2.fillPoly(img, pts, color)
- 填充多边形。
18. 图像与视频编码解码
cv2.imencode(ext, img)
- 编码图像。cv2.imdecode(buf, flags)
- 解码图像。cv2.VideoWriter_fourcc(c1, c2, c3, c4)
- 获取视频编码器。
19. 其他实用功能
cv2.phase(x, y)
- 计算幅角。cv2.cartToPolar(x, y)
- 笛卡尔坐标到极坐标转换。cv2.polarToCart(magnitude, angle)
- 极坐标到笛卡尔坐标转换。cv2.kmeans(data, K, bestLabels, criteria, attempts, flags)
- KMeans 聚类。cv2.connectedComponents(image)
- 连通域分析。
总结
以上 100 个 OpenCV API 覆盖了 OpenCV 的主要功能模块,帮助开发者快速理解 OpenCV 的强大功能。在实际使用中,可以根据需求查阅官方文档获取更多详细信息。