news 2026/5/25 10:29:15

open CV 从基础到入门 (笔记整理)python

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
open CV 从基础到入门 (笔记整理)python

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

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

📅 创作时间: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)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/25 8:01:50

6、iOS 开发:位置服务与传感器应用

iOS 开发:位置服务与传感器应用 1. 位置服务之地图标注 在地图应用中,标注特定位置是一项重要功能。以下是添加地图标注的详细步骤: 1. 创建标注类 :在项目导航器中右键选择“New File”,在“Cocoa Touch”类别下选择“Objective - C 类模板”,创建一个名为“MapAnn…

作者头像 李华
网站建设 2026/5/26 5:57:28

9、iOS 相机与视频捕获开发全解析

iOS 相机与视频捕获开发全解析 1. 使用相机 在 Xcode 中切换到 PhotoViewController.m 文件,文件底部之前添加的动作方法此时为空,将其按以下代码进行扩展: - (IBAction)loadPhotoPicker:(id)sender {UIImagePickerController *imagePicker = [[UIImagePickerControll…

作者头像 李华
网站建设 2026/5/25 12:03:06

Flexbox Froggy移动端体验重构:从可用性到愉悦性的技术升级

Flexbox Froggy移动端体验重构:从可用性到愉悦性的技术升级 【免费下载链接】flexboxfroggy A game for learning CSS flexbox 🐸 项目地址: https://gitcode.com/gh_mirrors/fl/flexboxfroggy 你有没有试过在手机上学习CSS Flexbox,却…

作者头像 李华
网站建设 2026/5/26 5:57:39

React Native AR相机终极指南:帧处理器实战进阶

React Native AR相机终极指南:帧处理器实战进阶 【免费下载链接】react-native-vision-camera 📸 A powerful, high-performance React Native Camera library. 项目地址: https://gitcode.com/GitHub_Trending/re/react-native-vision-camera 在…

作者头像 李华
网站建设 2026/5/25 20:27:20

如何快速掌握gsplat.js:完整的3D高斯点云渲染终极指南

如何快速掌握gsplat.js:完整的3D高斯点云渲染终极指南 【免费下载链接】gsplat.js JavaScript Gaussian Splatting library. 项目地址: https://gitcode.com/gh_mirrors/gs/gsplat.js gsplat.js是一个简单易用的JavaScript高斯点云渲染库,专为现代…

作者头像 李华
网站建设 2026/5/25 14:37:48

重新定义云原生存储架构:智能PVC管理新方案

重新定义云原生存储架构:智能PVC管理新方案 【免费下载链接】sealos Sealos is a production-ready Kubernetes distribution that provides a one-stop solution for both public and private cloud. https://sealos.io 项目地址: https://gitcode.com/GitHub_Tr…

作者头像 李华