天打五雷轰是什么意思| 强迫症有什么症状| 孕妇吐得厉害有什么办法解决| 飞水是什么意思| 神经性皮炎吃什么药| 吃什么药通气放屁最快| 目是什么意思| 黄钻有什么用| 腿上紫色血丝什么原因| 抄经书有什么好处| 潮吹是什么意思| 尿道口感染吃什么药| 吃什么促进排便| 坚果是什么| 777什么意思| 天铁是什么| 穿拖鞋脚臭是什么原因| pg是什么意思| 南方是什么生肖| 脚心烧是什么原因| 什么原因导致宫外孕| 女生发个wink什么意思| 水分是什么意思| vintage什么意思| 西瓜与什么食物相克| sby是什么意思| 4月份是什么星座| 抗着丝点抗体阳性是什么| club monaco是什么牌子| 西酞普兰为什么早晨吃| 海字五行属什么| 人乳头瘤病毒39型阳性是什么意思| 芡实不能和什么一起吃| pussy 什么意思| 长期贫血对身体有什么危害| 内蒙古简称什么| ns是什么意思| 梦见被蛇追着咬是什么意思| 阴茎硬度不够吃什么药| 去湿气吃什么食物| 妇科tct检查什么| 屋里有蝙蝠有什么预兆| 夏天结婚新郎穿什么衣服图片| 什么瓜不能吃脑筋急转弯| 人情世故什么意思| 扁桃体发炎吃什么好得快| 来月经腰疼的厉害是什么原因| 血管脆是什么原因| 脊背疼是什么原因| 极差是什么| 呕吐发烧是什么原因| sp是什么面料成分| 为什么经常打嗝| 六月二十四是什么星座| 唇炎看什么科室| 嘴唇暗红色是什么原因| 平均红细胞体积偏低是什么意思| 补血吃什么食物| 胸膜炎是什么症状| 什么是题材股| 喉咙发苦是什么原因造成的| 带资进组什么意思| 禁令是什么意思| 黑布林是什么水果| 洁白丸治什么类型胃病| 肝火旺盛是什么意思| 肝实质密度减低是什么意思| 勒索是什么意思| 耳鸣是什么| 早上起床口苦是什么原因| 淋病吃什么药好的最快| 兰蔻适合什么年龄的人用| 遇难呈祥是什么生肖| 中产家庭的标准是什么| 翠字五行属什么| 广西属于什么方向| 心驰神往是什么意思| 木耳不能和什么一起吃| 10月27是什么星座| 为什么血脂会高| 来来来喝完这杯还有三杯是什么歌| 杏仁有什么好处| 头发掉是什么原因引起的| 阴蒂是什么| 左肾盂分离是什么意思| 感冒什么时候传染性最强| 临床是什么意思| 你喜欢吃什么用英语怎么说| 送巧克力代表什么意思| 北京的区长是什么级别| 高密度脂蛋白胆固醇高是什么意思| 苋菜不能和什么一起吃| 烂尾是什么意思| 乌克兰和俄罗斯为什么打仗| 单脱是什么意思| 高考300分能上什么大学| 脑梗塞用什么药效果好| 精液是什么颜色| 93年鸡五行属什么| 什么是遗憾| 水瓶座和什么座最配对| 胃出血吃什么药好| 什么是生育津贴| 女人阴虚是什么意思| 柠字五行属什么| 鼠五行属什么| 621什么星座| 封闭是什么意思| elle是什么档次的牌子| 土豆有什么营养价值| dvt是什么意思| 天使轮是什么意思| 鼓目念什么| 刷墙的白色涂料叫什么| 得了肠胃炎吃什么最好| 6月8号什么星座| 2020属什么生肖| 米索前列醇片是什么药| 开什么店好| 11月14号什么星座| 敬谢不敏什么意思| 脂肪瘤是什么引起的| 高血压吃什么水果好| 胎儿腹围偏大说明什么| 车迟国的三个妖怪分别是什么| 吃避孕药不能吃什么东西| 传说中的狮身人面像叫什么名字| 低钾血症有什么症状| 什么什么为什么| 下巴的痣代表什么| 嘴唇上起泡是什么原因| 胃肠镜检查挂什么科| 肾湿热吃什么中成药| 有机物是什么| 吃银耳有什么好处和坏处| 怀孕后吃避孕药有什么后果| 农历五月十九是什么日子| 千米的字母是什么| 总胆红素偏高是什么引起的| 色痨是什么病| 零星是什么意思| 珑骧包属于什么档次| 法身是什么意思| 儿童流鼻涕吃什么药| 否认是什么意思| 你喜欢吃什么用英语怎么说| 为什么会胎停| 舐犊是什么意思| 为什么会得子宫肌瘤| 煎中药用什么容器最好| 怀孕有积液是什么原因| 血糖和尿糖有什么区别| 肉瘤是什么样子图片| 篦子是什么东西| 检查肾脏挂什么科| 月经突然提前一周是什么原因| 雄起是什么意思| 艾滋病是什么病毒| 吃什么可以提高新陈代谢| 鸡壳是什么| u是什么单位| 加湿器用什么水比较好| 眉中间有竖纹代表什么| 失眠是什么原因引起的| 高压正常低压低是什么原因| 迂回战术什么意思| 什么是音爆| 什么是化学| 被蜜蜂蛰了涂什么药膏| 列席人员什么意思| 一什么而入| 晟读什么| 什么节日吃饺子| 六月初四是什么星座| 话唠是什么意思| 怀孕一个月有什么症状| 女人吃人参有什么好处| 考科目二紧张吃什么药| 电视剧靠什么赚钱| 萌是什么意思| 脑供血不足吃什么| 冬占生男是什么意思| 木星是什么颜色| 雪蛤是什么| 儿童心肌酶高有什么症状| 眼睑痉挛挂什么科| 烤箱能做什么美食| 5月17日是什么星座| 牙疼吃什么药效果好| bobby什么意思| 双数是什么| 87年属什么的生肖| 人为什么会得抑郁症| 红斑狼疮是什么病图片| 吃了安宫牛黄丸要禁忌什么不能吃| 腰疼是什么原因引起的| 太阳病是什么意思| 坐骨神经痛用什么药最好| 捻子泡酒有什么功效| 喝茶有什么坏处| 小便赤黄是什么原因| 白细胞阴性什么意思| 室性逸搏是什么意思| 婴儿第一次发烧叫什么| 人生海海是什么意思| 大小脸去医院挂什么科| 鬼迷日眼是什么意思| 冠状动脉粥样硬化性心脏病吃什么药| 马太效应什么意思| 平五行属什么| 107是什么意思| 王朝马汉是什么意思| 什么牌子的保温杯好| 酷盖是什么意思| 肾阳不足吃什么中成药| 孕妇待产需要准备什么| 擦伤用什么药| 亚甲蓝注射起什么作用| 大腿根部内侧瘙痒用什么药膏| 庚戌五行属什么| 辐射是什么| 熊猫血有什么好处| 吃什么升血压| 女人绝经一般在什么年龄段| 龟苓膏是什么| 食管反流用什么药| 深圳为什么叫鹏城| 失聪是什么意思| 黄瓜可以和什么一起榨汁| 知天命是什么年纪| pt是什么时间| 肾透析是什么意思| 白喉是什么意思| 高原反应有什么症状| 什么食物含硒量最高| 金渐层是什么品种| 异型增生是什么意思啊| 一什么凉席| 汉尼拔什么意思| 黄疸肝炎有什么症状| 什么叫活佛| 儿童吃什么钙片补钙效果好| 燊读什么| 什么的太空| 羊水污染是什么原因造成的| 冲凉是什么意思| 为什么不呢| 属虎和什么属相相冲| 城隍是什么意思| poct是什么意思| 跟腱炎贴什么膏药最好| 汤圆和元宵有什么区别| 喝什么可以美白| 巨是什么结构| 小孩肠胃炎吃什么药| 晚饭吃什么好| 眼圈发黑什么原因| 舌头白吃什么药| 宝宝肠胃炎吃什么药| 痰核流注什么意思| 制氧机什么牌子好| 飞龙是什么| 鄂尔多斯为什么叫鬼城| 儿童流鼻涕吃什么药| 百度
这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 ? 论坛首页 ? 嵌入式开发 ? FPGA ? opencv移植到DSP的过程

