🎯 目标方向 "小辉懂编程 正在向 全力迈进!

🆔 版权声明原创文章,如需转载请告知作者。

📅 创作时间:2025 年 12 月 17  日

📂 个人主页小辉懂编程-CSDN博客

📌 专栏系列:python - open CV 专栏

💬 互动交流:欢迎 点赞👍|收藏⭐|留言📝,一起交流技术,共同进步!

🌟 公众平台:文章底部公众号(小辉快乐编程)可以获取学习资料,共同进步

🌟 个人格言"代码改变世界,逻辑塑造未来!"

openCV 基础概念

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,支持跨平台开发,涵盖图像处理、视频分析、机器学习等功能。核心模块包括:

  • imgproc:图像处理(滤波、边缘检测等)
  • highgui:图像显示与交互
  • core:基础数据结构(如矩阵操作)
  • video:视频分析与运动跟踪

1.安装与环境配置

Python 环境下通过 pip 安装:

pip install opencv-python  # 基础模块
pip install opencv-contrib-python  # 包含扩展模块

OpenCV主要函数

函数名主要作用常见应用场景
cv2.imread()读取图像文件从文件路径加载图像数据到内存
cv2.imshow()显示图像窗口在窗口中展示图像内容
cv2.imwrite()保存图像文件将处理后的图像写入到磁盘文件
cv2.cvtColor()颜色空间转换如RGB转灰度图、RGB转HSV
cv2.resize()调整图像尺寸缩放图像到指定大小
cv2.GaussianBlur()高斯模糊图像降噪、平滑处理
cv2.Canny()Canny边缘检测提取图像中的边缘信息
cv2.findContours()查找轮廓在二值图像中检测物体轮廓
cv2.threshold()阈值处理图像二值化(全局阈值)
cv2.adaptiveThreshold()自适应阈值处理图像二值化(局部阈值)
cv2.HoughLines()霍夫直线变换检测图像中的直线
cv2.HoughCircles()霍夫圆变换检测图像中的圆形
cv2.matchTemplate()模板匹配在图像中搜索特定模板的位置
cv2.VideoCapture()视频捕获对象读取摄像头或视频文件
cv2.VideoWriter()视频写入对象保存视频帧为视频文件
cv2.erode()腐蚀操作形态学处理,减小前景区域
cv2.dilate()膨胀操作形态学处理,增大前景区域
cv2.morphologyEx()形态学操作开运算、闭运算、形态学梯度等
cv2.calibrateCamera()相机标定计算相机内参和畸变系数
cv2.undistort()图像校正去除镜头畸变

图像读取与显示

import cv2
# 读取图像(参数:文件路径,标志如 cv2.IMREAD_COLOR)
image = cv2.imread('image.jpg')
# 显示图像(窗口名称,图像数据)
cv2.imshow('Display', image)
cv2.waitKey(0)  # 等待按键关闭窗口
cv2.destroyAllWindows()

2.图像基本操作

颜色空间转换

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)  # 转为灰度图
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)    # 转为HSV空间

绘制图形

cv2.rectangle(image, (x1, y1), (x2, y2), (0, 255, 0), 2)  # 画矩形
cv2.putText(image, 'Text', (x, y), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0), 2)

3.图像处理技术

边缘检测(Canny)

edges = cv2.Canny(gray, threshold1=50, threshold2=150)

阈值处理

_, binary = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)

滤波(高斯模糊)

blurred = cv2.GaussianBlur(image, (5, 5), 0)

视频处理

读取摄像头或视频文件

cap = cv2.VideoCapture(0)  # 0 为默认摄像头
while True:
    ret, frame = cap.read()
    if not ret:
        break
    cv2.imshow('Video', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()

4.特征检测与匹配

SIFT 特征点检测

sift = cv2.SIFT_create()
keypoints, descriptors = sift.detectAndCompute(gray, None)
image_with_keypoints = cv2.drawKeypoints(image, keypoints, None)

ORB 快速匹配

orb = cv2.ORB_create()
kp1, des1 = orb.detectAndCompute(img1, None)
kp2, des2 = orb.detectAndCompute(img2, None)
bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
matches = bf.match(des1, des2)

实战应用示例

人脸检测(Haar 级联)

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5)
for (x, y, w, h) in faces:
    cv2.rectangle(image, (x, y), (x+w, y+h), (255, 0, 0), 2)
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