1. ホーム
  2. python

[解決済み] Python Opencv cv2.LUT() の使用方法

2022-02-10 18:14:12

質問事項

画像のカラーチャンネルにいくつかの高速変換を適用する必要があります。

1)対応する出力値をリストに保存しています。

ListaVred = [0]*255

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

2)画像から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

解決方法は?

OpenCVのまだリリースされていないバージョン(バージョン3.0)のドキュメントを見たのですね。OpenCV 2.4.8 以下を使用していると思われます。確認 このドキュメント . LUT関数の使い方の違いに注目してください。ページの上部には,このドキュメントが属する OpenCV のバージョンが表示されています.

LUT(srcImage, lookupTable, dstImage)