日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

图像处理算法打包成dll

發布時間:2025/3/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图像处理算法打包成dll 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文為原創作品,轉載請注明出處

歡迎關注我的博客:http://blog.csdn.net/hit2015springhttp://www.cnblogs.com/xujianqing/


在進行一個項目時,有時為了不公開算法源碼,通常會把算法打包成一個dll文件,這樣既可以測試算法的效果,也不會泄露自己的算法成果。下面介紹一個在VS2013+Opencv2.4.9版本的環境下,打包的例子,與大家一起交流。

?

先上一張圖片,測試用

?

Ok開始正文:

打包成dll

  • 【文件】——【新建】——【項目】
  • 2、新建一個DLL項目,命名opencv_dll,空項目和導出符號不選擇

    完成

    3、源文件中包含3個文件 dllmain.cpp opencv_dll.cpp stdafx.cpp,這里的dllmain.cpp類似于C中的main函數,但是我們的代碼并不是在這個dllmain函數中,它只是相當于一個入口和出口,當函數執行時先進入這個dllmain函數中,然后再執行其他函數,我們需要定義的函數是寫在opencv_dll.cpp這個文件中的,其實和生成可執行文件的程序編寫一樣。

    4、在這里編寫一個函數,該函數的功能是讀取指定路徑下存放的一張圖片,并調用opencv中的函數對圖片進行顏色空間的轉換,后顯示圖片。

    // opencv_dll.cpp : 定義 DLL 應用程序的導出函數。 //#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;// 創建一個名為 "處理后圖片"的窗口 cvNamedWindow("處理后圖片", 0);cvResizeWindow("處理后圖片", int(img.rows ), int(img.rows));cvNamedWindow("原始圖片", 0);cvResizeWindow("原始圖片", int(img.rows), int(img.rows));//進行顏色空間的轉換cvtColor(img, tempImage, COLOR_LBGR2Lab);// 在窗口中顯示測試圖 imshow("處理后圖片", tempImage);imshow("原始圖片", img);// 等待操作,關閉顯示 waitKey(0);return 0; }

    ?

    5、代碼寫完后,編譯生成,會在該項目路徑下的debug文件夾中生成opencv_dll.dllopencv_dll.lib文件,代表生成成功。

    測試生成的dll文件

    1、新建一個控制臺項目,【新建】【項目】win32控制臺應用程序】

    勾上空項目,完成

    2、添加代碼文件

    ?

    #include <stdio.h> #include<iostream> using namespace std;#pragma comment(lib, "opencv_dll.lib") //調用dll文件時候必須用到的 int opencv_dll_main(string sImagePath); //對剛才寫好的處理函數進行聲明 //主函數 int main(){string imagePath = "G:\\VS2013_project\\blog\\test_opencv_dll\\測試圖.jpg"; //圖像的處理路徑opencv_dll_main(imagePath);return 0;}

    寫好代碼后,調試生成,報錯

    那是因為沒有把生成的dll文件拷貝到這個項目的debug路徑下,拷貝之后還要在項目屬性中進行聲明,【項目】——【屬性】——VC++目錄】——【庫目錄】,添加

    G:\VS2013_project\blog\test_opencv_dll\Debug(就是上面拷貝到的debug路徑),再次編譯生成。運行程序。

    3、效果如下:

    

    總結

    以上是生活随笔為你收集整理的图像处理算法打包成dll的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。