图片读取颜色不对

using PythonCall,Images,FileIO,Makie
import GLMakie
f = Figure(backgroundcolor = RGBf(0.98, 0.98, 0.98),resolution = (1200, 800))
gab = f[1, 1:2] = GridLayout()
ga = gab[1, 1] = GridLayout()
gb = gab[1, 2] = GridLayout()
#a中的设置
axA = Axis(ga[1,1], title = "Position", height = 450, width = 450)
axB = Axis(gb[1,1], title = "Camera",  height = 450, width = 450)
cv = pyimport("cv2")
imgT = cv.imread("C:/Users/yantan/Desktop/R-C.jpg", cv.COLOR_BGR2RGB)
cv.imshow("Image test", imgT)
tt = PyArray(imgT)
tt = reinterpret(N0f8, tt)
tt = RGB.(tt[:,:,1], tt[:,:,2], tt[:,:,3])
image!(axA, rotr90(tt))
ttt  = load("C:/Users/yantan/Desktop/R-C.jpg")
image!(axB, rotr90(ttt))

如上面代码,我使用PythonCall中的openCV读取一张图片和我直接用julia读取图片,两者在Makie上展示颜色会出现差别,请大佬指点下颜色差别的原因在哪。其中右边是直接用julia读取然后展示,跟原图一致;左侧是通过opencv读取展示,可以看出颜色差了很多。


q

我瞎猜一下,有没有可能是RGB顺序的缘故?从两张图来看,很像是R和B弄反了。Julia和Python的行列优先顺序是反的。

确实是这样的,试了下把通道排序改为321就得到原图了,之前一直以为是转换哪里出错了hh

1 个赞

Opencv读出来的数据是BGR模式