共8条 1/1 1 跳转至

opencv移植到DSP的过程

工程师
2025-08-04 12:42:19     打赏
首先我们了解一下如何使用emcv,emcv是OpenCV针对C6000系列DSP的移植版本,目前只完成了我们工作中用到的部分。 下面对如何使用emcv做个简单的介绍: 1. 找到一个可用的demo 我们使用的是video_loopback例子,这个程序中DSP只是简单地将摄像头采集到的图像 显示出来。显示的过程是将采集帧缓冲的数据复制到显示帧缓冲中。 2. 将demo工程改为C++工程 简单的说,就是将工程中所有的*.c文件改为*.cpp文件。 因为C++基本兼容C,所以在cpp中还可以按照C语言的方式来开发。 如果开发板带的demo写的够规范,从C迁移到C++应该不会有任何问题。 不过实际的代码可能会出现一点。以videoloopback为例,在将工程改为C++之后 出现了15个错误: 代码: ----------------------??seedvpm642_vedioloop.pjt - LOOP2??---------------------- "c:\ti\c6000\cgtools\bin\cl6x" -g -fr"C:/work/test/video_loopback/LOOP2" -i"C:/work/test/video_loopback/include" -d"_DEBUG" -d"CHIP_DM642" -d"_LOOP2_" -mv6400 -@"../LOOP2.lkf" "appData.cpp" "c:\ti\c6000\cgtools\bin\cl6x" -g -fr"C:/work/test/video_loopback/LOOP2" -i"C:/work/test/video_loopback/include" -d"_DEBUG" -d"CHIP_DM642" -d"_LOOP2_" -mv6400 -@"../LOOP2.lkf" "boot.asm" "c:\ti\c6000\cgtools\bin\cl6x" -g -fr"C:/work/test/video_loopback/LOOP2" -i"C:/work/test/video_loopback/include" -d"_DEBUG" -d"CHIP_DM642" -d"_LOOP2_" -mv6400 -@"../LOOP2.lkf" "seedvpm642main.cpp" "C:/work/test/video_loopback/include/edc.h", line 48: error: expected a declaration "seedvpm642main.cpp", line 41: warning: return type "int" omitted in declaration of function "main" 1 error detected in the compilation of "seedvpm642main.cpp". "c:\ti\c6000\cgtools\bin\cl6x" -g -fr"C:/work/test/video_loopback/LOOP2" -i"C:/work/test/video_loopback/include" -d"_DEBUG" -d"CHIP_DM642" -d"_LOOP2_" -mv6400 -@"../../LOOP2.lkf" "seedvpm642_vcapparamsPAL_EMBEDDED.cpp" "C:/work/test/video_loopback/include/edc.h", line 48: error: expected a declaration "C:/work/test/video_loopback/include/tvp51xx.h", line 43: error: identifier "TVP51XX_Mode" is undefined "C:/work/test/video_loopback/include/tvp51xx.h", line 44: error: identifier "TVP51XX_AnalogFormat" is undefined "seedvpm642_vcapparamsPAL_EMBEDDED.cpp", line 71: error: identifier "TVP51XX_MODE_PAL601" is undefined "seedvpm642_vcapparamsPAL_EMBEDDED.cpp", line 72: error: identifier "TVP51XX_AFMT_COMPOSITE" is undefined At end of source: error: expected a "}" 6 errors detected in the compilation of "seedvpm642_vcapparamsPAL_EMBEDDED.cpp". "c:\ti\c6000\cgtools\bin\cl6x" -g -fr"C:/work/test/video_loopback/LOOP2" -i"C:/work/test/video_loopback/include" -d"_DEBUG" -d"CHIP_DM642" -d"_LOOP2_" -mv6400 -@"../../LOOP2.lkf" "seedvpm642_vdisparamsPAL.cpp" "C:/work/test/video_loopback/include/edc.h", line 48: error: expected a declaration "seedvpm642_vdisparamsPAL.cpp", line 109: error: a value of type "void *" cannot be used to initialize an entity of type "EDC_Fxns *" "seedvpm642_vdisparamsPAL.cpp", line 118: error: a value of type "void *" cannot be used to initialize an entity of type "I2C_Handle" At end of source: error: expected a "}" 4 errors detected in the compilation of "seedvpm642_vdisparamsPAL.cpp". "c:\ti\c6000\cgtools\bin\cl6x" -g -fr"C:/work/test/video_loopback/LOOP2" -i"C:/work/test/video_loopback/include" -d"_DEBUG" -d"CHIP_DM642" -d"_LOOP2_" -mv6400 -@"../LOOP2.lkf" "tskloopback.cpp" "C:/work/test/video_loopback/include/edc.h", line 48: error: expected a declaration At end of source: error: expected a "}" 2 errors detected in the compilation of "tskloopback.cpp". "c:\ti\c6000\cgtools\bin\cl6x" -g -fr"C:/work/test/video_loopback/LOOP2" -i"C:/work/test/video_loopback/include" -d"_DEBUG" -d"CHIP_DM642" -d"_LOOP2_" -mv6400 -@"../LOOP2.lkf" "tskvideocapturevp1.cpp" "C:/work/test/video_loopback/include/edc.h", line 48: error: expected a declaration At end of source: error: expected a "}" 2 errors detected in the compilation of "tskvideocapturevp1.cpp". "c:\ti\c6000\cgtools\bin\cl6x" -g -fr"C:/work/test/video_loopback/LOOP2" -i"C:/work/test/video_loopback/include" -d"_DEBUG" -d"CHIP_DM642" -d"_LOOP2_" -mv6400 -@"LOOP2.lkf" "seedvpm642cfg.s62" "c:\ti\c6000\cgtools\bin\cl6x" -g -fr"C:/work/test/video_loopback/LOOP2" -i"C:/work/test/video_loopback/include" -d"_DEBUG" -d"CHIP_DM642" -d"_LOOP2_" -mv6400 -@"LOOP2.lkf" "seedvpm642cfg_c.c" Build Complete, ??15 Errors, 1 Warnings, 0 Remarks. 错误虽然感觉很多,其实只有简单的几类。首先看看第一个错误: 代码: "C:/work/test/video_loopback/include/edc.h", line 48: error: expected a declaration 找到对应的代码: 代码: // edc.h #ifdef __cplusplus { #endif #endif /* _EDC_H */ 这是一个简单的笔误,作者将'}'误写为'{'了。C++中函数正规的写法是: 代码: #ifndef _EDC_H #define _EDC_H ? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? #ifdef __cplusplus extern "C" { #endif // 这是C++实现的函数 // 但是C语言中也可以使用 // 对应汇编过程名字为 _cpp_fun,和C语言的编译规则一直 void cpp_fun(); #ifdef __cplusplus } #endif #endif /* _EDC_H */ 添加extern "C" {语句的原因是,C++中由于支持函数重载,一个函数的名字可能有几个; 在编译到汇编的时候,这些函数可能被重新命名(不是简单的在开头添加下划线'_'), 这样C语言或汇编在链接由C++实现的函数的时候就会找不到具体位置。



