Python 转换后的失真颜色

Python 转换后的失真颜色,python,opencv,pycairo,Python,Opencv,Pycairo,我正在尝试编写一个简单的Python程序,用OpenCV绘制图片/视频。我不喜欢内置绘图工具(将来我会使用渐变等),所以我决定使用Gizeh(基于Cairo的矢量图形库)。我正在加载图片/帧,从图像创建表面后(由于cv2使用BGR而不是RGB,所以很少进行转换),颜色会失真。这是我的密码: import cv2 import gizeh import numpy as np img = cv2.imread('karin.jpg') img_rgb = cv2.cvtColor(img, cv

我正在尝试编写一个简单的Python程序,用OpenCV绘制图片/视频。我不喜欢内置绘图工具(将来我会使用渐变等),所以我决定使用Gizeh(基于Cairo的矢量图形库)。我正在加载图片/帧,从图像创建表面后(由于cv2使用BGR而不是RGB,所以很少进行转换),颜色会失真。这是我的密码:

import cv2
import gizeh
import numpy as np

img = cv2.imread('karin.jpg')
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
surface = gizeh.Surface.from_image(img_rgb)
marker = gizeh.ellipse(w=40,h=10,fill=(1,0,0),xy=[50,50])
marker.draw(surface)
img_final = cv2.cvtColor(surface.get_npimage(), cv2.COLOR_RGB2BGR)
cv2.imshow('output', img_final)
cv2.waitKey(0)
cv2.destroyAllWindows()

我做错了什么?有办法解决这个问题吗?任何帮助都将不胜感激

编辑:

我在从图像创建曲面时遇到问题。经过长期研究,我发现:

我在gizeh.py中编辑了第53行,这是本线程中推荐的:

arr += np.add(arr, image.flatten(), out=arr, casting="unsafe")

这会导致这种失真问题吗?

问题可能在库本身的某个地方。当我在安装后试图导入它时,它甚至抛出了错误。但是,仅使用opencv即可获得相同的结果,您已经在使用opencv读取图像:

import cv2
import numpy as np

img = cv2.imread('karin,jpg')
center_coordinates = (120, 100) 
axesLength = (100, 50) 
angle = 30
startAngle = 0
endAngle = 360 
color = (0, 0, 255) 
thickness = -1
img = cv2.ellipse(img, center_coordinates, axesLength, angle, startAngle, endAngle, color, thickness) 
cv2.imshow('output', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

问题似乎是因为库安装过程中出现了一些问题。我在另一台电脑上尝试了这段代码,它可以正常工作,所以重新安装后一切都很好。

正如我所写的-我想使用不同的、更具弹性的工具,因为我喜欢使用渐变等。我在图书馆里编辑了这个问题,几乎没做什么改动。