Code Monkey home page Code Monkey logo

opencv4_demos_python's Introduction

OPENCV4_DEMOS_PYTHON

1. 项目介绍

本项目通过Python代码示范了OpenCV 4的各个模块、各个功能的使用方法。本项目的范例来自于知识星球网站的“OpenCV研习社”的“OpenCV 4与计算机视觉知识点分享”课程。本项目在此基础上进行修改、整理、完善。OpenCV的学习者在购买此课程学习后,可走读、运行范例代码,以加深对视觉算法的认识,进一步对所学知识点进行巩固。

2. 项目内容

  • src: 源文件
  • images: 图像文件
  • videos: 视频文件
  • models: 模型文件

3. 范例目录

本项目包含140个课程范例。所有范例代码位于文件夹"src"中。每份范例代码均存放于1个单独的Python源文件中。其对应的课程序号、名称与链接如下:

OpenCV-day-001. 图像读取与显示
OpenCV-day-002. 图像色彩空间转换
OpenCV-day-003. 图像对象的创建与赋值
OpenCV-day-004. 图像像素的读写操作
OpenCV-day-005. 图像像素的算术操作
OpenCV-day-006. LUT的作用与用法
OpenCV-day-007. 图像像素的逻辑操作
OpenCV-day-008. 通道分离与合并
OpenCV-day-009. 图像色彩空间转换
OpenCV-day-010. 图像像素值统计

OpenCV-day-011. 像素归一化
OpenCV-day-012. 视频文件的读写
OpenCV-day-013. 图像翻转
OpenCV-day-014. 图像插值
OpenCV-day-015. 几何形状绘制
OpenCV-day-016. 图像ROI与ROI操作
OpenCV-day-017. 图像直方图
OpenCV-day-018. 图像直方图均衡化
OpenCV-day-019. 图像直方图比较
OpenCV-day-020. 图像直方图反向投影

OpenCV-day-021. 图像卷积操作
OpenCV-day-022. 图像均值与高斯模糊
OpenCV-day-023. 中值模糊
OpenCV-day-024. 图像噪声
OpenCV-day-025. 图像去噪声
OpenCV-day-026. 高斯双边模糊
OpenCV-day-027. 均值迁移模糊
OpenCV-day-028. 图像积分图算法
OpenCV-day-029. 快速的图像边缘滤波算法
OpenCV-day-030. OpenCV自定义的滤波器

OpenCV-day-031. 图像梯度—Sobel算子
OpenCV-day-032. 图像梯度—更多梯度算子
OpenCV-day-033. 图像梯度—拉普拉斯算子
OpenCV-day-034. 图像锐化
OpenCV-day-035. USM锐化增强算法
OpenCV-day-036. Canny边缘检测器
OpenCV-day-037. 图像金字塔
OpenCV-day-038. 拉普拉斯金字塔
OpenCV-day-039. 图像模板匹配
OpenCV-day-040. 二值图像介绍

OpenCV-day-041. OpenCV中的基本阈值操作
OpenCV-day-042. OTSU二值寻找算法
OpenCV-day-043. TRIANGLE二值寻找算法
OpenCV-day-044. 自适应阈值算法
OpenCV-day-045. 图像二值化与去噪
OpenCV-day-046. 二值图像联通组件寻找
OpenCV-day-047. 二值图像连通组件状态统计
OpenCV-day-048. 二值图像分析—轮廓发现
OpenCV-day-049. 二值图像分析—轮廓外接矩形
OpenCV-day-050. 二值图像分析—矩形面积与弧长

OpenCV-day-051. 二值图像分析—使用轮廓逼近
OpenCV-day-052. 二值图像分析—用几何矩计算轮廓中心与横纵比过滤
OpenCV-day-053. 二值图像分析—Hu矩实现轮廓匹配
OpenCV-day-054. 二值图像分析—对轮廓圆与椭圆拟合
OpenCV-day-055. 二值图像分析—凸包检测
OpenCV-day-056. 二值图像分析—直线拟合与极值点寻找
OpenCV-day-057. 二值图像分析—点多边形测试
OpenCV-day-058. 二值图像分析—寻找最大内接圆
OpenCV-day-059. 二值图像分析—霍夫直线检测
OpenCV-day-060. 二值图像分析—霍夫直线检测二

