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)  

出力:

ここに画像の説明を入力してください

入力:

ここに画像の説明を入力してください