我正在尝试使用cv2.cvtColor(image,cv.COLOR_RGB2LAB)执行RGB到L a b *颜色转换,但Spyder会返回以下错误:
OpenCV Error: Assertion failed (src.dims <= 2 && esz <= (size_t)32) in transpose,
file /tmp/buildd/opencv-2.3.1/modules/core/src/matrix.cpp, line 1680 terminate called after throwing an instance of 'cv::Exception'
what(): /tmp/buildd/opencv-2.3.1/modules/core/src/matrix.cpp:1680: error: (-215) src.dims <= 2 && esz <= (size_t)32 in function transpose
这是相关的我的代码,我正在使用3个通道为R,G和B创建一个numpy数组,它们都是(300,400)大小的float64类型。这给了我一个(300,400,3)float 64数组,叫做small_wbcorrect_lab
import numpy as np
from matplotlib import pyplot as plt
import cv2 as cv
width=400
height=300
small_wbcorrect_lab=np.zeros((np.size(range(0,width)),np.size(range(0,height)),3),dtype=np.float64) # create an array which will contain the converted l*a*b* image
# I skip the part of the code which fills the arrays redchannel_wbcorrect,greenchann... for more clarity.
# They are all three (300,400) float64 array filled with values from 0 to 255
small_wbcorrect=np.transpose(np.array([np.transpose(redchannel_wbcorrect),np.transpose(greenchannel_wbcorrect),np.transpose(bluechannel_wbcorrect)])/255)
plt.imshow(small_wbcorrect)
plt.title('Photo White Balanced') # displaying works fine
small_wbcorrect_lab=cv.cvtColor(small_wbcorrect,cv.COLOR_RGB2LAB)
有趣的是:cv.cvtColor可以很好地工作,如果我用它来转换导入的图像,用
导入image=cv.imread('image.jpg')
感谢您的帮助