精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

DLL文件的創建和測試程序

OpenCV學堂 ? 來源:OpenCV學堂 ? 2023-08-03 11:17 ? 次閱讀

前言

創建DLL有幾種不同的方式,最簡單直接的的方式就是通過VS自帶的動態鏈接庫(DLL)項目,把相關的功能封裝成一個類,然后導出幾個接口方法,編譯成功以后生成DLL文件,就可以在其他地方跟正常的第三方庫配置之后一樣調用了。

01創建DLL

首先打開VS創建一個DLL空項目,打開VS的桌面向導如下:

d8ae4768-3111-11ee-9e74-dac502259ad0.png

創建DLL鏈接庫項目

d8e07594-3111-11ee-9e74-dac502259ad0.png

然后在頭文件中添加mytest.h文件,添加代碼如下:

#pragmaonce

#ifdef_DLL_EXPORTS
#defineDLL_API_declspec(dllexport)
#else
#defineDLL_API_declspec(dllimport)
#endif

#include

//=========導出函數C++調用接口============
classDLL_APIMyTestDLL{
public:
intaddData(inta,intb);
~MyTestDLL();
};
然后在源文件中添加mytest.cpp文件,添加代碼如下:
#define_DLL_EXPORTS
#include

MyTestDLL::~MyTestDLL(){
std::cout<
 編譯運行成功,顯示如下:

d8fc02fa-3111-11ee-9e74-dac502259ad0.png

02DLL測試程序

創建測試程序,來測試DLL。新建一個控制臺空項目,在源文件中添加main.cpp文件,然后添加如下代碼:

#include"opencv2/opencv.hpp"
#include"mytest.h"

intmain(intargc,char**argv){
std::cout<mydll(newMyTestDLL());
intsum=mydll->addData(3,5);
std::cout<
運行結果如下:

d9291146-3111-11ee-9e74-dac502259ad0.png

d964e144-3111-11ee-9e74-dac502259ad0.png

YOLOv8對象檢測DLL測試

采用相同的方法,基于ONNXRUNTIME深度學習模型庫框架, 我對以前ONNXRUNTIME + YOLOv8對象檢測C++代碼稍作修改,封裝了一個YOLOv8對象檢測推理類為DLL,支持C++與C#接口調用。客戶端調用代碼如下:

#include"yolov8_infer.h"
#include
#include

std::stringlabel_map="D:/python/yolov5-7.0/classes.txt";
intmain(intargc,char**argv){
std::stringnames="10:bike";
intpos=names.find_first_of(":");
std::cout<>"<classNames;
std::ifstreamfp(label_map);
std::stringname;
while(!fp.eof()){
getline(fp,name);
if(name.length()){
classNames.push_back(name);
}
}
fp.close();
//std::shared_ptrdetector(newYOLOv5ORTDetector());
std::shared_ptrdetector(newYOLOv8ORTDetector());
detector->initConfig("D:/python/my_yolov8_train_demo/yolov8n.onnx",640,640,0.25f,0.5);
cv::VideoCapturecapture("D:/images/video/sample.mp4");
cv::Matframe;
std::vectorresults;
while(true){
boolret=capture.read(frame);
if(frame.empty()){
break;
}
int64start=cv::getTickCount();
detector->detect(frame,results);
floatfps=static_cast(cv::getTickFrequency())/(cv::getTickCount()-start);
cv::putText(frame,cv::format("FPS:%.2f",fps),cv::Point(50,50),cv::FONT_HERSHEY_SIMPLEX,1.0,cv::Scalar(255,0,255),2,8);
for(DetectResultdr:results){
cv::Rectbox=dr.box;
cv::putText(frame,classNames[dr.classId],cv::Point(box.tl().x,box.tl().y-10),cv::FONT_HERSHEY_SIMPLEX,.5,cv::Scalar(0,0,0));
}
cv::imshow("YOLOv8+ONNXRUNTIME-DLL導出演示",frame);
charc=cv::waitKey(1);
if(c==27){//ESC退出
break;
}
//resetfornextframe
results.clear();
}

return0;
}
審核編輯:湯梓紅
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • dll
    dll
    +關注

    關注

    0

    文章

    114

    瀏覽量

    45266
  • 接口
    +關注

    關注

    33

    文章

    8257

    瀏覽量

    149976
  • 封裝
    +關注

    關注

    125

    文章

    7593

    瀏覽量

    142149
  • C++
    C++
    +關注

    關注

    21

    文章

    2085

    瀏覽量

    73304
  • 動態鏈接庫
    +關注

    關注

    0

    文章

    10

    瀏覽量

    7059

原文標題:手把手教你 封裝DLL類 給客戶端調用

文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學堂】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    LABVIEW 創建DLL 文件 字符串連接

    `想利用labview 創建dll 文件程序很簡單,就是把兩個字符串連接起來。DLL 文件
    發表于 05-23 12:27

    LabVIEW中DLL文件創建過程和編程結果

    ,并給出了編程結果。本文提供的程序創建方法可推廣應用于其他DLL文件的開發。關鍵詞:動態鏈接庫; LabVIEW; 自動測量; 儀器控制 Building and Applicatio
    發表于 05-15 07:24

    怎么為dll創建文件

    >或者,我可以導入沒有標題的DLL嗎?除非它是VEE識別的組件庫。>是否有可能為奇怪的DLL創建一個>頭文件,我不知道?你可以用dumpbin或depends來輕松獲得函數名。參數列表
    發表于 10-21 15:48

    comres.dll下載 (comres.dll文件病毒)

    描述:comres.dll是系統的動態鏈接庫文件。   文件路徑: C:WINDOWSsystem32comres.dll   備份文件路徑
    發表于 11-28 14:12 ?113次下載
    comres.<b class='flag-5'>dll</b>下載 (comres.<b class='flag-5'>dll</b><b class='flag-5'>文件</b>病毒)

    usp10.dll下載 (usp10.dll文件)

      usp10.dll是什么?usp10.dll是字符顯示腳本應用程序接口相關文件。如果出現"沒有找到usp10.dll"
    發表于 11-28 15:04 ?238次下載
    usp10.<b class='flag-5'>dll</b>下載 (usp10.<b class='flag-5'>dll</b><b class='flag-5'>文件</b>)

    如何編寫dll文件

    如何編寫dll文件:可以用幾種語言來實現,如delphi編寫dll,pb編寫dll文件,java 編寫d
    發表于 01-16 10:20 ?8793次閱讀

    如何用pb編寫dll文件

    如何用pb編寫dll文件 在Windows CE中,所有的驅動程序都以dll形式存在。Dll文件
    發表于 01-16 10:24 ?4296次閱讀

    Delphi教程之取得和修改文件創建和修改日期

    Delphi教程之取得和修改文件創建和修改日期,很好的Delphi資料,快來下載吧。
    發表于 04-11 15:59 ?6次下載

    創建基于DLL的Proteus仿真模型

    創建基于DLL的Proteus仿真模型,希望對大家有所幫助!一起學習。
    發表于 04-13 14:29 ?43次下載

    Arduino板是什么如何使用IDE軟件創建和上傳Arduino程序到Arduino板

    本章我們將研究Arduino板和IDE軟件,我們要用IDE軟件創建和上傳Arduino程序到Arduino板(Arduino用草圖表示程序,我們還是繼續用程序這個傳統術語)。我們會學到
    發表于 05-14 18:11 ?4次下載
    Arduino板是什么如何使用IDE軟件<b class='flag-5'>創建和</b>上傳Arduino<b class='flag-5'>程序</b>到Arduino板

    使用LabVIEW調用DLL文件的方法

    DLL(動態鏈接庫)文件是 Dynamic Link Library 的縮寫形式,是一種允許程序共享執行特殊任務所必需的代碼和其他資源的可執行文件。其多數情況下是帶有
    發表于 10-29 08:00 ?32次下載
    使用LabVIEW調用<b class='flag-5'>DLL</b><b class='flag-5'>文件</b>的方法

    FreeRTOS任務如何創建和刪除?

    在FreeRTOS移植到Cortex-M3硬件平臺的文章中,我們已經見過任務創建API,但那篇文章的重點在于如何移植FreeRTOS,本文將重點放在任務的創建和刪除API函數上面。 任務創建和刪除
    的頭像 發表于 03-11 18:08 ?2811次閱讀

    如何創建和使用LabVIEW中的LLB文件

    如何創建和使用LabVIEW中的LLB文件
    發表于 11-22 16:12 ?0次下載

    DLL簡介

    DLL 劫持 DLL 簡介 在 Windows 中,許多應用程序并不是一個完整的可執行文件,它們被分割成一些相對獨立的動態鏈接庫,即 DLL
    的頭像 發表于 05-22 15:51 ?1305次閱讀
    <b class='flag-5'>DLL</b>簡介

    如何使用TSMaster調用外部DLL/LIB程序

    調用外部DLL/LIB程序在用戶自定義開發過程中,常常會遇到需要調用外部DLL/LIB程序文件的需求,這些文件可能是用戶自己編寫的,也可能是
    的頭像 發表于 08-16 09:36 ?1130次閱讀
    如何使用TSMaster調用外部<b class='flag-5'>DLL</b>/LIB<b class='flag-5'>程序</b>