智汇工业-智慧工业、智能制造及工业智能、工业互联门户网站,专业的工业“互联网+”传媒

移植Opencv 1.10到WINCE/WM

來源:網絡

點擊:2169

A+ A-

所屬頻道:新聞中心

關鍵詞: Windows-Mobile,Opencv 1.10,移植

      如何把opencv1.10移植到wince/WM。因為如果懂得裁剪opencv,那么就可以在更多設備(PC,手機,開發板)上玩更多更好玩的算法,因此,移植和裁剪opencv還是很有必要的。我已經移植到wince/WM上的opencv1.10工程可以到這里:http://www.pudn.com/downloads270/sourcecode/embed/detail1235697.html,工程只含cv和cvcore這兩個核心項目,highgui與系統粘合度太大,不好移植,遲點會貼出實現部分highgui功能的例子。

      本文參考:http://www.computer-vision-software.com/blog/2009/03/running-opencv-facedetect-sample-on-pocket-pc/

      接下來,廢話不說,直接把移植cv和cvcore的步驟貼上:

      【CVCORE項目】

      cxmisc.h, line 125 to

      #elif defined WIN32 || defined WIN64 || defined WINCE

      cxswitcher.cpp,由于這個文件修改很多,所以建議從尾部往上修改,這樣容易根據行數查找。

      第六步line 57 to

      #if defined WIN32 || defined WIN64 || defined WINCE

      第五步 line 90 to

      #if defined WIN32 && !defined WIN64 && !defined WINCE

      第四步 line 137:

      #ifndef WINCE

      “HARDWARE\\DESCRIPTION\\SYSTEM\\CentralProcessor\\0\\”,

      #else

      L”HARDWARE\\DESCRIPTION\\SYSTEM\\CentralProcessor\\0\\”,

      #endif

     

      第三步 line 140:

      #ifndef WINCE

      “~MHz”,

      #else

      L”~MHz”,

      #endif

      第二步 line 435:

      #ifdef WINCE

      size_t origsize = strlen(name) + 1;

      WCHAR wname[100];

      MultiByteToWideChar(CP_ACP,0,name,origsize,wname,100);

      addr = (uchar*)GetProcAddress( plugins[idx].handle, wname );

      #else

      addr = (uchar*)GetProcAddress( plugins[idx].handle, name );

      #endif

      第一步 line 600: 。..。..修改方法同line 435

      cxerror.cpp line 45 to

      #if defined WIN32 || defined WIN64 || defined WINCE

      line 92 加入

      #define TLS_OUT_OF_INDEXES ((DWORD)0xFFFFFFFF)

      line with DllMain to

      #if defined WIN32 || defined WIN64

      BOOL WINAPI DllMain(

      #ifdef WINCE

      HANDLE

      #else

      HINSTANCE

      #endif

      , DWORD fdwReason, LPVOID )

      a fragment in cvGuiBoxReport to

      sprintf( message, “%s (%s)\nin function %s, %s(%d)\n\n”

      “Press \”Abort\” to terminate application.\n”

      “Press \”Retry\” to debug (if the app is running under debugger)。\n”

      “Press \”Ignore\” to continue (this is not safe)。\n”,

      cvErrorStr(code), err_msg ? err_msg : “no description”,

      func_name, file, line );

      sprintf( title, “OpenCV GUI Error Handler” );

      #ifdef WINCE

      WCHAR wmsg[2048];

      MultiByteToWideChar(CP_ACP,0,title,strlen(message),wmsg,2048);

      int answer = MessageBox( NULL, wmsg, L”OpenCV GUI Error Handler”,

      MB_ICONERROR|MB_ABORTRETRYIGNORE);

      #else

      int answer = MessageBox( NULL, message, title,

      MB_ICONERROR|MB_ABORTRETRYIGNORE|MB_SYSTEMMODAL );

      #endif

     

      cvtypes.h的#include 《emmintrin.h》的宏定義改為:

      #if defined WIN32 && (!defined WIN64 || defined EM64T) &&(!defined WINCE)&& \

      (_MSC_VER 》= 1400 || defined CV_ICC) \

      || (defined __SSE2__ && defined __GNUC__ && __GNUC__ 》= 4)

      【CV工程】

      _cvkdtree.hpp的accum_type maxvar = -std::numeric_limits 《 accum_type 》::max(); 加上#undef max

      公共問題:

      錯誤 131 error LNK2001: 無法解析的外部符號 “const type_info::`vftable‘” (??_7type_info@@6B@)

      cvsmooth.obj.

      引入Ccrtrtti.lib解決

      工程轉換

      把原cv和cvcore工程直接轉換為wince (PPC 2003 (ARM V4))的時候,工程--》屬性--》平臺--》把WIN32新建為 PPC 2003,

      屬性--》C/C++--》預處理器:

      NDEBUG;_WIN32_WCE=$(CEVER);UNDER_CE;$(PLATFORMDEFINES);WINCE;_WINDOWS;_USRDLL;CV_CE_EXPO

      RTS;$(ARCHFAM);$(_ARCHFAM_);_UNICODE;UNICODE。

      最好把C/C++的優化改為最大化速度(/O2),代碼速度優先(/Ot)。

      總結,移植opencv到wince,概括來說,只需要用宏定義設置好(區分WINCE和WIN32),以及把字符編碼的轉換搞定了,CV和CVCORE是很容易移植到wince的,同樣道理,也可以移植到其他支持平臺。不過針對運算部分的優化,就要靠用戶自己了,OPENCV跨平臺的時候是使用C/C++標準的Math類庫。。。

    (審核編輯: 智匯小新)

    聲明:除特別說明之外,新聞內容及圖片均來自網絡及各大主流媒體。版權歸原作者所有。如認為內容侵權,請聯系我們刪除。

    主站蜘蛛池模板: 宣传片拍摄-宣传片制作-三维动画-企业视频广告报价-北京环宇影音 | 智能锁十大品牌_指纹锁_智能锁加盟_开换锁-锁当家【官网】 | 深圳中安视讯科技发展有限公司 - 深圳中安视讯科技发展有限公司 深圳展厅设计_产业园区展馆设计_展馆设计公司_健康产业展馆设计_展厅设计哪家好_华竣国际 | 无尘车间_净化工程_GMP食品药品化妆品电子厂无尘净化车间_无尘室 | 抛丸机-通过式抛丸机-履带吊钩式抛丸机厂家-青岛泓霖智能设备公司 | 山东向阳电子科技有限公司-多用户集中式电能表生产厂家,NB物联网水表,刷卡水电表生产厂家,泰安智能水电表价格 | 三叶罗茨鼓风机_三叶罗茨风机厂家_山东九洲四海机械有限公司 | 金蝶软件_金蝶湖南公司_长沙金蝶软件_精斗云软件_财务软件_进销存软件_云ERP软件_金蝶软件销售电话 | 永磁耦合_重载永磁软起_能量回馈式调速器_磁力耦合器_江苏磁谷科技股份有限公司官方网站 | 品牌T恤零售/批发厂商/供应商_男女式T恤生产/设计-圣达信T恤 | 系统门窗加盟_门窗十大品牌_欧享门窗官网 | 华网,华网资讯,华网头条,华人网络家园 | 密集架,密集柜,智能密集架,档案密集架,智慧档案馆(室)一体化建设 | 制砂机_鹅卵石制砂机_河卵石制砂机_制砂机价格-上海山卓重工机械有限公司 | 瑞安网站建设_网站制作_做网站找瑞安联创网络:专业网页制作、手机网站、SEO百度网站关键字优化 软文营销推广-新闻稿发布-软文撰写-百科词条编辑-品牌全案策划推广网络营销传播-喜尚传媒 | 捷胜通运|超大件双清专线|欧美专线|订舱|订柜|订船|双清包税|纯电池运输|液体粉末专线| | 昆山开曼流体系统科技有限公司| 重庆木门_重庆木门十大品牌_重庆套装门_重庆烤漆门_重庆套装门十大品牌_重庆木门一线品牌_重庆川田木门 | 首页|广东蒙泰高新纤维股份有限公司|丙纶细旦丝|丙纶异形丝|丙纶FDY网络丝 - 广东蒙泰高新纤维股份有限公司 | 太原重卡叔叔运输有限公司-山西太原大件运输、太原物流公司、太原货运物流、太原大件运输、太原货运信息、长治物流公司、长治大件运输、晋城物流公司、晋城大件运输、忻州大件运输、朔州大件运输、阳泉大件运输、大同大件运输、吕梁大件运输、临汾大件运输、运城大件运城 | 恒升(新乡)食品有限公司 | 清关公司_进口报关公司【恒邦】进口报关流程及费用 | 济南晨阳科技有限公司-锅巴生产设备-夹心米果设备-膨化食品机械 集装箱零配件_不锈钢丝绳厂家_镀锌铁链条_合页非标件定制_上海英鑫多实业有限公司 | 桁架楼承板_钢筋桁架楼承板厂家-山东新材料科技 | 噪声治理_噪音治理公司「杭州创雅环境科技」 | 江苏广分检测技术有限公司、电力安全工具检测、苏州绝缘工具检测、昆山电力安全工具检测-广分检测技术(苏州)有限公司 | 惠声电子、广州市惠声电子科技有限公司、VBS、VBS惠声电子、VBS公共广播生产厂家、VBS广播功放生产厂家、VBS会议系统设备批发、VBSIP网络对讲系统厂家、VBS会议系统厂家、VBS智能中控厂家、VBS专业扩声厂家 | 粘土耐火砖,低气孔耐火砖-山东耐火材料 | 济宁卡尔迪机械制造有限公司_铁路换枕机_升降驾驶室_挖机加高底盘_加长臂 | 自动锁螺丝机_在线式拧螺丝机_自动化灌胶机_ab点胶机_品牌厂家 | 三相干式变压器|三相隔离变压器|上海盖能电气有限公司官方网站|上海干式变压器生产厂家 | 一体化净水器-一体化净水设备-集成式|装配式模块化净水设备-山东奕博环境 | 气动法兰软密封蝶阀-电动高温通风蝶阀-气动开关球阀-川沪阀门 | 郑州邦达电气有限公司| 合肥环氧地坪-合肥固化地坪施工-安徽地宽建筑装饰工程有限公司 | 微库仑硫氯分析仪-化学发光定氮仪-X荧光硫测定仪-泰州江河仪器有限公司 | 玉米脱皮制糁机-玉米深加工机械价格-玉米糁加工机器设备-玉米渣加工成套设备-河南粮院 | 色差宝ColorReader「3nh三恩时」专业版色差宝APP | 全球无人机网(81uav.cn)_无人机买卖、租赁服务、培训的最大门户网站 | 卧式镗铣床,道斯镗铣机床加工中心-江苏道斯数控科技有限公司 | 专业网站建设_企业品牌营销 · 北京汇仁智杰科技有限公司 |