0 OpenCV记录

PS: 环境Ubuntu 20.04, C++11, OpenCV 4.5.1 (2020-12-22) , OpenCV版本不同,API可能会有区别

1 安装OpenCV
2 OpenCV 图像初步
3 OpenCV 像素操作
4 OpenCV 图像处理
5 OpenCV 特征检测与匹配
6 OpenCV xml和yaml读写
7 OpenCV 目标检测
8 OpenCV 相机视觉
9 OpenCV 视频分析





CMakeLists.txt 模板

# cmake 最低版本要求
cmake_minimum_required(VERSION 3.1)
# 创建工程
project(OpenCV_demo)
# 指定编译参数
add_compile_options(-std=c++11 -Wall -Werror -Wextra -pedantic -Wimplicit-fallthrough -Wsequence-point -Wswitch-default -Wswitch-unreachable -Wswitch-enum -Wstringop-truncation -Wbool-compare -Wtautological-compare -Wfloat-equal -Wshadow=global -Wpointer-arith -Wpointer-compare -Wcast-align -Wcast-qual -Wwrite-strings -Wdangling-else -Wlogical-op -Wconversion -Wno-pedantic-ms-format)
# 链接本文件所在目录下的头文件
include_directories(.)
# 链接 OpenCV 的头文件
include_directories(${OpenCV_INCLUDE_DIRS})
# 搜寻OpenCV库 (最低版本要求 OpenCV 4.5.1, 可以根据自己的实际情况修改)
find_package(OpenCV 4.5.1 REQUIRED)
# 将程序生成可执行文件
aux_source_directory(. src)
add_executable(demo ${src})
# 链接OpenCV库文件到可执行文件中
target_link_libraries(demo ${OpenCV_LIBS})




有时候需要移动程序到没有安装OpenCV的计算机上运行,则需要打包依赖的的而目标计算机上可能没有的库,可以使用下面的命令

ldd [二进制文件] | awk '{print $3}' | xargs -i cp -L {
     } [目标路径]

[二进制文件]替换为实际生成的可执行文件名
[目标路径]替换为用于存放拷贝的动态库的路径

而程序执行一般默认搜索的动态库路径有 /usr/lib, /lib, . 等等, 我自己写的一般就拷贝到二进制文件所在的路径,即 .




官网是个好东西, 安装教程,开发文档,示例源码… …样样齐全,是个学习的好地方.另外我列举一些可能用到的入口:

  • 官方开发文档 (标准参考资料,可以根据使用的OpenCV版本查询对应的文档)
  • CVUI (完全基于OpenCV的简单UI库,非OpenCV官方出品)
  • opencv (OpenCV核心库)
  • opencv_contrib (OpenCV扩展库, 有专利的算法,或者新加的功能,还不够稳定)
  • opencv_extra (运行测试和一些示例程序需要用到的数据和脚本等)
  • FUN computer vision opencv C++ tutorials (一个可以学习OpenCV的博客)




程序性能测量

// 返回值为从计算机启动到调用该函数时的时钟周期数
int64 cv::getTickCount();
// 返回值为时钟周期频率
cv::getTickFrequency();
// 示例模板
int main()
{
     
	int64 e1 = cv::getTickCount();
	// // // // // // // // // // // 中间为程序功能的实现代码


	// // // // // // // // // // //
	int64 e2 = cv::getTickCount();
	// 输出程序运行耗时
	std::cout << (double)(e2 - e1) / cv::getTickFrequency();
}
// 计算

或者也可以使用Linux的time命令计时

time [要执行的程序路径]

第一行是程序中输出的,后面的是time命令统计的(看real就行). 两者有偏差也正常, time计算的是整个程序执行的耗时,而程序内输出的肯定无法做到,就要小一点.
0 OpenCV记录_第1张图片

你可能感兴趣的:(0 OpenCV记录)