图像处理算法打包成dll
本文為原創(chuàng)作品,轉(zhuǎn)載請注明出處
歡迎關(guān)注我的博客:http://blog.csdn.net/hit2015spring和http://www.cnblogs.com/xujianqing/
在進(jìn)行一個項目時,有時為了不公開算法源碼,通常會把算法打包成一個dll文件,這樣既可以測試算法的效果,也不會泄露自己的算法成果。下面介紹一個在VS2013+Opencv2.4.9版本的環(huán)境下,打包的例子,與大家一起交流。
?
先上一張圖片,測試用
?
Ok開始正文:
打包成dll
2、新建一個DLL項目,命名opencv_dll,空項目和導(dǎo)出符號不選擇
完成
3、源文件中包含3個文件 dllmain.cpp opencv_dll.cpp 和stdafx.cpp,這里的dllmain.cpp類似于C中的main函數(shù),但是我們的代碼并不是在這個dllmain函數(shù)中,它只是相當(dāng)于一個入口和出口,當(dāng)函數(shù)執(zhí)行時先進(jìn)入這個dllmain函數(shù)中,然后再執(zhí)行其他函數(shù),我們需要定義的函數(shù)是寫在opencv_dll.cpp這個文件中的,其實和生成可執(zhí)行文件的程序編寫一樣。
4、在這里編寫一個函數(shù),該函數(shù)的功能是讀取指定路徑下存放的一張圖片,并調(diào)用opencv中的函數(shù)對圖片進(jìn)行顏色空間的轉(zhuǎn)換,后顯示圖片。
// opencv_dll.cpp : 定義 DLL 應(yīng)用程序的導(dǎo)出函數(shù)。 //#include "stdafx.h" #include<iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include<opencv2\imgproc\imgproc.hpp>using namespace cv;__declspec(dllexport) int opencv_dll_main(string sImagePath){// 讀入一張圖片(測試圖) Mat img = imread(sImagePath),tempImage;// 創(chuàng)建一個名為 "處理后圖片"的窗口 cvNamedWindow("處理后圖片", 0);cvResizeWindow("處理后圖片", int(img.rows ), int(img.rows));cvNamedWindow("原始圖片", 0);cvResizeWindow("原始圖片", int(img.rows), int(img.rows));//進(jìn)行顏色空間的轉(zhuǎn)換cvtColor(img, tempImage, COLOR_LBGR2Lab);// 在窗口中顯示測試圖 imshow("處理后圖片", tempImage);imshow("原始圖片", img);// 等待操作,關(guān)閉顯示 waitKey(0);return 0; }
?
5、代碼寫完后,編譯生成,會在該項目路徑下的debug文件夾中生成opencv_dll.dll和opencv_dll.lib文件,代表生成成功。
測試生成的dll文件
1、新建一個控制臺項目,【新建】—【項目】—【win32控制臺應(yīng)用程序】
勾上空項目,完成
2、添加代碼文件
?
#include <stdio.h> #include<iostream> using namespace std;#pragma comment(lib, "opencv_dll.lib") //調(diào)用dll文件時候必須用到的 int opencv_dll_main(string sImagePath); //對剛才寫好的處理函數(shù)進(jìn)行聲明 //主函數(shù) int main(){string imagePath = "G:\\VS2013_project\\blog\\test_opencv_dll\\測試圖.jpg"; //圖像的處理路徑opencv_dll_main(imagePath);return 0;}寫好代碼后,調(diào)試生成,報錯
那是因為沒有把生成的dll文件拷貝到這個項目的debug路徑下,拷貝之后還要在項目屬性中進(jìn)行聲明,【項目】——【屬性】——【VC++目錄】——【庫目錄】,添加
G:\VS2013_project\blog\test_opencv_dll\Debug(就是上面拷貝到的debug路徑),再次編譯生成。運行程序。
3、效果如下:
總結(jié)
以上是生活随笔為你收集整理的图像处理算法打包成dll的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 多伦多大学好吗_多伦多大学好毕业吗
- 下一篇: 看,他们都转行做web前端工程师了