opencv理论基础

References

  1. old notes of opencv:opencv跑起来

  2. opencv official docs, 可下载

What is opencv?

Opencv & 4.0

keywords:

  • 英特尔开源的跨平台计算机视觉库;
  • BSD 许可证,对研究和商业用途均免费。
  • 它具备 C++、Python 和 Java 接口,支持 Windows、Linux、Mac OS、iOS 和 Android 系统。
  • OpenCV 旨在提高计算效率,专注于实时应用。它使用优化的 C/C++写成,能够利用多核处理。

opencv VS qt?

  • Qt方向是桌面应用、嵌入式应用等开发(GUI library),是一个跨平台应用和UI开发的框架,opencv就是一个图形处理库(CV),很多人也移植到qt上,在嵌入式产品上进行图像处理。opencv也可以用VS开发,支持很多种语言。
  • Qt is a cross-platform widget toolkit.
  • e.g. 嵌入式,根据产品对界面要求的不同可以选择"Linux"(e.g. 路由器,监控) -> qt(简单的液晶界面) -> Android(手机,游戏机).

Hello World

opencv+VS 安装,跑起来

常用头文件

  1. include <opencv2/imgcodecs.hpp>

opencv4 删除了videoio 与 highgui 模块中过时的后端支持,包括: QuickTime, QTKit, Unicap, Video for Windows, libv4l, DC1394_V1, Carbon
在这里插入图片描述

Get started with Opencv

移步另一篇文章

Parallel

OpenMP是由一组计算机硬件和软件供应商联合定义的应用程序接口(API),%在Visual Studio中支持它,只需要开户即可。OpenMP为基于共享内存的并行程序的开发人员提供了一种便携式和可扩展的编程模型.

project property -> c/c++ -> 多处理器编译->Yes/mp.

  1. openMP,cuda,TBB优缺点讨论
  • OpenMP主要通过是一些编译的预处理指令实现并行,在C/C++里面形如“#pragma …”这样的东东
    而且其目的是要让编写的程序在并行和串行时同时都能正常运行,所以其最大的优点是可以将现行的串行C程序经过不大的更改便成为多线程的。有地方说OpenMP主要是针对循环的并行,INTEL官网这样写:

Everyone should use OpenMP as much as they can. It is easy to use, it is standard, it is supported by all major compilers, and it exploits parallelism well. But it is very loop oriented, and does not address algorithm or data structure level parallelism. When OpenMP works for your code, you should use it. We’ve seen it used to great advanatage in financial applications, mp3 codecs, scientific programs and high definition video editing software. OpenMP is best geared for Fortran and C code.

  • TBB是Intel公司的产品; CUDA是NVIDA为它的GPU做的线程库(支持的编译器可能少些).
  1. TBB/OPENMP/Raw thread三种并行编程的取舍
  • 如果算法是以阵列处理活动为主导,则在编码复杂程度方面,OpenMP 还是要优于 TBB.
  • API 的选用主要还是取决于您想对哪些代码实现并行。如果您的并行模式主要用于内建类型的有界循环(bounded loop),或是平面的 do-loop 中央循环,那么,建议您最好采用 OpenMP。
  • 本地线程也不是“一无是处”,它在基于事件或 I/O 的线程化中还是“身手不凡”的。
  • 线程化方法的选择是并行应用程序设计流程中的重要环节。没有一款解决方案能够满足所有需求、适用于各种环境

@opencv提供的parallel_for框架整合了这几个.@

Not all computations are suitable / can be adatapted to be run in a parallel way. To remain simple, tasks that can be split into multiple elementary operations with no memory dependency (no possible race condition) are easily parallelizable Computer vision processing are often easily parallelizable as most of the time the processing of one pixel does not depend to the state of other pixels.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值