关键词: opencv     移植     过程     video     loopba    

工程师
2025-08-04 12:42:58     打赏
2楼
将第一个错误修改之后重新编译,现在只有2个错误: 代码: ----------------------??seedvpm642_vedioloop.pjt - LOOP2??---------------------- "c:\ti\c6000\cgtools\bin\cl6x" -g -fr"C:/work/test/video_loopback/LOOP2" -i"C:/work/test/video_loopback/include" -d"_DEBUG" -d"CHIP_DM642" -d"_LOOP2_" -mv6400 -@"../LOOP2.lkf" "seedvpm642main.cpp" "seedvpm642main.cpp", line 41: warning: return type "int" omitted in declaration of function "main" "c:\ti\c6000\cgtools\bin\cl6x" -g -fr"C:/work/test/video_loopback/LOOP2" -i"C:/work/test/video_loopback/include" -d"_DEBUG" -d"CHIP_DM642" -d"_LOOP2_" -mv6400 -@"../../LOOP2.lkf" "seedvpm642_vcapparamsPAL_EMBEDDED.cpp" "c:\ti\c6000\cgtools\bin\cl6x" -g -fr"C:/work/test/video_loopback/LOOP2" -i"C:/work/test/video_loopback/include" -d"_DEBUG" -d"CHIP_DM642" -d"_LOOP2_" -mv6400 -@"../../LOOP2.lkf" "seedvpm642_vdisparamsPAL.cpp" "seedvpm642_vdisparamsPAL.cpp", line 109: error: a value of type "void *" cannot be used to initialize an entity of type "EDC_Fxns *" "seedvpm642_vdisparamsPAL.cpp", line 118: error: a value of type "void *" cannot be used to initialize an entity of type "I2C_Handle" 2 errors detected in the compilation of "seedvpm642_vdisparamsPAL.cpp". "c:\ti\c6000\cgtools\bin\cl6x" -g -fr"C:/work/test/video_loopback/LOOP2" -i"C:/work/test/video_loopback/include" -d"_DEBUG" -d"CHIP_DM642" -d"_LOOP2_" -mv6400 -@"../LOOP2.lkf" "tskloopback.cpp" "c:\ti\c6000\cgtools\bin\cl6x" -g -fr"C:/work/test/video_loopback/LOOP2" -i"C:/work/test/video_loopback/include" -d"_DEBUG" -d"CHIP_DM642" -d"_LOOP2_" -mv6400 -@"../LOOP2.lkf" "tskvideocapturevp1.cpp" Build Complete, ??2 Errors, 1 Warnings, 0 Remarks.

