【opencv】visualstudio实现opencvblobslib编译

来源:互联网 发布:红帽linux语言改为中文 编辑:程序博客网 时间:2024/06/14 15:55

一、opencvblobslib简介(与cvblob不同)

功能类似matlab中的bwlabel和regionprops函数,对于在OpenCV中对图像中的连通域操作有很大帮助
GitHub链接:https://github.com/OpenCVBlobsLib
需和OpenCV和pthread库配套使用,下载时请注意版本要求(在GitHub上均有提示)

二、编译准备

1、OpenCV下载及安装

这部分请移步 http://blog.csdn.net/rrrsjtu/article/details/46226003(链接中的blog只举例了VS10+OpenCV2.3.1,其他版本请自行注意区别)

2、pthreads

下载pthreads最新版本

链接 http://bo.mirror.garr.it/mirrors/sourceware.org/pthreads-win32/prebuilt-dll-2-9-1-release/

请在windows资源管理器中打开本链接,本文以pthreads-w32-2-9-1-release版本举例
原开发者推荐用CMake进行编译,私以为是为了多平台通用的目的,本文只提供一种利用VS进行编译的方法

1、建立解决方案

建立一个VS的解决方案(空项目-win32控制台)

2、添加src和头文件

将下载的opencvblobslib解压缩,其中library和example文件夹中的头文件(.h)和源代码文件(.cpp)以及数据图片复制到解决方案的项目文件夹内;
将安装好的opencv的“..\opencv\build\include”文件夹中的两个包含有完整头文件(.h)的文件夹“opencv”、“opencv2”复制到解决方案的项目文件夹内;
“..\pthreads-w32-2-9-1-release\Pre-built.2\include”中的头文件(.h)全部复制到解决方案的项目文件夹内

3、自建头文件并将所用库打包

头文件详见Appendix B
所需的lib和dll请一并放在解决方案的Release文件夹内
包括,如图所示
所需lib和dll
至此基本已经完成,对于部分编译出现报错的情况,请自行复查

4、生成

选择Release模式 win32平台 ,主函数采用“..\opencvblobslib\example\testmain.cpp” 中的函数,请注意在主函数文件前添加自建的头文件以引用各类库


#############%【Appendix A】对于VC++目录中的各项解释%#################

可执行文件目录 :搜索可执行文件时使用的路径。与环境变量PATH相对应
包含目录 :搜索包含文件时使用的路径。与#INCLUDE相对应
引用目录 :搜索通过#Using引入的文件时使用的路径。与环境变量LIBPATH相对应
库目录 :搜素库文件时使用的路径。与环境变量LIB相对应

####################################################################

#############%【Appendix B】参考代码%############################

方案平台问题部分代码,在主函数前添加
#include “stdfax.h”
#include “global.h”

1、targetver.h

#pragma once// 包括 SDKDDKVer.h 将定义可用的最高版本的 Windows 平台。// 如果要为以前的 Windows 平台生成应用程序,请包括 WinSDKVer.h,并将// WIN32_WINNT 宏设置为要支持的平台,然后再包括 SDKDDKVer.h。#include <SDKDDKVer.h>

2、stdfax.h

// stdafx.h : 标准系统文件的包含文件,// 或是经常使用但不常更改的// 特定于项目的包含文件//#pragma once#include "targetver.h"#include <stdio.h>#include <tchar.h>// TODO: 在此处引用程序需要的其他头文件

3、global.h

#ifndef GLOBAL_H#define GLOBAL_H#include "opencv/cv.h"#include "opencv2/opencv.hpp"#include "opencv2/highgui/highgui.hpp"#include "opencv2/imgproc/imgproc.hpp"#include <iostream>#include <stdio.h>#include <stdlib.h>#include <time.h>#include <omp.h>#include "pthreads/pthread.h"#include "pthreads/sched.h"#include "pthreads/semaphore.h"//使用的是Release win32版本的lib#pragma comment(lib,"..\\Release\\opencv_calib3d231.lib")#pragma comment(lib,"..\\Release\\opencv_contrib231.lib")#pragma comment(lib,"..\\Release\\opencv_core231.lib")#pragma comment(lib,"..\\Release\\opencv_features2d231.lib")#pragma comment(lib,"..\\Release\\opencv_flann231.lib")#pragma comment(lib,"..\\Release\\opencv_gpu231.lib")#pragma comment(lib,"..\\Release\\opencv_haartraining_engine.lib")#pragma comment(lib,"..\\Release\\opencv_highgui231.lib")#pragma comment(lib,"..\\Release\\opencv_imgproc231.lib")#pragma comment(lib,"..\\Release\\opencv_legacy231.lib")#pragma comment(lib,"..\\Release\\opencv_ml231.lib")#pragma comment(lib,"..\\Release\\opencv_objdetect231.lib")#pragma comment(lib,"..\\Release\\opencv_ts231.lib")#pragma comment(lib,"..\\Release\\opencv_video231.lib")#pragma comment(lib,"..\\Release\\pthreadVC2.lib")#pragma comment(lib,"..\\Release\\pthreadVCE2.lib")#pragma comment(lib,"..\\Release\\pthreadVSE2.lib")using namespace std;using namespace cv;#endif

################################################################

0 0