当前位置: 首页 > news >正文

opencv入门教程

文章目录

    • opencv简介
      • opencv使用
        • CMakeLists.txt文件说明:
      • 实例
        • 图形图像的处理
        • 视频处理
        • 视频监控
    • 图像与图形
    • 图形绘制
    • 人脸识别与标记
    • 文本识别(车牌)

opencv简介

opencv是一个开源的计算机视觉库,可以用于图形图像和视频处理
安装:

  1. 直接安装

apt install libopencv-dev

  1. 自己编译

本体源码:
https://github.com/opencv/opencv/releases/tag/4.2.0
扩展库源码:
https://github.com/opencv/opencv_contrib/releases

opencv使用

使用OpenCV进行开发

  1. 搭建环境
  2. 工具链
    C程序的编译过程 – 自动编译管理工具make – 通过Makefile文件来指定自动编译的过程和步骤 – cmake – 通过CMakeLists.txt文件来输出/生产Makefile文件
CMakeLists.txt文件说明:
# cmake needs this line
cmake_minimum_required(VERSION 3.1)# 定义工程的名字
project(Project_OpenCV_0628)# Find OpenCV, you may need to set OpenCV_DIR variable
# to the absolute path to the directory containing OpenCVConfig.cmake file
# via the command line or GUI
find_package(OpenCV REQUIRED)# If the package has been found, several variables will
# be set, you can find the full list with descriptions
# in the OpenCVConfig.cmake file.
# Print some message showing some of them
message(STATUS "OpenCV library status:")
message(STATUS "    config: ${OpenCV_DIR}")
message(STATUS "    version: ${OpenCV_VERSION}")
message(STATUS "    libraries: ${OpenCV_LIBS}")
message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")# 定义使用什么源文件生成指定得输出文件
add_executable(opencv_test video_capture_test.cpp)# 指定生成输出文件使用得库
target_link_libraries(opencv_test PRIVATE ${OpenCV_LIBS})

实例

图形图像的处理

使用OpenCV库实现图形图像的处理

  • 在工作目录下,新建一个项目的目录
    china@ubuntu:~$ mkdir Project_OpenCV_0530

  • 在项目目录中新建两个文件: test.cpp, CMakeLists.txt
    china@ubuntu:~$ cd Project_OpenCV_0530/
    china@ubuntu:~/Project_OpenCV_0530$ touch test.cpp
    china@ubuntu:~/Project_OpenCV_0530$ touch CMakeLists.txt

  • 在项目目录下新建一个目录: build
    china@ubuntu:~/Project_OpenCV_0530$ mkdir build
    china@ubuntu:~/Project_OpenCV_0530$ ls
    build CMakeLists.txt test.cpp

  • 编写CMakeLists.txt文件

# cmake needs this line
cmake_minimum_required(VERSION 3.1)# 定义工程的名字
project(Project_OpenCV_0530)# Find OpenCV, you may need to set OpenCV_DIR variable
# to the absolute path to the directory containing OpenCVConfig.cmake file
# via the command line or GUI
find_package(OpenCV REQUIRED)# If the package has been found, several variables will
# be set, you can find the full list with descriptions
# in the OpenCVConfig.cmake file.
# Print some message showing some of them
message(STATUS "OpenCV library status:")
message(STATUS "    config: ${OpenCV_DIR}")
message(STATUS "    version: ${OpenCV_VERSION}")
message(STATUS "    libraries: ${OpenCV_LIBS}")
message(STATUS "    include path: ${OpenCV_INCLUDE_DIRS}")# 定义使用什么源文件生成指定得输出文件
add_executable(opencv_test test.cpp)# 指定生成输出文件使用得库
target_link_libraries(opencv_test PRIVATE ${OpenCV_LIBS})
  • 编写cpp文件
    先拷贝一个图片文件放到Linux工作目录: bbb.jpg
    编写C++源文件:
#include <iostream>
#include <opencv2/opencv.hpp>using namespace std;
using namespace cv;  //OpenCV的命名空间int main(int argc, char *argv[])
{Mat img = imread("/home/china/bbb.jpg");imshow("OpenCV显示图片", img);waitKey(0);return 0;
}
  • 编译
    先进入到build目录,执行cmake,生产Makefile文件
cd build/
cmake ..
ls
CMakeCache.txt  CMakeFiles  cmake_install.cmake  Makefile

编译

make
Scanning dependencies of target opencv_test
[ 50%] Building CXX object CMakeFiles/opencv_test.dir/test.cpp.o
[100%] Linking CXX executable opencv_test
[100%] Built target opencv_test

运行
./opencv_test

视频处理
  1. 在Project_OpenCV_0530目录下新建一个C++源文件