工程师
2025-08-04 12:44:12     打赏
3楼
将第一个错误修改之后重新编译,现在只有2个错误: 代码: ----------------------??seedvpm642_vedioloop.pjt - LOOP2??---------------------- "c:\ti\c6000\cgtools\bin\cl6x" -g -fr"C:/work/test/video_loopback/LOOP2" -i"C:/work/test/video_loopback/include" -d"_DEBUG" -d"CHIP_DM642" -d"_LOOP2_" -mv6400 -@"../LOOP2.lkf" "seedvpm642main.cpp" "seedvpm642main.cpp", line 41: warning: return type "int" omitted in declaration of function "main" "c:\ti\c6000\cgtools\bin\cl6x" -g -fr"C:/work/test/video_loopback/LOOP2" -i"C:/work/test/video_loopback/include" -d"_DEBUG" -d"CHIP_DM642" -d"_LOOP2_" -mv6400 -@"../../LOOP2.lkf" "seedvpm642_vcapparamsPAL_EMBEDDED.cpp" "c:\ti\c6000\cgtools\bin\cl6x" -g -fr"C:/work/test/video_loopback/LOOP2" -i"C:/work/test/video_loopback/include" -d"_DEBUG" -d"CHIP_DM642" -d"_LOOP2_" -mv6400 -@"../../LOOP2.lkf" "seedvpm642_vdisparamsPAL.cpp" "seedvpm642_vdisparamsPAL.cpp", line 109: error: a value of type "void *" cannot be used to initialize an entity of type "EDC_Fxns *" "seedvpm642_vdisparamsPAL.cpp", line 118: error: a value of type "void *" cannot be used to initialize an entity of type "I2C_Handle" 2 errors detected in the compilation of "seedvpm642_vdisparamsPAL.cpp". "c:\ti\c6000\cgtools\bin\cl6x" -g -fr"C:/work/test/video_loopback/LOOP2" -i"C:/work/test/video_loopback/include" -d"_DEBUG" -d"CHIP_DM642" -d"_LOOP2_" -mv6400 -@"../LOOP2.lkf" "tskloopback.cpp" "c:\ti\c6000\cgtools\bin\cl6x" -g -fr"C:/work/test/video_loopback/LOOP2" -i"C:/work/test/video_loopback/include" -d"_DEBUG" -d"CHIP_DM642" -d"_LOOP2_" -mv6400 -@"../LOOP2.lkf" "tskvideocapturevp1.cpp" Build Complete, ??2 Errors, 1 Warnings, 0 Remarks. 找到出现错误的代码(2个错误在一起): 代码: VPORT_PortParams EVMDM642_vDisParamsPort = { ? ? FALSE,? ?? ?? ?? ?? ?? ?? ? /*??enableDualChan;? ???*/ ? ? VPORT_POLARITY_ACTIVE_HIGH, /* vport control pin 1 polarity? ? */ ? ? VPORT_POLARITY_ACTIVE_HIGH, /* vport control pin 2 polarity? ? */ ? ? VPORT_POLARITY_ACTIVE_HIGH, /* vport control pin 3 polarity? ? */ ? ? &SAA7105_Fxns, ? ? INV, };? ? ? ?? ?? ??? SAA7105_ConfParams EVMDM642_vDisParamsSAA7105 = { ??SAA7105_AFMT_SVIDEO, ??SAA7105_MODE_PAL720, ??SAA7105_IFMT_YCBCR422_INTERLACED, ??TRUE, ??TRUE, ??INV,? ?? ?? ?? ?? ?? ? /*handleI2C */ }; 都是提示类型不匹配。这个错误的产生原因是C++编译器对类型的检测更加严格。 在C语言中void*指针可能方便的和其他指针转换,但是C++中可能需要手工强制转换。 INV的定义可能和NULL类似,是一个无效值: 代码: csl_stdinc.h(39):??#define INV? ? ((void*)(-1)) 我们将INV增加一个强制类型转换来遍面编译器的错误: 代码: VPORT_PortParams EVMDM642_vDisParamsPort = { ? ? FALSE,? ?? ?? ?? ?? ?? ?? ? /*??enableDualChan;? ???*/ ? ? VPORT_POLARITY_ACTIVE_HIGH, /* vport control pin 1 polarity? ? */ ? ? VPORT_POLARITY_ACTIVE_HIGH, /* vport control pin 2 polarity? ? */ ? ? VPORT_POLARITY_ACTIVE_HIGH, /* vport control pin 3 polarity? ? */ ? ? &SAA7105_Fxns, ? ? (EDC_Fxns *)INV };? ? ? ?? ?? ??? SAA7105_ConfParams EVMDM642_vDisParamsSAA7105 = { ??SAA7105_AFMT_SVIDEO, ??SAA7105_MODE_PAL720, ??SAA7105_IFMT_YCBCR422_INTERLACED, ??TRUE, ??TRUE, ??(I2C_Handle)INV? ?? ?? ?? ?? ?? ? /*handleI2C */ }; 2个结构中类型分别为(EDC_Fxns *)和 (I2C_Handle)。 然后在重新编译。编译已经没有错误,但是出现2个link错误: 代码: ----------------------??seedvpm642_vedioloop.pjt - LOOP2??---------------------- "c:\ti\c6000\cgtools\bin\cl6x" -g -fr"C:/work/test/video_loopback/LOOP2" -i"C:/work/test/video_loopback/include" -d"_DEBUG" -d"CHIP_DM642" -d"_LOOP2_" -mv6400 -@"../../LOOP2.lkf" "seedvpm642_vdisparamsPAL.cpp" "c:\ti\c6000\cgtools\bin\cl6x" -@"LOOP2.lkf" undefined? ?? ?? ?? ?? ?? ?? ?? ?first referenced symbol? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?in file ---------? ?? ?? ?? ?? ?? ?? ?? ?---------------- _tskVideoCaptureVp1? ?? ?? ?? ???C:\work\test\video_loopback\LOOP2\seedvpm642cfg.obj _tskVideoLoopback? ?? ?? ?? ?? ? C:\work\test\video_loopback\LOOP2\seedvpm642cfg.obj ? ?error: symbol referencing errors - './LOOP2/seedvpm642_vedioloop.out' not ? ?? ?? ?? ?built Build Complete, ??1 Errors, 0 Warnings, 0 Remarks _tskVideoCaptureVp1和_tskVideoLoopback对应C++函数编译后的汇编名字。 C语言中规则是添加“_”前缀表示函数在汇编中的名称,例如main函数在汇编中为_main。 但是C++不行,原因在之前已经说过,C++有重载。比如有以下函数: 代码: void fun(const char* msg) { ? ?printf("%s\n", msg); } void fun(int val) { ? ?printf("%d\n",val); } int main() { ? ?fun("hello"); ? ?fun(123); ? ?return 0; } 函数fun有2个,如果将fun简单用_前缀的话,就会出现2个不同的函数,但是名字都是_fun。 C++的处理方法是重命名,第一个可能被命名为_fun_const_char_XCC1,第二个可能为_fun_int_SXX。 名字中除了参数信息,可能还有一些随机字串(这样是为了避免冲突)。 现在如果想将void fun(int val)函数导出为C语言接口怎么办?这就要在声明的时候添加extern "C"修饰。 这2个的函数声明在"seedvpm642_tskvp1.h"头文件中,打开"seedvpm642_tskvp1.h",发现里面没有 代码: #ifdef __cplusplus extern "C" { #endif 之类的代码。这说明这个demo的"seedvpm642_tskvp1.h"头文件写的不标准,只能在C语言中用, 不能在C++中使用,修改的方式可以参考ti标准的头文件(例如): 代码: /* *??Copyright 2004 by SEED Incorporated. *??All rights reserved. Property of SEED Incorporated. *??Restricted rights to use, duplicate or disclose this code are *??granted through contract. *?? */ #ifdef __cplusplus extern "C" { #endif /* * ======== tskVideoCaptureVp1Init ======== * video capture function init. */ void VideoCaptureVp1Init(); /* * ======== tskVideoCaptureVp1Start ======== * video capture function start. */ void VideoCaptureVp1Start(); /* * ======== tskVideoCaptureVp1 ======== * video capture function. */ void tskVideoCaptureVp1(); #ifdef __cplusplus } #endif 之前的头文件缺少void tskVideoCaptureVp1();函数声明,现在补上。另外,缺少头文件重复包含的控制, 也应该补上,类似方法如下: 代码: #ifndef **_H #define **_H #ifdef __cplusplus extern "C" { #endif // 放各种声明 #ifdef __cplusplus } #endif #endif // **_H 重新build,link错误还剩1个: 代码: undefined? ?? ?? ?? ?? ?? ?? ?? ?first referenced symbol? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?in file ---------? ?? ?? ?? ?? ?? ?? ?? ?---------------- _tskVideoLoopback? ?? ?? ?? ?? ? C:\work\test\video_loopback\LOOP2\seedvpm642cfg.obj ? ?error: symbol referencing errors - './LOOP2/seedvpm642_vedioloop.out' not ? ?? ?? ?? ?built Build Complete, ??1 Errors, 3 Warnings, 0 Remarks. 同样的方法解决。

