完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
定点dsp能不能处理浮点数,如果不能为什么通过硬件仿真可以用printf输出正确的浮点数据?
//g_lpTemp,g_lpOrient分别指向存储图像数据的两个数组 问题是下面的函数在VC6.0++中都能正确的实现,为什么在CCS3.3硬件仿真过程中实现不了? 本人用的DSP5509,是定点DSP,但是函数中用到了浮点数,不知道是不是这个原因。但如果是这个原因, 为什么在下面的测试函数里可以得到正确的浮点数(通过CCS3.3的printf输出lvx,lvy等数据),即#ifndef TEST 中可以正确的输出浮点数结果? void getOrientMap(unsigned char *g_lpTemp, unsigned char *g_lpOrient, int IMGW, int IMGH, int r) { int x,y,i,j; int vx, vy; long lvx, lvy; unsigned char *lpSrc = NULL; unsigned char *lpOri = NULL; int angle; unsigned int num; double fAngle; ........ vx = *(lpSrc + IMGW/2 + 1) - *(lpSrc + IMGW/2 - 1) + *(lpSrc + 1)*2 - *(lpSrc - 1)*2 + *(lpSrc - IMGW/2 + 1) - *(lpSrc - IMGW/2 - 1); vy = *(lpSrc + IMGW/2 - 1) - *(lpSrc - IMGW/2 - 1) + *(lpSrc + IMGW/2)*2 - *(lpSrc - IMGW/2)*2 + *(lpSrc + IMGW/2 + 1) - *(lpSrc - IMGW/2 + 1); lvx = lvx+(2*vx*vy); lvy = lvy+(vx*vx - vy*vy); .... #ifndef TEST // 求弧度 fAngle = atan2((double)lvy,(double)lvx); printf("(%d,%d)=>>lvx=%ld,lvy=%ld<<--fAngle=(%f)n",x,y,lvx,lvy,fAngle); // 变换到(0 - 2*pi) if(fAngle < 0) fAngle += 2*PI; // 求纹线角度 fAngle = fAngle*EPI/2 + 0.5; printf("<->fAngle1=%lf)",fAngle); angle = (int)fAngle; printf("angle=<<%d>>n",angle); .... } 下面是dsp硬件仿真结果:(右上角是方向图) 以下是vc6.0编程实现(最右侧是方向图) |
|
相关推荐
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于 DSP5509 进行数字图像处理中 Sobel 算子边缘检测的硬件连接电路图
3155 浏览 0 评论
784 浏览 0 评论
普中科技F28335开发板中,如何使用aic23播放由代码生成的正弦波
3591 浏览 0 评论
4355 浏览 1 评论
1355 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 13:56 , Processed in 0.581007 second(s), Total 72, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号