中指和无名指发麻是什么原因| 农历五月十八是什么星座| me是什么基团| 丁香泡水喝有什么功效和作用| 12月26日是什么星座| 缺德是什么意思| 什么叫主动脉硬化| 气胸病是什么原因引起的| 老头晕是什么原因引起的| 看痘痘挂什么科| 酌情是什么意思| 绞丝旁奇念什么| 二龙戏珠是什么意思| 菊花和什么一起泡最好| 多是什么结构的字| 川芎的功效与作用是什么| 2.22是什么星座| 朱砂属于五行属什么| 紫皮大蒜和白皮大蒜有什么区别| 宫颈管积液什么意思| 分泌物豆腐渣状是什么原因| 阴虚吃什么食物| 你喜欢吃什么用英语怎么说| 海外是什么意思| 狮子座和什么座最配对| 扑感敏又叫什么名字| 腋下发黑是什么原因| 冰片是什么| 米粉和米线有什么区别| 异国他乡的异是什么意思| 胰腺炎是什么| 每天坚持黄瓜敷脸有什么效果| 南京有什么美食| eft是什么意思| 努力的意义是什么| 什么叫遗精| 外阴过敏用什么药| 反贪局局长是什么级别| 血糖高能吃什么食物| 爱慕是什么意思| 古什么今什么| 7月24日什么星座| 蟑螂对人体有什么危害| 剧情是什么意思| 总口渴是什么原因| 卡西欧属于什么档次| m代表什么单位| 喝酸梅汤有什么好处| 平常平时叫什么日| 肝阳上亢吃什么药| 目翳是什么意思| 享年是什么意思| 为什么筋膜炎一躺下才会疼| 什么是着相| 非特异性t波异常是什么意思| 勃起困难是什么原因造成的| 词又被称为什么| 满清十大酷刑是什么| 为什么叫客家人| 个体差异是什么意思| 大黄是什么| 蛤蚧是什么动物| 林黛玉是什么病| 大闸蟹什么时候吃| 2037年是什么年| 适得其反什么意思| 猫上门为什么不能赶走| apc是什么牌子| 什么叫皈依| 4月4日是什么日子| 头发出油是什么原因| 海藻是什么| 植物油是什么| 肾结石是什么症状| 小孩为什么会细菌感染| 太妹是什么意思| 龙肉指的是什么肉| 水鸭是什么鸭| 什么叫双开| 下压高是什么原因引起的| 奥美拉唑是治什么病的| 八卦脸什么意思| 嗅觉失灵是什么原因| 阿斯巴甜是什么| 世界上最小的长度单位是什么| 滚去掉三点水念什么| 一热就咳嗽是什么原因| 什么颜色的猫最旺财| 10.1是什么星座| 关节由什么组成| 贵人相助是什么意思| 检查肠道挂什么科| 五月是什么季节| dh什么意思| 氨纶是什么| 什么叫杵状指| 想请假找什么理由好| 先敬罗衣后敬人是什么意思| 蒸馏酒是什么酒| 老年人睡眠多是什么原因| 旅游带什么| 加应子是什么水果| 杨枝甘露是什么东西| 神经性头痛吃什么药好| 尿痛什么原因引起的| 农历正月十五吃什么| 现在创业做什么好| 肛门瘙痒用什么药膏| 苹果枸杞红枣煮水喝有什么功效| 那天午后我站在你家门口什么歌| cd是什么牌子| 小孩病毒性感冒吃什么药效果好| 为什么鼻毛会变白| 丁丁是什么意思| 尿少尿黄是什么原因引起的| 打喷嚏很臭是什么原因| 孩子喝什么牛奶有助于长高| 钊读什么| 什么色什么异| 笑面虎什么意思| 卡路里是什么意思| a1代表什么意思| 佝偻病什么症状| 男性夜间盗汗是什么原因| 一失足成千古恨是什么意思| 做梦笑出声是什么预兆| 小肠是干什么的| 12月3号是什么星座| 全身痒是什么原因| 湿热泄泻是什么意思| cg是什么意思| 人过留名雁过留声什么意思| 扒灰什么意思| 沙拉酱可以做什么美食| 痔疮吃什么药好的快| 低密度脂蛋白胆固醇是什么意思| 芒果不可以跟什么一起吃| mic是什么意思| 知了喜欢吃什么| 各类病原体dna测定是检查什么| 女生胸部什么时候停止发育| ua是什么牌子| vape是什么意思| 糕面是什么面| 什么是211大学| 孩子拉肚子吃什么食物好| 来忘掉错对来怀念过去是什么歌| 柠檬酸钠是什么| 早上嘴苦是什么原因| 微创人流和无痛人流有什么区别| 什么是重水| 鼠和什么属相最配对| 尖锐湿疣什么症状| 尿酸高是什么造成的| 霉菌性阴道炎用什么药效果好| 带黄金对身体有什么好处| 低置胎盘有什么危险| 什么是口爆| 下午四点多是什么时辰| 珉字五行属什么| 肝肾不足吃什么中成药| hpf是什么意思| 吃什么对肝脏好| 区人大代表是什么级别| 嘴唇发紫什么原因| 乳香是什么东西| 干性皮肤适合什么牌子的护肤品| 足交什么感觉| 九头身是什么意思| 不感冒是什么意思| 外阴炎什么症状| 梅核气有什么症状| 前庭大腺囊肿是什么原因引起的| 财库是什么意思| 火龙果是什么颜色| 嗓子疼吃什么| 复方新诺明片又叫什么| 过敏性咽炎吃什么药| 桃胶有什么功效与作用| 九门提督相当于现在什么官| 银为什么会变黑| 印堂发黑是什么原因| 备是什么意思| 单人旁的字有什么| 红楼梦为什么是四大名著之首| 萤火虫为什么发光| 湿疹是什么症状| 甲减是什么| 为什么家里有蚂蚁| trance什么意思| 活检是什么意思| 旧衣服属于什么垃圾| 生地和熟地有什么区别| 吃什么清理脑血管堵塞| 包是什么结构| 宫颈口在什么位置| 57年的鸡是什么命| 这是什么情况| 字读什么| 湿化瓶内放什么水| 为什么总打嗝| 神经性皮炎用什么药膏| 属马的女生和什么属相最配| 晕车喝什么| 莫逆之交是什么意思| 割包皮有什么好处和坏处| 什么情况下会感染hpv病毒| 宽慰是什么意思| 肝病不能吃什么| 照烧是什么意思| 很棒是什么意思| 塑料袋属于什么垃圾| 来姨妈吃什么好| 二级b超是检查什么| 巴掌是什么意思| 什么病不能吃秋葵| 五官端正是什么意思| 丝瓜炒什么| 肝s4钙化灶是什么意思| 什么是皮包公司| 为什么会长脂肪粒| 羊鞭是什么| 阴历七月是什么星座| 阴阳两虚吃什么药| 查血常规能查出什么| 粉红是什么意思| 肝脏损伤会出现什么症状| 为什么胸会痛| 老赖是什么意思| 盲袋是什么| 为什么耳鸣| 输液葡萄糖有什么作用| 伤官格是什么意思| 尿酸高会引起什么疾病| 八月一日是什么日子| 出去旅游需要带什么| 感冒咳嗽吃什么药止咳效果好| 轻描淡写是什么意思| g6pd筛查是检查什么| 月经期血块多是什么原因| 热闹的什么| 心脏超声检查是什么| 肌酸激酶高是什么意思| 胪是什么意思| 石钟乳是什么意思| 什么手机性价比高| 芝士是什么东西| 孕妇多吃什么食物好| 医学上是什么意思| 脾挂什么科| 李克勤属什么生肖| 山莨菪碱为什么叫6542| 山楂泡水喝有什么好处| 飞黄腾达是什么生肖| 腱鞘炎挂什么科室| 负责任是什么意思| 肺部阴影意味着什么| 家里进黄鼠狼是什么预兆| 喉咙痛咳嗽吃什么药| 伙计是什么意思| 6月13日是什么日子| 珍珠粉加蜂蜜做面膜有什么作用| 胸部ct可以检查出什么| 镍是什么金属| 百度
这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 ? 论坛首页 ? 嵌入式开发 ? FPGA ? opencv移植到DSP的过程

