[問題] imwrite error

看板Python作者 (波)時間3年前 (2020/07/15 22:17), 編輯推噓2(2021)
留言23則, 4人參與, 3年前最新討論串1/1
目前寫一個main.py的程式去讀取catch.py catch.py的功能主要是用來做圖像處理的程式 main.py就讓他批量去引圖片處理完的結果 程式流程大概如圖 https://i.imgur.com/xewHiPf.jpg
可是回傳結果我用imwrite將圖片存下 前幾張圖片確實有存下來, 可是到第9張圖的時候他就出現以下錯誤 https://i.imgur.com/rCHxSwN.jpg
error: (-215:Assertion failed) !_img.empty() in function 'cv::imwrite' 當我把有問題的第9張圖刪掉就沒這問題, 只是跑到後面第xx張圖片又有同樣狀況, 想說是不是圖片本身的問題 但我單獨拿有問題的圖片到catch.py做圖像處理, 結果又是正常的 我把imwrite先註解掉就沒有出現報錯的問題 1000多張圖片也有正常返回圖片的數值 https://i.imgur.com/2jIH5wD.jpg
目前懷疑是imwrite程式有問題 爬了文說可能是返回值為空 但實測結果值是有返回的 想請問出現上述的情況比較有可能的原因是什麼? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.140.166.218 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1594822669.A.DC8.html

07/16 00:45, 3年前 , 1F
去看看那隻cpp
07/16 00:45, 1F

07/16 04:42, 3年前 , 2F
先檢查圖片有沒有讀到
07/16 04:42, 2F

07/16 17:25, 3年前 , 3F
我要照他的路徑沒看到cpp這隻檔案
07/16 17:25, 3F

07/16 17:27, 3年前 , 4F
我測試圖片有讀到,可是唯獨到imwrite就會出現問題,有
07/16 17:27, 4F

07/16 17:27, 3年前 , 5F
用try和expect去測試
07/16 17:27, 5F

07/16 17:30, 3年前 , 6F
except
07/16 17:30, 6F

07/16 22:09, 3年前 , 7F
source: https://git.io/JJGQ9 這行在檢查要寫出的
07/16 22:09, 7F

07/16 22:11, 3年前 , 8F
資料 _img 是不是空的陣列。所以原因應該在 catch.py
07/16 22:11, 8F

07/16 22:15, 3年前 , 9F
裡面。檢查一下為了取得 `cropImg` 而找出的 `x1`,
07/16 22:15, 9F

07/16 22:16, 3年前 , 10F
`y1`, `hight`, `width` 哪個是造成
07/16 22:16, 10F

07/16 22:17, 3年前 , 11F
`img[y1:y1+hight, x1:x1+width]` 為空的原因。
07/16 22:17, 11F

07/16 22:22, 3年前 , 12F
題外話: 根據你給的部分程式碼,`x2 == x1+width`,所
07/16 22:22, 12F

07/16 22:24, 3年前 , 13F
以寫成 `x1:x1+width` 是不是多此一舉? `y2` 同理
07/16 22:24, 13F

07/16 22:42, 3年前 , 14F
找到一個可能的根本原因。你去看一下 minAreaRect 的
07/16 22:42, 14F

07/16 22:46, 3年前 , 15F
說明,它有提到回傳的 rotatedRect 可能包含負數,如
07/16 22:46, 15F

07/16 22:47, 3年前 , 16F
07/16 22:47, 16F

07/16 22:49, 3年前 , 17F
上面那篇問題中,用 minAreaRect 找出結果的右上角超出
07/16 22:49, 17F

07/16 22:51, 3年前 , 18F
圖片的範圍,也就是該點的 y < 0。
07/16 22:51, 18F

07/16 22:52, 3年前 , 19F
所以你要檢查你的圖片是否也會造成這種情況,讓你的
07/16 22:52, 19F

07/16 22:55, 3年前 , 20F
`x1`, `y1` 變成負數,導致 `img[y1:y2, x1:x2]` 為空
07/16 22:55, 20F

07/17 15:53, 3年前 , 21F
確實返回的x值為負的,造成程式返回空值,會再來想想辦
07/17 15:53, 21F

07/17 15:53, 3年前 , 22F
法改善然後優化一下,謝謝!
07/17 15:53, 22F

07/17 18:59, 3年前 , 23F
OK (・ω・)b
07/17 18:59, 23F
文章代碼(AID): #1V3n0Dt8 (Python)