塗装効果のPythonのOpenCVのベースの画像を使用して

アルゴリズムのステップ

図1に示すように、グレースケール画像の画像を取得します

図2に示すように、小箱(4×4/8×8/10×10など)の設計、小ブロック内の各画素の統計値

図3に示すように、0〜255のグレー値を複数のレベルに分割され、その結果が設定された各第2段階の処理レベルにマッピングされ、カウント

図4は、グレースケールまでの各ブロック内の全ての画素を見つけるために、これらの画素の平均値が得られます

元の画素値を置き換える5、統計的平均アウト

CV2インポート
インポートnumpyのAS NP 

IMG = cv2.imread(' ./Nature.jpg '1 
imgInfo = img.shape 
高さ = imgInfo [ 0 ]  = imgInfo [ 1 ] 
グレー = cv2.cvtColor(IMG、cv2.COLOR_BGR2GRAY )
DST = np.zeros((高さ、幅、3 )、np.uint8)
pixel_class = 4 
sectionTop = INT256 / pixel_class)
画像データを反復する各ループのため#2の使用
のために I(レンジ3、高さ- 。3 ):
     のために J (レンジ3、幅- 。3 ): 現在のグレーレベルは、プログラムで定義されている4 
        位、4つのレベルの画素数をロードするために配列を定義
        ARRAY1 = np.zeros(pixel_class、np.uint8) 現在の小ブロックがプログラムの6×6で定義されている
        ため、M 範囲( - 33。 のための N- における範囲( - 33。 ):
                #P1が画素であります添字0で表される点分割レベルのセグメント、 - 。3 
                P1 =INT(グレー[IはMを+、N-J +] / sectionTop)
                画素数の#次のレベル、添え字は、配列1の画素レベルを表し、
                小ブロック内の画素の画素レベルの代表値の番号#
                ARRAY1 [P1] = ARRAY1 [P1] + 。1 
        #次のこの小さなボックスまでのピクセルセグメント内の画素を決定
        CurrentMax =配列1 [ 0 ] 
        L = 0   #1までの記録画素アレイセグメントカウントのために本明細書に提供されます添え字
         のための K における範囲(0 :、pixel_class)
             IF CurrentMax < 配列1 [K]:
                CurrentMax = 配列1 [K] 
                L = K 
        #は、治療を意味
        Uは= V = W = 0 
        のための M における範囲( - 33 のn における範囲( - 33 場合灰色[iが+ M、J + N]> =(1- *部)とグレー[I + M、J + N <=((L + 1)* セクション):
                    (B、G、R)は = IMG [I + M、J + n]は
                    、U + = bは
                    V + = G 
                    W + = R 
        U = INT(U /配列1 [L])
        V = INT(V / 配列1 [L])
        W = INT(W / 配列1 [L])
        DST [I、J] = [U、V、W] 
cv2.imshow(' DST ' 、DST )
cv2.imshow(' IMG ' 、IMG)
cv2.waitKey(0 
cv2.destroyAllWindows()
cv2.imwrite(' RoseOilPainting.png '、DST)

 

おすすめ

転載: www.cnblogs.com/5211314jackrose/p/11306556.html
おすすめ