Python3 OpenCV3でK-Means法による減色処理

Facebook にシェア
Pocket
LINEで送る
このエントリーを Google ブックマーク に追加

減色処理は、写真を油絵やイラストのように変換したいときに使われる。

 

前提

ディレクトリ構成などはこことかこことか。

 

元画像

カラス(karasu.jpg) をsource/imageディレクトリに設置する。

karasu

 

減色処理

sourceディレクトリにk_means.pyを作成する。

import numpy as np
import cv2

if __name__ == '__main__':
  
  img_src = cv2.imread('./image/karasu.jpg')
  Z = img_src.reshape((-1,3))

  # float32に変換
  Z = np.float32(Z)

  # K-Means法
  criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0)
  K = 4
  ret,label,center=cv2.kmeans(Z,
                              K,
                              None,
                              criteria,
                              10,
                              cv2.KMEANS_RANDOM_CENTERS)

  # UINT8に変換
  center = np.uint8(center)
  res = center[label.flatten()]
  img_dst = res.reshape((img_src.shape))

  cv2.imshow('Quantization', img_dst)
  cv2.waitKey(0)
  cv2.destroyAllWindows()

実行してみる。

(opencv_python) $ python k_means.py

スクリーンショット 2015-08-09 11.41.19

 

イラストのようなタッチになった。

Kの値を4から8に変えてみた。

スクリーンショット 2015-08-09 11.40.24

 

少し元の画像に近づいた。

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です