AdobePhotoshopスタイルのポスタリゼーションとOpenCV
Adobe Photoshop Style Posterization
解決:
あなたの質問は具体的にはレベル2について尋ねているようですが、2を超えるレベルについてはどうでしょうか。そこで、任意のレベルの色をポスタライズできるコードを以下に追加しました。
import numpy as np import cv2 im = cv2.imread( 'messi5.jpg')n = 2#量子化インデックスのレベル数= np.arange(0,256)#すべての色のリストdivider = np.linspace(0,255、n + 1)[1]#分周器を取得しますquantiz = np.int0(np.linspace(0,255、n))#量子化色を取得しますcolor_levels = np.clip(np.int0(indices / divider)、0、n-1 )#カラーレベル0,1,2 ..パレット= quantiz [color_levels]#パレットの作成im2 =パレット[im]#画像へのパレットの適用im2 = cv2.convertScaleAbs(im2)#画像をuint8に戻すcv2.imshow( 'im2'、im2)cv2.waitKey(0)cv2.destroyAllWindows()このコードは、というメソッドを使用します Numpyのパレットメソッド これは、ピクセルを反復処理するよりも非常に高速です。コードを高速化するためにどのように使用できるかについての詳細は、ここで見つけることができます: Numpyでの高速配列操作
以下は、さまざまなレベルで得られた結果です。
元の画像:

レベル2 :

レベル4:

レベル8:

等々...
チャネルをまったく気にすることなく、numpyを使用してこれを非常にきれいに行うことができます!
import cv2 im = cv2.imread( '1_tree_small.jpg')im [im> = 128] = 255 im [im<128] = 0 cv2.imwrite('out.jpg', im) 出力:

入力:
