news 2026/5/7 17:05:30

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/4/27 14:42:22

16、基于第三方工具包构建增强现实应用指南

基于第三方工具包构建增强现实应用指南 1. 第三方增强现实工具包概述 在开发增强现实(AR)应用时,有许多第三方工具包可供选择。以下是一些常见工具包的介绍: - ARKit :这是Zac White在GitHub上发起的一个老项目。很多人(包括作者)都fork了这个仓库,因为其中有一些…

作者头像 李华
网站建设 2026/5/6 13:52:07

3大核心策略:Druid连接池容器化部署性能提升指南

3大核心策略:Druid连接池容器化部署性能提升指南 【免费下载链接】druid 阿里云计算平台DataWorks(https://help.aliyun.com/document_detail/137663.html) 团队出品,为监控而生的数据库连接池 项目地址: https://gitcode.com/gh_mirrors/druid/druid …

作者头像 李华
网站建设 2026/4/26 12:55:10

Java代码安全审计终极指南:3分钟快速上手实践

还在为Java代码中的安全隐患而烦恼吗?想要在开发阶段就发现并修复潜在漏洞?今天我们就来体验一款能够真正提升代码安全性的利器,让安全审计变得像写代码一样自然流畅。 【免费下载链接】momo-code-sec-inspector-java IDEA静态代码安全审计及…

作者头像 李华
网站建设 2026/5/5 20:43:48

提示工程实战宝典:从入门到精通的完整指南

提示工程实战宝典:从入门到精通的完整指南 【免费下载链接】Prompt-Engineering-Guide dair-ai/Prompt-Engineering-Guide: 是一个用于指导对话人工智能开发的文档。适合用于学习对话人工智能开发和自然语言处理。特点是提供了详细的指南和参考资料,涵盖…

作者头像 李华
网站建设 2026/4/27 1:14:15

冥想引导语音生成:温柔情感模式实测

冥想引导语音生成:温柔情感模式实测 在快节奏的现代生活中,越来越多的人开始通过冥想寻求内心的平静。但一个普遍的问题是——谁来引导? 真人导师固然理想,但成本高、可及性差;而市面上大多数AI语音助手读起冥想词来&…

作者头像 李华
网站建设 2026/4/23 11:19:09

JavaScript循环语句全解析

在编程中,循环语句是实现代码复用和逻辑简化的核心手段之一。当需要重复执行某段代码(如遍历数组、处理批量数据、实现特定次数的运算等)时,循环语句能帮我们摆脱重复编写代码的繁琐,提升开发效率。JavaScript 中提供了…

作者头像 李华