移植Opencv 1.10到WINCE/WM

1. 无法解析的外部符号 “__declspec(dllimport) const XXX::vftable“ ` 2. `无法定义 dllimport 实体` 由于自己C++基础薄弱,导致这一系列的Bug改了好久好久。。。。记录一部分,我还记得的 编译通过镇一下哈哈 Bug1 error LNK2001: 无法解析的外部符号 "__declspec(dllimport) const XXX::vftable" 无法定义 dllimport 实体 这两个都是由于宏定义引起的。我的工程中是这样定义的 #ifdef EXPORTSS #define COMMON_EXPORTS __declspec(dllexport) #else #define COMMO 阅读详情

 本文来自http://blog.youkuaiyun.com/hellogv/ ,引用必须注明出处!

上次写了在C#玩OpenSURF的演示,这次就写写如何把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类库。。。

通过手机摄像头实现动作追踪一----单帧的识别 阅读详情

相关推荐

WinCE5.0下图片任意角度旋转应用开发实践

本文还有配套的精品资源,点击获取 简介:本项目旨在开发一个在Windows CE 5.0操作系统和EVC4环境下运行的图片任意角度旋转应用。在设计过程中,开发人员需熟悉图形处理库如GDI或GDI+,处理图片格式如BMP、JPEG、PNG,使用仿射变换和旋转矩阵算法进行图像旋转,注意内存管理和性能优化,设计用户界面,处理潜在错误,并进行设备兼容性测试和详细测试以确保软件的稳定...

weixin_36238982的博客 1396

error LNK2001: 无法解析的外部符号 "__declspec(dllimport) class std::basic_ostream

调用静态库中的一个方法,然后本工程编译错误,找到静态库中使用了cout,导致的   去掉就可以了具体原因未找到,可能标准输出cout与哪里冲突了1>error LNK2001: 无法解析的外部符号 "__declspec(dllimport) class std::basic_ostream > std::cout" (__imp_?cout@std@@3V?$basic_ostream@DU?$

u011737099的专栏 7048

WinCE调用的OpenCV动态库

WinCE调用的OpenCV动态库.。

opencv1.1 vs2005 for wince6

1.将opencv1.1下 cxcore, cv, ml,  cvaux工程删除,然后新建工程-》智能设备-》win32智能项目(在相应目录下输入工程名,如cxcore下输入cxcore工程名) 按确定 后在智能设备向导里:选择相应arm平台的sdk,应用程序项目里选静态库和空项目。完成后将现有的文件添加进去,设置好对应include目录。会出现一系列错误。a。将defined WIN32 |

老王的专栏 2727

OPENCV For WinCE

可在WinCE 6.0上运行的OpenCV,目录结构: dll include lib

opencv for wince

wince平台下的opencv版本,实测可用!

移植opencv2.3.0到wince6

前期工作: 1、使用cmake2.8配置,去掉cuda、sse、sse2选项,修改/machine:X86为/machine:thumb,修改lib为coredll.lib corelibc.lib ole32.lib oleaut32.lib uuid.lib commctrl.lib 2、如果安装有PB6导出的设备SDK需要将头文件和库文件路径优先VS2005自带的路径,否则会有STL

alien75的专栏 4928

wince移植后的opencv2.3.0,基于x86内核

wince移植后的opencv2.3.0,基于x86内核,实现部分highgui

移植Opencv 1 10到WINCE/WM

移植Opencv 1 10到WINCE/WM

qq_43666994的博客 263

Mujoco xml actuator

在MuJoCo中,actuator(执行器) 是用于定义外部力或力矩的机制,这些力或力矩可以作用于关节、肌腱或身体。执行器可以模拟各种类型的驱动器,如电机、液压缸、肌肉等。它们通过定义传输(transmission)和力生成机制(force generation)来实现对模型的控制。

m0_52113469的博客 2893

手把手教学:利用AutoDL与vLLM快速部署DeepSeek-R1大模型实战指南

本文详细介绍了如何利用AutoDL平台和vLLM框架快速部署DeepSeek-R1大模型的实战指南。从服务器配置、vLLM安装优化到模型部署的两种方案,再到性能调优和生产环境建议,手把手教你高效完成大模型部署。特别针对国内开发者遇到的网络问题提供了稳定解决方案,并分享了显存优化、磁盘清理等实用技巧。

weixin_42531779的博客 327

OpenCV WinCE/WM移植

<br />首先声明,本文来自hellogv,很好很强大,可以围观,可以搭讪。<br />上次写了在C#玩OpenSURF的演示,这次就写写如何把opencv1.10移植到wince/WM。因为如果懂得裁剪opencv,那么就可以在更多设备(PC,手机,开发板)上玩更多更好玩的算法,因此,移植和裁剪opencv还是很有必要的。我已经移植到wince/WM上的opencv1.10工程可以到这里:http://www.pudn.com/downloads270/sourcecode/embed/detail12

cpq37的专栏 1495

(三)从零开始学习模糊控制——模糊决策

模糊控制之基础——模糊数学 (一)模糊数学——基本概念 (二)模糊数学——模糊关系 (三)模糊数学——模糊决策 文章目录模糊控制之基础——模糊数学前言一、模糊决策法1.最大值原理2.模糊排序2.模糊寻优总结 前言   模糊决策是指在模糊环境下进行决策的数学理论和方法。这类问题─般具有大系统特征,系统之间的关系十分复杂,存在不能准确赋值的变量,这些变量属于模糊因素,涉及到一定的主观因素,使得子系统之间、变量之间的关系不清晰,从而必须借助排序、模糊评判等方法来进行处理。 一、模糊决策

qq_43667552的博客 4750

移动设备上使用opencv 1 10做图像识别的例子

移动设备上使用opencv 1 10做图像识别的例子

qq_43666994的博客 323

STM32F103中GPIO_Remap1_CAN1与GPIO_Remap2_CAN1的配置差异与应用场景解析

本文深入解析了STM32F103中GPIO_Remap1_CAN1与GPIO_Remap2_CAN1的配置差异与应用场景。通过剖析AFIO_MAPR寄存器,明确了两者在引脚映射(PB8/PB9 vs PD0/PD1)和适用封装上的区别,并提供了详细的配置步骤、常见陷阱排查及基于项目需求的选型指南,帮助开发者高效完成CAN引脚重映射。

u6v7w8x的博客 394

离线安装PlutoSDR硬件支持包全攻略:没有MathWorks账号也能搞定MATLAB集成

本文详细介绍了在没有MathWorks账号和网络环境的情况下,如何离线安装PlutoSDR硬件支持包并实现MATLAB集成的完整解决方案。从驱动安装、设备识别到MATLAB支持包的离线部署,提供了全面的步骤指导和常见问题排查方法,特别适合高校实验室、军工单位等内网环境使用。

js777的博客 265

移动设备上使用opencv 1.10做图像识别的例子 .

本文来自http://blog.csdn.net/hellogv/ ,引用必须注明出处!              上次说到了如何在WINCE/WM移植Opencv1.10,这次就说说如何在WM手机上使用裁剪移植后的Open1.10的例子,在opencv上使用OpenSURF(OpenSURF在GoogleCode的地址:http://code.google.com/p/opensurf1/),

chenyujing1234的专栏 1484

从RADIUS服务器到AP:实战搭建一个小型WPA2-Enterprise测试环境(FreeRADIUS + 家用路由器)

本文详细介绍了如何从零搭建WPA2-Enterprise测试环境,使用FreeRADIUS服务器和家用路由器实现企业级WiFi认证。通过实战指南,包括证书生成、EAP-PEAP配置、OpenWrt路由器设置及故障排查,帮助网络工程师和爱好者掌握802.1X协议栈的实际应用。

weixin_28715953的博客 324

移动设备上使用opencv 1.10做图像识别的例子

移动设备上使用opencv 1.10做图像识别的例子

hellogv的专栏 1万+

实战:RK3568 Android14 集成 AP6212A WiFi/BT 二合一模块

AP6212A 的集成在 RK3568 上非常成熟。只要电源、32K 时钟、SDIO 线序、UART 流控这四点硬件没问题,软件上主要是 DTS 对应的 GPIO 别填错即可。希望这篇博文能帮你一次点亮 WiFi 和蓝牙!

qq_33427070的博客 1446

【教程4>第6章>第15节】 基于I+jQ复数信号的LS信道估计和均衡实现1——matlab仿真分析,QPSK为例

在基于QPSK调制的通信系统中,LS信道估计和均衡是用于补偿信道失真、提高信号传输质量的重要技术。以下将详细介绍基于I+jQ复数信号的 LS 信道估计和均衡的实现原理与过程。可以看到,通过线性插值之后,QPSK信号的星座图可以模糊的看到四个星座点(图2),通过非线性插值之后,可以清晰的看到QPSK的四个星座点(图3)。可以看到,信道均衡显著提高了通信系统的可靠性和有效性。

FPGA/MATLAB学习教程/源码/项目合作开发 657
上一篇: 小玩OpenSURF图像识别
下一篇: 移动设备上使用opencv 1.10做图像识别的例子
欧巴Godwin
欧巴Godwin 领域专家: 操作系统技术领域 领域专家: 操作系统技术领域
博客等级 码龄20年 9690粉丝 141原创
评论 14
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值