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

最近完成一交通标志检测与识别项目,框架为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. 各种内存报错

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值