OpenCV-day-061. 二值图像分析—霍夫圆检测
OpenCV-day-062. 图像形态学—膨胀与腐蚀
OpenCV-day-063. 图像形态学—膨胀与腐蚀
OpenCV-day-064. 图像形态学—开操作
OpenCV-day-065. 图像形态学—闭操作
OpenCV-day-066. 图像形态学—开闭操作时候结构元素应用演示
OpenCV-day-067. 图像形态学—顶帽操作
OpenCV-day-068. 图像形态学—黑帽操作
OpenCV-day-069. 图像形态学—图像梯度
OpenCV-day-070. 形态学应用—用基本梯度实现轮廓分析

OpenCV-day-071. 形态学操作—击中击不中
OpenCV-day-072. 二值图像分析—缺陷检测一
OpenCV-day-073. 二值图像分析—缺陷检测二
OpenCV-day-074. 二值图像分析—提取最大轮廓与编码关键点
OpenCV-day-075. 图像去水印/修复
OpenCV-day-076. 图像透视变换应用
OpenCV-day-077. 视频读写与处理
OpenCV-day-078. 识别与跟踪视频中的特定颜色对象
OpenCV-day-079. 视频分析—背景/前景提取
OpenCV-day-080. 视频分析—背景消除与前景ROI提取

OpenCV-day-081. 角点检测—Harris角点检测
OpenCV-day-082. 角点检测—shi-tomas角点检测
OpenCV-day-083. 角点检测—亚像素级别角点检测
OpenCV-day-084. 视频分析—移动对象的KLT光流跟踪算法
OpenCV-day-085. 视频分析—KLT光流跟踪 02
OpenCV-day-086. 视频分析—稠密光流分析
OpenCV-day-087. 视频分析—基于帧差法实现移动对象分析
OpenCV-day-088. 视频分析—基于均值迁移的对象移动分析
OpenCV-day-089. 视频分析—基于连续自适应均值迁移的对象移动分析
OpenCV-day-090. 视频分析—对象移动轨迹绘制

OpenCV-day-091. 对象检测—HAAR级联检测器使用
OpenCV-day-092. 对象检测—HAAR特征介绍
OpenCV-day-093. 对象检测—LBP特征介绍
OpenCV-day-094. ORB FAST特征关键点检测
OpenCV-day-095. BRIEF特征描述子 匹配
OpenCV-day-096. 描述子匹配
OpenCV-day-097. 基于描述子匹配的已知对象定位
OpenCV-day-098. SIFT特征提取—关键点提取
OpenCV-day-099. SIFT特征提取—描述子生成
OpenCV-day-100. HOG特征与行人检测

OpenCV-day-101. HOG特征描述子—多尺度检测
OpenCV-day-102. HOG特征描述子—提取描述子
OpenCV-day-103. HOG特征描述子—使用描述子特征生成样本数据
OpenCV-day-104. SVM线性分类器
OpenCV-day-105. HOG特征描述子—使用HOG进行对象检测
OpenCV-day-106. AKAZE特征与描述子
OpenCV-day-107. BRISK特征提取与描述子匹配
OpenCV-day-108. 特征提取之关键点检测—GFTTDetector
OpenCV-day-109. BLOB特征分析—simpleblobdetector使用
OpenCV-day-110. KMeans数据分类

