图像处理项目总结 (排错经验)

最近完成一交通标志检测与识别项目,框架为ubuntu上opencv用c/c++开发。

一个项目好的算法、思想是很重要的一方面,编程实现也很重要。

而且个人实现时总会遇到许多意料不到的问题。虽然正确的程序看起来理所当然,但实际排起错来挺费时的。

下面步入正题:

        opencv使用时的常见一般又不易发现的坑

                     1. resize问题   此函数正确调用格如下

cv::resize (image,image, cv::Size (Height,Weight),INTER_LINEAR);

                     2. OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cvtColor, file /build/opencv-SviWsf/opencv-2.4.9.1+dfsg/modules/imgproc/src/color.cpp, line 3737
terminate called after throwing an instance of 'cv::Exception'

  what():  /build/opencv-SviWsf/opencv-2.4.9.1+dfsg/modules/imgproc/src/color.cpp:3737: error: (-215) scn == 3 || scn == 4 in function cvtColor

   这个问题一般是由于将已经是灰度图的图片继续转为灰度图时引起的,写程序时要注意传递的Mat矩阵是不是已经是灰度阵了。

                     3. 各种内存报错

                       主要是指针操作时边界问题。在项目实际应用中,使用指针可以获取最快的速度,但高收益和高风险并存,在指针操作矩阵时一定要注意内存空间分配、边界问题。有时程序较复杂时,可以在纸上列出指针操作的实际情况,这样看起来比较直观,易于排查理解。    还有就是有些情况下程序可能没有问题,但这并步意味着万事大吉,只是可能没有遇到让程序崩溃的问题而已。在实际项目中,一定要全面考虑这些因素。考虑到可能出现的各种情况,做好情况判断和异常处理工作。保证程序在各种工况下都可以强健到运行。

排错时多输出变量的相关信息,这样能充分掌握程序运行时的各种信息,也更易于精准的发现错误之处。

猜你喜欢

转载自blog.csdn.net/tiankongtiankong01/article/details/79853771
今日推荐