video_test.cpp
china@ubuntu:~/Project_OpenCV_0530/build$ cd ..
china@ubuntu:~/Project_OpenCV_0530$ touch video_test.cpp
  1. 编写C++源文件
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/videoio.hpp>using namespace std;
using namespace cv;int main(int argc, char *argv[])
{VideoCapture video;video.open("/home/china/test.avi");if(!video.isOpened()){return -1;}while(true){Mat img;video >> img;if(!img.empty()){imshow("视频显示", img);}if(waitKey(30) > 0){break;}}return 0;
}
  1. 修改CMakeLists.txt文件
# 定义使用什么源文件生成指定得输出文件
add_executable(opencv_test video_test.cpp)
  1. 编译
china@ubuntu:~/Project_OpenCV_0530$ cd build
china@ubuntu:~/Project_OpenCV_0530/build$ cmake ..
-- OpenCV library status:
--     config: /usr/local/lib/cmake/opencv4
--     version: 4.5.1
--     libraries: 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/china/Project_OpenCV_0530/build
china@ubuntu:~/Project_OpenCV_0530/build$ make
Scanning dependencies of target opencv_test
[ 50%] Building CXX object CMakeFiles/opencv_test.dir/video_test.cpp.o
[100%] Linking CXX executable opencv_test
[100%] Built target opencv_test
  1. 执行
    china@ubuntu:~/Project_OpenCV_0530/build$ ./opencv_test
视频监控
#include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/videoio.hpp>using namespace std;
using namespace cv;int main(int argc, char *argv[])
{VideoCapture video(0);if(!video.isOpened()){return -1;}Mat img;while(true){video >> img;imshow("视频监控", img);if(waitKey(30) >= 0){break;}}waitKey(0);return 0;
}

图像与图形

图像:采集、编码后的数据
图形:计算机绘制渲染的

图片格式

  • 位图
    • 1、无损:bmp
    • 2、有损:jpg/jpeg、png、gif、tiff*、webp*
  • 矢量图
    • svg、eps、ai

图形绘制

示例:
https://docs.opencv.org/4.x/d3/d96/tutorial_basic_geometric_drawing.html

人脸识别与标记

人脸识别:
直接使用OpenCV中的人脸识别模型训练数据

  • 企业提供的人脸识别库:
  • 百度: http://ai.baidu.com/
  • 虹软: https://www.arcsoft.com.cn/

下载SDK,下载demo,文档

示例:
https://docs.opencv.org/4.x/d4/d26/samples_2cpp_2facedetect_8cpp-example.html

文本识别(车牌)

示例:
https://docs.opencv.org/4.x/db/da4/samples_2dnn_2text_detection_8cpp-example.htm

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • js延迟加载的方式有哪些?
  • 告别懵逼——前端项目调试与问题排查方法小结
  • wsl下将Ubuntu从c盘移动到其他盘
  • 构建高效智慧水务平台的关键要素有哪些?
  • 解释 JVM 的内存模型(堆、栈、方法区等),并简述如何通过调整 JVM 参数来优化应用程序的性能?
  • 视频:Python深度学习量化交易策略、股价预测:LSTM、GRU深度门控循环神经网络|附代码数据...
  • 零工经济下的外卖骑手:多样性与困境的交织
  • iscntrl函数讲解 <ctype.h>头文件函数
  • 人工智能与机器学习原理精解【15】
  • 基于tesseract实现文档OCR识别
  • 函数重载的奥秘
  • link .css加载失败事件
  • 乐凡三防平板高性能为稳定运行保驾护航
  • 如何应对日益复杂的网络攻击?Edge SCDN(边缘安全加速)的应用场景探讨
  • Java算法之梳排序(Comb Sort)
  • 〔开发系列〕一次关于小程序开发的深度总结
  • AWS实战 - 利用IAM对S3做访问控制
  • Javascript弹出层-初探
  • JavaScript新鲜事·第5期
  • Java方法详解
  • MD5加密原理解析及OC版原理实现
  • php ci框架整合银盛支付
  • Redis字符串类型内部编码剖析
  • Spring Security中异常上抛机制及对于转型处理的一些感悟
  • Vue2 SSR 的优化之旅
  • 前端工程化(Gulp、Webpack)-webpack
  • 深入浅出Node.js
  • 时间复杂度与空间复杂度分析
  • 世界编程语言排行榜2008年06月(ActionScript 挺进20强)
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 阿里云ACE认证学习知识点梳理
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​香农与信息论三大定律
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • $(function(){})与(function($){....})(jQuery)的区别
  • (13)DroneCAN 适配器节点(一)
  • (2.2w字)前端单元测试之Jest详解篇
  • (20)docke容器
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (31)对象的克隆
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (Java入门)学生管理系统
  • (多级缓存)缓存同步
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (力扣)循环队列的实现与详解(C语言)
  • (七)glDrawArry绘制
  • (三分钟)速览传统边缘检测算子
  • (万字长文)Spring的核心知识尽揽其中
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • .apk 成为历史!
  • .locked1、locked勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET CORE 第一节 创建基本的 asp.net core
  • .net core docker部署教程和细节问题
  • .net core 的缓存方案
  • .Net Core 生成管理员权限的应用程序