新建一个c++库项目

pro文件

#-------------------------------------------------
#
# Project created by QtCreator --29T16::
#
#------------------------------------------------- QT -= core gui TARGET = dlldemo
TEMPLATE = lib
CONFIG += staticlib SOURCES += dlldemo.cpp HEADERS += dlldemo.h INCLUDEPATH += D:/sdk/opencv/build/include LIBS += -LD:/sdk/opencv/build/x86/vc12/lib \
-lopencv_calib3d249d \
-lopencv_contrib249d \
-lopencv_core249d \
-lopencv_features2d249d \
-lopencv_flann249d \
-lopencv_gpu249d \
-lopencv_highgui249d \
-lopencv_imgproc249d \
-lopencv_legacy249d \
-lopencv_ml249d \
-lopencv_nonfree249d \
-lopencv_objdetect249d \
-lopencv_ocl249d \
-lopencv_photo249d \
-lopencv_stitching249d \
-lopencv_superres249d \
-lopencv_ts249d \
-lopencv_video249d \
-lopencv_videostab249d unix {
target.path = /usr/lib
INSTALLS += target
}

dlldemo.h

#ifndef DLLDEMO_H
#define DLLDEMO_H
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>
#include <opencv2/objdetect/objdetect.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp>
using namespace std;
using namespace cv;
class Dlldemo
{ public:
Dlldemo();
int addtwo(int a,int b);
Mat togray(Mat img);
void draw_text(cv::Mat &canvas, const char *str, int x, int y, float scale = 1.0);
}; #endif // DLLDEMO_H

dlldemo.cpp

#include "dlldemo.h"

Dlldemo::Dlldemo()
{
} int Dlldemo::addtwo(int a, int b)
{
return a+b;
} Mat Dlldemo::togray(Mat img)
{
cv::Mat greyMat;
cv::cvtColor(img, greyMat, CV_BGR2GRAY);
draw_text (greyMat,"#by dll function", , ,0.8);
return greyMat;
} void Dlldemo::draw_text(Mat &canvas, const char *str, int x, int y, float scale)
{ int w = ;
for(int dy = -w; dy <= w; ++dy) {
for (int dx = -w; dx <= w; ++dx) {
cv::putText(canvas, str, cv::Point(x+dx,y+dy), cv::FONT_HERSHEY_SIMPLEX, scale, cv::Scalar(,,), , CV_AA);
}
} cv::putText(canvas, str, cv::Point(x,y), cv::FONT_HERSHEY_SIMPLEX, scale, cv::Scalar(,,), , CV_AA);
}

build--->生成

测试

新建一个c++工程

拷贝dlldemo.h 和dlldemo.lib

修改pro文件

LIBS += -LD:/project/testdlldemo \
-ldlldemo INCLUDEPATH += D:/sdk/opencv/build/include LIBS += -LD:/sdk/opencv/build/x86/vc12/lib \
-lopencv_calib3d249d \
-lopencv_contrib249d \
-lopencv_core249d \
-lopencv_features2d249d \
-lopencv_flann249d \
-lopencv_gpu249d \
-lopencv_highgui249d \
-lopencv_imgproc249d \
-lopencv_legacy249d \
-lopencv_ml249d \
-lopencv_nonfree249d \
-lopencv_objdetect249d \
-lopencv_ocl249d \
-lopencv_photo249d \
-lopencv_stitching249d \
-lopencv_superres249d \
-lopencv_ts249d \
-lopencv_video249d \
-lopencv_videostab249d

测试代码main.cpp

#include <iostream>
#include "dlldemo.h"
using namespace std; int main()
{
cout << "Hello World!" << endl;
int a=;
int b=;
Dlldemo dll;
printf("sum of a,b is :%d",dll.addtwo (a,b)); cv::Mat canvas;
canvas = cv::imread("d://nike.jpg", -);
Mat result= dll.togray (canvas);
imshow ("dll result",result);
waitKey (); return ;
}

成功

源码下载

http://pan.baidu.com/s/1kT7QBbx

最新文章

  1. 15天玩转redis —— 第九篇 发布/订阅模式
  2. taiyi_interview(Introduction To Database Refactoring)
  3. empty与isset的一点使用体会
  4. ES6-函数扩展
  5. AtCoder Regular Contest 061
  6. SQL你必须知道的-函数及类型转换
  7. [jobdu]栈的压入、弹出序列
  8. GCC内联函数:__builtin_types_compatible_p
  9. spring mvc和spring的区别
  10. Repeater中使用条件的两种方法
  11. Codeforces Round #460 (Div. 2) ABCDE题解
  12. 改写pipeline
  13. Linux shell基础知识(上)
  14. AltiumDesigner PCB中栅格与格点的切换
  15. bzoj1651 / P2859 [USACO06FEB]摊位预订Stall Reservations
  16. Replication--复制Token
  17. Scala入门4(_的用法)
  18. DevExpress的DateEdit设置显示日期和时间
  19. Linux jdk环境配置模板
  20. 面试题30:最小的K个数

热门文章

  1. sqlserver自定义函数【粘】
  2. springside springmvc 的一个SB问题
  3. WEB开发人员必知的20+HTML5技巧(转)
  4. MySQL分区表(转)
  5. YUV格式详解
  6. Object-C中emoji与json的问题
  7. c++ 成员指针函数 实现委托----跨平台实现(复杂)
  8. 每个QWidget都有contentsMargins函数,善用QMargins
  9. Android 自定义对话框使用静态Handler传递参数
  10. 分布式全局不重复ID生成算法