OpenCV实战中:blender-feed(img_warped_s, mask_warped, corners[img_idx]);这里有异常的处理方法
剛才在跑OpenCV的程序的時候,顯示的是:blender->feed(img_warped_s, mask_warped, corners[img_idx]);這里有異常
報(bào)錯如上圖,那我能怎么辦?首先看一下blender下面的feed()函數(shù)中的各個參數(shù)都是干嘛的。我們發(fā)現(xiàn):blender->feed(img_warped_s, mask_warped, corners[img_idx]);中的各個參數(shù):
img_warped_s:是源圖
mask_warped是源圖的掩膜
corners[img_idx]表示的源圖的左上角的坐標(biāo),其中Img_idx表示的是圖片的個數(shù)。
知道了各個參數(shù)的功能,下一步就是想看看這些值是正常的嗎?
果然,一看
corner圖片的左上角竟然出現(xiàn)負(fù)值,說明問題可能出現(xiàn)在這里
然后看img_idx大小為1,還有一次是顯示為0,也就是說這個圖片數(shù)量可能是不正常的。
所以,追本溯源,看看img_idx的上限是誰。
我們發(fā)現(xiàn) Img_idx是for循環(huán)的中的變量,它的上限是num_images,也就是圖片的數(shù)量。哦,到這里,我們才真正地可以說問題大概是出在了圖片數(shù)量上。
調(diào)試的發(fā)現(xiàn)果真如此,發(fā)現(xiàn)num_images為負(fù)數(shù),這當(dāng)然不合常理。
然后呢?什么問題會導(dǎo)致圖片數(shù)量不對呢?有如下幾種可能:圖片路徑不對,resize()之后圖片大小尺寸不匹配(為什么會想到resize(),因?yàn)橹芭艽a的時候遇到過)。
到這里之后,一回想,果然是resize()之后圖片大小上下不匹配,總共用了兩次resize(),第一次用的是原尺寸,第二次用的是原尺寸的1/2,導(dǎo)致上下不一致。改成一致之后,問題解決!
你看,出現(xiàn)異常的是blender->feed(img_warped_s, mask_warped, corners[img_idx])
結(jié)果調(diào)試出來的錯誤在resize().
[總結(jié)]
每次跑程序的時候最好做記錄,你要知道你最后跑的時候用的參數(shù)是什么,防止在沒有g(shù)it 的情況下,忘掉最后設(shè)置的參數(shù)。與此同時,也說明寫注釋的重要性。
總結(jié)
以上是生活随笔為你收集整理的OpenCV实战中:blender-feed(img_warped_s, mask_warped, corners[img_idx]);这里有异常的处理方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: win10如何修改文件拓展名?
- 下一篇: 台湾国立大学郭彦甫Matlab教程笔记(