gpt4 book ai didi

python - 在opencv中加载svg图像

转载 作者:行者123 更新时间:2023-12-02 16:24:31 25 4
gpt4 key购买 nike

我正在尝试下载 svg 图像并在 opencv 中打开它进行进一步处理。我正在做的是使用 cairosvg 将 svg 格式转换为 png 格式, 使用 Pillow 打开它最后转换为 opencv。这里的问题是用opencv 转换的图像看起来与用PIL 格式的图像不完全一样。

from io import BytesIO
import numpy as np
import requests
from PIL import Image
from cairosvg import svg2png
import cv2

svg_url = 'https://logincdn.msauth.net/16.000.28611.4/content/images/microsoft_logo_ee5c8d9fb6248c938fd0dc19370e90bd.svg'

# Get svg data
svg_data = requests.get(svg_url).content

# Convert from svg to png
png = svg2png(bytestring=svg_data)

# Open png in PIL
pil_img = Image.open(BytesIO(png))
pil_img.show() # This looks good

# Convert to opencv
cv_img = np.array(pil_img.convert('RGB'))[:, :, ::-1].copy() # Taken from https://stackoverflow.com/questions/14134892/convert-image-from-pil-to-opencv-format
cv2.imshow('cv_img', cv_img) # This does not look right
cv2.waitKey(0)

这些分别是 PILopencv 格式的结果图像:

enter image description here

enter image description here

opencv 图像看起来不正确,例如文本在字符之间没有空格。为什么会这样?我该如何解决?

最佳答案

按照建议,您必须保留 alpha channel 。

import numpy as np
import requests
from io import BytesIO
from PIL import Image
from cairosvg import svg2png
import cv2

svg_url = 'https://logincdn.msauth.net/16.000.28611.4/content/images/microsoft_logo_ee5c8d9fb6248c938fd0dc19370e90bd.svg'

svg_data = requests.get(svg_url).content

png = svg2png(bytestring=svg_data)

pil_img = Image.open(BytesIO(png)).convert('RGBA')
pil_img.save('output/pil.png')

cv_img = cv2.cvtColor(np.array(pil_img), cv2.COLOR_RGBA2BGRA)
cv2.imwrite('cv.png', cv_img)

关于python - 在opencv中加载svg图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62329331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com