作者s1010257 (波)
看板Python
标题[问题] imwrite error
时间Wed Jul 15 22:17:47 2020
目前写一个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://webptt.com/cn.aspx?n=bbs/Python/M.1594822669.A.DC8.html
1F:推 LP9527: 去看看那只cpp 07/16 00:45
2F:推 yao99: 先检查图片有没有读到 07/16 04:42
3F:→ s1010257: 我要照他的路径没看到cpp这只档案 07/16 17:25
4F:→ s1010257: 我测试图片有读到,可是唯独到imwrite就会出现问题,有 07/16 17:27
5F:→ s1010257: 用try和expect去测试 07/16 17:27
6F:→ s1010257: except 07/16 17:30
8F:→ gmccntzx1: 资料 _img 是不是空的阵列。所以原因应该在 catch.py 07/16 22:11
9F:→ gmccntzx1: 里面。检查一下为了取得 `cropImg` 而找出的 `x1`, 07/16 22:15
10F:→ gmccntzx1: `y1`, `hight`, `width` 哪个是造成 07/16 22:16
11F:→ gmccntzx1: `img[y1:y1+hight, x1:x1+width]` 为空的原因。 07/16 22:17
12F:→ gmccntzx1: 题外话: 根据你给的部分程式码,`x2 == x1+width`,所 07/16 22:22
13F:→ gmccntzx1: 以写成 `x1:x1+width` 是不是多此一举? `y2` 同理 07/16 22:24
14F:→ gmccntzx1: 找到一个可能的根本原因。你去看一下 minAreaRect 的 07/16 22:42
15F:→ gmccntzx1: 说明,它有提到回传的 rotatedRect 可能包含负数,如 07/16 22:46
17F:→ gmccntzx1: 上面那篇问题中,用 minAreaRect 找出结果的右上角超出 07/16 22:49
18F:→ gmccntzx1: 图片的范围,也就是该点的 y < 0。 07/16 22:51
19F:→ gmccntzx1: 所以你要检查你的图片是否也会造成这种情况,让你的 07/16 22:52
20F:→ gmccntzx1: `x1`, `y1` 变成负数,导致 `img[y1:y2, x1:x2]` 为空 07/16 22:55
21F:→ s1010257: 确实返回的x值为负的,造成程式返回空值,会再来想想办 07/17 15:53
22F:→ s1010257: 法改善然後优化一下,谢谢! 07/17 15:53
23F:→ gmccntzx1: OK (・ω・)b 07/17 18:59