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