共5条 1/1 1 跳转至

opencv移植到DSP的过程

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

工程师
2025-08-05 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;

共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
额头上长斑是什么原因造成的 什么是有机物什么是无机物 应酬是什么意思 小米是什么米 血糖高能吃什么主食
吃什么降血糖最快 彩头是什么意思 女攻男受是什么意思 生长发育挂什么科 7月26日是什么星座
血脂高是什么原因 苦瓜对肝脏有什么好处 水逆什么意思 男人有腰窝意味着什么 昙花有什么功效与作用
思利及人是什么意思 阿莫西林和头孢有什么区别 梦见车翻了是什么预兆 台湾海峡属于什么海 什么是云母
为什么肛门会出血hcv7jop9ns8r.cn 钩针ch是什么意思hcv8jop0ns6r.cn 拉肚子应该吃什么hcv8jop7ns9r.cn 拔牙挂什么科hcv9jop6ns6r.cn 骷髅是什么意思hcv8jop9ns9r.cn
胆囊检查做什么检查0297y7.com 啼笑皆非的意思是什么hcv8jop0ns5r.cn 肛瘘是什么情况hcv9jop5ns2r.cn 3月5号是什么星座hcv8jop7ns0r.cn 结婚需要什么hcv8jop3ns3r.cn
铁棍山药和普通山药有什么区别hcv9jop3ns0r.cn 大姑姐最怕弟媳什么hcv8jop9ns6r.cn 转氨酶高吃什么食物降得快baiqunet.com 束缚是什么意思xinmaowt.com 乔迁送什么礼物hcv9jop0ns3r.cn
520是什么意思表白hcv9jop2ns1r.cn 胰岛素ins是什么意思hcv9jop3ns4r.cn 过年吃什么hcv9jop0ns1r.cn 奶奶的弟弟叫什么hcv9jop6ns5r.cn 肠漏是什么hcv9jop1ns1r.cn
百度