如何查找opencv中的函数

Python013

如何查找opencv中的函数,第1张

我们知道openCV是开源的图像处理库,所以我们有时候想查看一下某些关键函数的源码,我常用的方法(针对Visual Studio开发平台)就是右键选择要查找的函数或数据类型定义然后在弹出的快捷方式中选择“转到定义”(或“Go to definition”英文版本),这是就可以自动转到函数定义部分。但是,openCV将很多函数被加入了函数库,并被编译成了dll,所以只能看到函数申明,没法看到原始代码。我的解决方法如下:(openCV2.3.1+VS2008)

1、首先要熟悉openCV安装目录,例如我的安装目录是F:\program files\opencv2.3.1。在这个目录下面还有很多子目录:3rdparty、android、build,data、doc、include、modules、samples和很多cmake文件。对于编程来说,仅仅需要build这一个文件夹就可以了,因为编程环境的配置只与这一个目录有关,如:包含目录配置、库目录配置,具体可以参考http://www.opencv.org.cn/index.php/VC_2008_Express下安装OpenCV2.3.1。build目录是编译生成的目录,就是用openCV源代码编译生成的2进制库文件集(dll、lib和入口头文件include)。以下是文档组织结构截图:

2、那其他文件夹下的文件都是干嘛用的呢?其实源代码就包含在这些文件夹下面,因为build文件夹就是在其他文件夹的基础上CMake编译生成的。(可以参考CMake编译部分http://www.opencv.org.cn/index.php/VC_2008_Express下安装OpenCV2.3.1)大部分源代码放在modules文件夹下(如下截图)

例如,core文件夹下就包含了基本数据类型的定义,imgproc文件夹下包含了常用的数字图像处理函数源代码:如cvCanny()、cvSobel()。

3、用CMake导出opencv 源码,生成VC++项目,然后用vs打开工程,去里面搜索整个工程

Go语言由Google公司开发,并于2009年开源,相比Java/Python/C等语言,Go尤其擅长并发编程,性能堪比C语言,开发效率肩比Python,被誉为“21世纪的C语言”。

Go语言在云计算、大数据、微服务、高并发领域应用应用非常广泛。BAT大厂正在把Go作为新项目开发的首选语言。

Go语言应用范围:

1、服务端开发:以前你使用C或者C++做的那些事情,用Go来做很合适,例如日志处理、文件系统、监控系统等

2、DevOps:运维生态中的Docker、K8s、prometheus、grafana、open-falcon等都是使用Go语言开发

3、网络编程:大量优秀的Web框架如Echo、Gin、Iris、beego等,而且Go内置的 net/http包十分的优秀

4、Paas云平台领域:Kubernetes和Docker Swarm等

5、分布式存储领域:etcd、Groupcache、TiDB、Cockroachdb、Influxdb等

6、区块链领域:区块链里面有两个明星项目以太坊和fabric都使用Go语言

7、容器虚拟化:大名鼎鼎的Docker就是使用Go语言实现的

8、爬虫及大数据:Go语言天生支持并发,所以十分适合编写分布式爬虫及大数据处理。

1.新建一个Command Line 工程,名为TestOpencv

2.设置Build Settings

点击工程目录,然后点击右侧的Build Settings

在搜索框中输入 search ,找到Search Paths

在Header Search Paths 中加入/usr/local/include

在Library Search Paths 中加入/usr/local/lib

3.添加动态链接库

按下’/’ 键

点击Go

选择所有的.dylib文件(不带箭头的)

4.测试

测试代码

#include <stdio.h>

#include <opencv2/opencv.hpp>

using namespace cv

int main()

{

Mat image

image = imread("/Users/camellia/desktop/lena.jpg")// 测试图片路径

if ( !image.data )

{

printf("No image data \n")

return -1

}

namedWindow("Display Image", WINDOW_AUTOSIZE )

imshow("Display Image", image)

waitKey(0)

return 0

}