Python 转换后的失真颜色
我正在尝试编写一个简单的Python程序,用OpenCV绘制图片/视频。我不喜欢内置绘图工具(将来我会使用渐变等),所以我决定使用Gizeh(基于Cairo的矢量图形库)。我正在加载图片/帧,从图像创建表面后(由于cv2使用BGR而不是RGB,所以很少进行转换),颜色会失真。这是我的密码: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
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()
问题似乎是因为库安装过程中出现了一些问题。我在另一台电脑上尝试了这段代码,它可以正常工作,所以重新安装后一切都很好。正如我所写的-我想使用不同的、更具弹性的工具,因为我喜欢使用渐变等。我在图书馆里编辑了这个问题,几乎没做什么改动。