人脸跟踪cvCamShift函数的参数Illegal的问题

执行时报错:Input window has non-positive size in function cvCamShift.

源程序使用的是OpenCV官网上面提供的 设定跟踪目标图片的改进camshift例子 ,事实上只需要里面的ShadowTrack.cpp 就可以。  

 

cvCamShift函数的参数Illegal的问题一:  

       我想实现的效果是,Adaboost检测到的人脸图像后,用Camshift算法进行跟踪人脸。编写了一个Detect类,主要任务是人脸检测,但是在程序运行时总是出现cvCamShift函数不合法的情况,逐步执行,发现这样一个问题,就是在执行几次cvCamShift后cvCamShift的参数 track_window 会变成(0,0,0,0),这就导致下一次的跟踪失败。这个问题我是百思不得其解。

       在OpenCV官网上提供的一个运动目标自动跟踪的程序也存在跟踪不到目标的情况,但是也没有出现下一次跟踪cvCamShift函数的参数非法的问题。这个问题纠缠我好久,后来无意在自己定义的Detect类中发现,使用cvShowImage函数将图片显示在一个我没有定义的窗口中。将类中的cvShowImage函数删除或者cvNamedWindow一下,程序便可以正常运行。

       后来重新测试了cvShowImage函数,这个函数确实可以在窗口没有定义的情况下,将图像显示出来。以后在使用这个函数时候要注意了,说不清楚会出现什么样的情况。

 

cvCamShift函数的参数Illegal的问题二:

 

今天将人脸跟踪的程序放在Linux环境下执行,还是与问题一中一样的情况出现,这次的问题不是处在showimage函数使用没有定义的窗口,而是smin这个变量的定义问题。折腾了好久,发现smin在初始化时,如果定义的数字过大,会导致cvCamshift参数非法的情况。具体原因还不清楚,有待进一步研究。

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值