Python 在opencv中加载svg图像
我正在尝试下载一个svg图像并打开它进行进一步处理。我正在做的是使用将svg转换为png格式,使用打开它,最后转换为Python 在opencv中加载svg图像,python,opencv,svg,image-processing,computer-vision,Python,Opencv,Svg,Image Processing,Computer Vision,我正在尝试下载一个svg图像并打开它进行进一步处理。我正在做的是使用将svg转换为png格式,使用打开它,最后转换为opencv。这里的问题是,在opencv中转换的图像与PIL格式的图像看起来不完全相同 从io导入字节io 将numpy作为np导入 导入请求 从PIL导入图像 从cairosvg导入svg2png 进口cv2 svg_url=https://logincdn.msauth.net/16.000.28611.4/content/images/microsoft_logo_ee5c
opencv
。这里的问题是,在opencv
中转换的图像与PIL
格式的图像看起来不完全相同
从io导入字节io
将numpy作为np导入
导入请求
从PIL导入图像
从cairosvg导入svg2png
进口cv2
svg_url=https://logincdn.msauth.net/16.000.28611.4/content/images/microsoft_logo_ee5c8d9fb6248c938fd0dc19370e90bd.svg'
#获取svg数据
svg\u data=requests.get(svg\u url.content)
#从svg转换为png
png=svg2png(bytestring=svg_数据)
#在PIL中打开png
pil_img=Image.open(BytesIO(png))
这个看起来不错
#转换为opencv
cv_img=np.array(pil_img.convert('RGB'))[:,:,::-1]。copy()#取自https://stackoverflow.com/questions/14134892/convert-image-from-pil-to-opencv-format
cv2.imshow('cv_img',cv_img)#这看起来不对
cv2.等待键(0)
这些是分别来自PIL
和opencv
格式的结果图像:
opencv
图像看起来不正确,例如文本字符之间没有空格。
这是为什么?我如何修复它?正如建议的那样,您必须保留alpha通道
将numpy导入为np
导入请求
从io导入字节io
从PIL导入图像
从cairosvg导入svg2png
进口cv2
svg_url=https://logincdn.msauth.net/16.000.28611.4/content/images/microsoft_logo_ee5c8d9fb6248c938fd0dc19370e90bd.svg'
svg\u data=requests.get(svg\u url.content)
png=svg2png(bytestring=svg_数据)
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\u img)
当您执行转换(“RGB”)
时,您将丢弃原始图像中显示的alpha/透明通道。那是不可取的。另外,cv2.imshow()
忽略alpha通道,这对您的帮助更小。