Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在opencv中加载svg图像_Python_Opencv_Svg_Image Processing_Computer Vision - Fatal编程技术网

Python 在opencv中加载svg图像

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

我正在尝试下载一个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_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通道,这对您的帮助更小。