【Python】【画像処理】画像の画素毎のGBR値を3Dグラフにプロットする
#coding:utf-8 """ $jupyter notebook $for python3.x """ from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import numpy as np from sklearn.cluster import KMeans from PIL import Image from PIL import ImageDraw from random import randint from os.path import exists from os import mkdir from math import fabs from random import random from copy import deepcopy from math import log from math import sqrt import cv2 import numpy as np from collections import namedtuple import csv def main(): #特徴ベクトルの型の定義 vec = namedtuple('vec_info',['GBR','coordinate']) #画像を読み込み img = cv2.imread("sample.png") #画像のサイズ height = img.shape[0] width = img.shape[1] #特徴ベクトルの総数(画素数) num_vec = height*width #各画素の特徴ベクトルを取得する vectors = [] for y in range(height): for x in range(width): BGR = img[y,x] v = vec(BGR,(y,x)) vectors.append(v) vectors = np.array(vectors) feature_vectors = vectors[:,0] #feature_vectors = np.reshape(feature_vectors,(1,len(feature_vectors))) tmp = [] for vec in feature_vectors: tmp.append(vec) feature_vectors = np.array(list(tmp)) #特徴空間の点をプロット feature_vectors_G = feature_vectors[:,0] feature_vectors_B = feature_vectors[:,1] feature_vectors_R = feature_vectors[:,2] #初期プロットの表示 fig = plt.figure() ax = Axes3D(fig) ax.scatter3D(feature_vectors_G,feature_vectors_B,feature_vectors_R) plt.show() if __name__ == '__main__': main()
ライブラリは適当
グラフを動かせるようにしたい.
【追記】
デフォルトで回転できるようになってた.