工程师
2025-08-04 12:44:56     打赏
4楼
终于将demo工程改为C++。下面将emcv下载下来,放置到cmcv目录。 然后将emcv的cxcore目录中的cpp文件添加到工程,然后编译。 如果编译有错误,处理错误。迭代直到可以编译。 将cv中的cpp导入工程,确保可以编译。 暂停!!! 现在videoloopback虽然没有使用emcv的1行代码,但是在不改变程序本身功能的前提下已经包含的emcv库资源(我们可以随时使用)。 简单的就是手工创建一些IplImage,然后测试。

工程师
2025-08-04 12:45:29     打赏
5楼
另外需要注意一下: 由于是移植到Davinci系列的6437内核上,所以需要注意要添加的库为rts64plus.lib. 写测试程序时不要忘了添加需要用的的头文件,如#include "_cv.h"等.下面是一个测试程序,用来读入Lena.bmp并将其二值化(目前我移植的emcv 还支持bmp). #include #include #include "_cv.h" #include "_cxcore.h" int main() { ? ? FILE*? ???f_in = NULL; ? ? FILE*? ???f_out = NULL; ? ? long len = 0; ? ? char*? ? buf=NULL; ? ? //声明IplImage指针 IplImage* pImg = NULL; IplImage* pBinImg = NULL; if( (pImg = cvLoadImage("../Lena_Little8.bmp", 1)) != 0 ) ? ? { ? ?? ?//为canny边缘图像申请空间 ? ?? ?pBinImg = cvCreateImage(cvGetSize(pImg), ? ?? ?? ?? ?? ?? ???IPL_DEPTH_8U, ? ?? ?? ?? ?? ?? ???1); ? ?? ?cvThreshold(pImg,pBinImg,91, 255.0, CV_THRESH_BINARY); ? ?? ?cvSaveImage("../Lena_Little8_Bin.bmp",pBinImg); ? ?? ?cvReleaseImage( &pImg ); ? ?? ?cvReleaseImage( &pBinImg ); ? ? } ? ? return 0;

