|
求助:
我目前正在进行将opencv移植到dsp上的工作。目前我已经移植了一个cvFindChessboardCorners函数。但是对这个函数在DSP上进行测试的时候,每次程序运行了十几帧之后程序就在FVID_EXCHANGE(capBuf,cap)处跑飞。这句话应该是把用摄像头采集来的图像复制到采集区域的内存中。
程序的大体架构是这样的:
while(1){
FVID_EXCHANGE(capBuf,cap);//将采集来的图像复制到采集区域的内存中
对图像cap进行处理,并将图像保存到dis中;
FVID_EXCHANGE(disBuf,dis);//将处理过的图像复制到显示区域的内存中
}
FVID_EXCHANGE这个函数作为TI公司开发的函数,应该是没有问题的,因为如果我只是将采集来的图像显示出来即不进行任何处理的话程序会一直运行下去的。加上了图像处理的函数程序会在FVID_EXCHANGE(capBuf,cap)处跑飞。有人猜测可能是因为在进行图像处理的过程中栈溢出了才出现了这样的原因。但是我进行了这样的测试,那就是在前几帧图像还进行采集,之后就不进行采集,一直对同一帧图像进行图像处理,看看能否出现溢出。具体做法是:
while(1){
if(frame<10)
FVID_EXCHANGE(capBuf,cap);//将采集来的图像复制到采集区域的内存中
对图像cap进行处理,并将图像保存到dis中;
FVID_EXCHANGE(disBuf,dis);//将处理过的图像复制到显示区域的内存中
frame++;
}
这样的话可以看到程序是一直运行下去的,不会中途中断。于是我猜测不是由于进行图像处理而使程序的堆栈溢出导致错误。但是不是这个原因又是什么原因导致了这个情况的出现呢?
请问大家我的这样的猜测对不对,如果问题真的不是出现在图像处理过程中的话,那问题出在哪里呢?我应该如何对程序进行修改呢?
不知道大家在一直opencv函数到dsp上时有没有过遇到我这样的问题呢? |
|