2014-01-15 2496 views
1

需要对图像的颜色通道应用一些快速转换。Python Opencv cv2.LUT()如何使用

1)我已存储在一个列表中的对应的输出值:

ListaVred = [0]*255 

for i in range(0,255): 
    ListaVred[i]=i*127/255 + 128 

2)I从图像获得从0色彩输入值,以255

3)应当在图像中替换与输出输入值

i.e. red[45]= 0 
    ListaVred0] = 128 
    red[45]= 128 

我已经看了cv2.LUT(SRC,DST)功能,但不知道它的使用, http://docs.opencv.org/trunk/modules/core/doc/operations_on_arrays.html#cv2.LUT

cv2.LUT(ListaVred,red) 
TypeError: src is not a numpy array, neither a scalar 


ListaVred = np.array(ListaVred) 
cv2.LUT(ListaVred,red) 
cv2.error: /build/opencv-Ai8DTy/opencv-2.4.6.1+dfsg/modules/core/src/convert.cpp:1195: error: (-215) (lutcn == cn || lutcn == 1) && lut.total() == 256 && lut.isContinuous() && (src.depth() == CV_8U || src.depth() == CV_8S) in function LUT 

回答

2

您查看了尚未发布的OpenCV版本(3.0版)的文档。我猜你正在使用OpenCV 2.4.8或更低版本。检查this documentation。注意LUT函数使用的差异。在页面顶部,您将看到本文档所属的OpenCV版本。

LUT(srcImage, lookupTable, dstImage) 
+0

我在raspbian和OpenCV的版本是2.3.1-11,感谢您的文档,LUT(红色,ListaVred,newredlist),但我不能让如何构建LookupTable中名单,是不是ListaVred格式正确吗? – user2239318

+0

lookupTable = 256个元素,ListaVred = [0] * 256,而不是255!像魅力一样工作! – user2239318

相关问题