OpenCV-day-111. KMeans图像分割
OpenCV-day-112. KMeans图像分割—背景替换
OpenCV-day-113. KMeans图像分割—主色彩提取
OpenCV-day-114. KNN算法介绍
OpenCV-day-115. KNN算法应用
OpenCV-day-116. 决策树算法介绍与使用
OpenCV-day-117. 图像均值漂移分割
OpenCV-day-118. GrabCut图像分割
OpenCV-day-119. GrabCut图像分割—背景替换
OpenCV-day-120. 二维码检测与识别

OpenCV-day-121. OpenCV DNN 获取导入模型各层信息
OpenCV-day-122. OpenCV DNN 实现图像分类
OpenCV-day-123. OpenCV DNN 为模型运行设置目标设备与计算后台
OpenCV-day-124. OpenCV DNN 基于SSD实现对象检测
OpenCV-day-125. OpenCV DNN 基于SSD实现实时视频检测
OpenCV-day-126. OpenCV DNN 基于残差网络的人脸检测
OpenCV-day-127. OpenCV DNN 基于残差网络的视频人脸检测
OpenCV-day-128. OpenCV DNN 直接调用TensorFlow的导出模型
OpenCV-day-129. OpenCV DNN 调用OpenPose模型实现姿态评估
OpenCV-day-130. OpenCV DNN 支持YOLO对象检测网络运行

OpenCV-day-131. OpenCV DNN 支持YOLOv3-tiny版本实时对象检测
OpenCV-day-132. OpenCV DNN 单张与多张图像的推断
OpenCV-day-133. OpenCV DNN 图像彩色化模型使用
OpenCV-day-134. OpenCV DNN ENet实现图像分割
OpenCV-day-135. OpenCV DNN 实时快速的图像风格迁移
OpenCV-day-136. OpenCV DNN 解析网络输出结果
OpenCV-day-137. OpenCV DNN 实现性别与年龄预测
OpenCV-day-138. OpenCV DNN 使用OpenVINO加速
OpenCV-day-139. 案例:识别0~9印刷体数字—Part 1
OpenCV-day-140. 案例:识别0~9印刷体数字—Part 2

二值分析: 车道线检测

注:本项目不提供课程内容与录音。请各位购买此课程后自行学习。

4. 依赖软件版本

OpenCV: opencv-4.5.5-openvino-2022.1.0, opencv_contrib-4.5.5
FFmpeg: 4.3.1
OpenVINO: 2022.1.0
CUDA: 11.7
CuDNN: 8.5.0

5. 依赖硬件要求

CPU: Intel,x86架构
GPU: NVIDIA,支持CUDA
Memory: 不小于4 GB
Hard Disc: 不小于20 GB
Camera: 个别范例需要通过USB接口连接相机

6. 范例运行环境

OS: Ubuntu 16以上
Python: 3.6以上

7. 范例运行方法

Python File: src/main.py
Argument: 范例序号(如001、012、138)

8. 大文件获取方法

本项目有6个大小超过100 MB的文件采用Git Large File Storage (LFS)工具存储。以下为这些文件的路径和名称:

  1. models/colorization/colorization_release_v2.caffemodel
  2. models/faster_rcnn_resnet50_coco/frozen_inference_graph.pb
  3. models/openpose/coco/pose_iter_440000.caffemodel
  4. models/openpose/hand/pose_iter_102000.caffemodel
  5. models/openpose/mpi/pose_iter_160000.caffemodel
  6. models/yolov3/yolov3.weights

获取上述大文件有两个方法。

方法一:
以存放本项目文件的文件夹为工作目录,依次输入以下命令获取大文件:
git lfs install --skip-smudge # 启动Git LFS,跳过smudge filter
git clone [Repository URL] # 克隆Git远程仓库到本地,暂时忽略大文件
git lfs pull # 从远程获取大文件
git lfs install --force # 恢复smudge filter

方法二:
从百度网盘的共享文件夹下载大文件。
Link: https://pan.baidu.com/s/1ItYu53EM-fSH_39VtF0t8Q
Password: tf4v

9. 许可协议

本项目采用MIT协议进行许可。

opencv4_demos_python's People

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.