【发布时间】:2021-10-07 08:41:08
【问题描述】:
我正在开发一个不和谐的机器人,它接受用于 OCR 目的的所有类型的图像。当用户上传具有 4 个通道的 PNG 时,它会出错。我的意思是它读取图像几乎是 100% 白色,而实际图像充满了色彩。
我尝试使用 cv2.COLOR_BGRA2BGR 进行转换,但这不起作用。但是在我的 pytest 中它确实有效。这可能是因为我在我的 pytest 中使用了 cv2.imread,这与我的实际代码有点不同。
代码(损坏)
for a in supported_attachments: async with aiohttp.ClientSession() as session: async with session.get(a) as res: if res.status == 200: buffer = io.BytesIO(await res.read()) arr = np.asarray(bytearray(buffer.read()), dtype=np.uint8) img = cv2.imdecode(arr, -1) if len(img.shape) > 2 and img.shape[2] == 4: print('convert') img = cv2.cvtColor(img, cv2.COLOR_BGRA2BGR) plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB)) plt.show() images.append(img)
pytest(有效)
image = cv2.imread('../tests/images/stats/english/kills_png.png', cv2.COLOR_BGRA2BGR)
有什么建议或想法吗?
【问题讨论】:
-
第一步,去掉幻数——
cv2.imdecode(arr, -1)应该是cv2.imdecode(arr, cv2.IMREAD_UNCHANGED)。这不是更容易理解吗?现在,如果您希望imread以相同的方式运行,只需使用相同的标志调用它即可。 -
好的,谢谢您的回复。
标签: python opencv discord.py opencv-python