菜鸟
2025-08-04 14:48:17     打赏
6楼
百度 都说认真的女孩最美丽,低头凝视某一处地方的时候,或者低头在思考一件事情的时候,这个时候抓拍一张,也是非常的知性和美丽了!大字型拥抱如果你刷刘雯的微博的时候注意到她的日常照片,会发现有非常多同一种姿势,就是大字型!可以说是大字型,但也像一个大大的拥抱。

这个过时了,opencv 2.4.6 也可以移植和优化


菜鸟
2025-08-04 20:43:20     打赏
7楼

您好,我想请教个问题。在移植的过程中我遇到这样的错误:

unresolved symbol _cvConvertScale, first referenced in ./src/quwu.obj
unresolved symbol _cvGet2D, first referenced in ./src/quwu.obj
unresolved symbol _cvGetReal2D, first referenced in ./src/quwu.obj
unresolved symbol _cvSet2D, first referenced in ./src/quwu.obj
unresolved symbol _VPCapChaAIsr, first referenced in ./src/ves_dm642.obj
unresolved symbol _VPDispIsr, first referenced in ./src/ves_dm642.obj
unresolved symbol GuidedFilter_Color(CvMat, first referenced in *,

参照您上面的帮助,我看到CXCORE.H里有加ifndef **_H #define **_H #ifdef __cplusplus extern "C" { #endif // 放各种声明 #ifdef __cplusplus } #endif #endif //这样的声明,请问我这要怎么解决呢?


菜鸟
2025-08-04 09:02:24     打赏
8楼

真牛的东东都有,经典


共8条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
女性睾酮高说明什么 痛风吃什么药最有效 女士喝什么茶叶对身体好 2017是什么年 自我意识是什么意思
霍光和卫子夫什么关系 碧文圆顶是什么意思 女性备孕吃什么养卵泡 盆腔少量积液什么意思 sancanal是什么牌子
犹太人什么意思 稀料对人体有什么危害 鹰头皮带是什么牌子 喝酒胃出血吃什么药 来月经吃什么排得最干净
女性雄激素过高是什么原因引起的 天天喝白酒对身体有什么危害 相貌是什么意思 家里为什么会有蚂蚁 榴莲有什么功效
梦见自己掉头发是什么意思hcv8jop9ns2r.cn 氯胺酮是什么hcv9jop8ns3r.cn 24度穿什么衣服合适hcv9jop1ns5r.cn 苗字五行属什么hcv8jop4ns7r.cn 老梗是什么病hcv8jop4ns9r.cn
日出东方下一句是什么hcv8jop5ns1r.cn lv什么品牌hcv9jop8ns2r.cn 胸闷气短吃什么药hcv9jop2ns8r.cn 气胸是什么意思hcv9jop2ns7r.cn 阿奇霉素是什么药hcv7jop6ns2r.cn
泰格豪雅属于什么档次bjcbxg.com 什么鞋油好用hcv8jop6ns6r.cn 灾煞是什么意思hcv7jop9ns5r.cn 梦见自己爷爷死了是什么预兆hcv8jop5ns8r.cn 水逆是什么hcv8jop6ns0r.cn
百香果什么时候吃最好hcv9jop5ns4r.cn 梦见仙鹤是什么意思hcv8jop0ns4r.cn 什么是琉璃hcv8jop3ns0r.cn 结肠多发息肉是什么意思hcv8jop0ns5r.cn 慈禧属什么生肖hcv9jop0ns3r.cn
百度