Çekilen bir resimdeki renk paletini veya renklerin skalasını aşağıdaki kodlar yardımıyla elde edebilirisiniz. Resim boyutu çok yüksek ise sonucu görmek için biraz bekleyebilirsiniz.
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
from sklearn.cluster import KMeans
# Görseli oku
image = mpimg.imread("flower-1.png")
# Float ise 0-255 aralığına çevir
if image.max() <= 1.0:
image = (image * 255).astype(np.uint8)
# RGBA ise sadece RGB al
if image.shape[2] == 4:
image = image[:, :, :3]
# Piksel dizisine çevir
w, h, d = image.shape
pixels = np.reshape(image, (w * h, d))
# KMeans ile renkleri gruplandır
n_colors = 10
model = KMeans(n_clusters=n_colors, random_state=42).fit(pixels)
palette = np.uint8(model.cluster_centers_)
# Paleti göster
plt.figure(figsize=(8, 2))
plt.imshow([palette])
plt.axis('off')
plt.show()
R Programlama İle Bir Resmin Renk Paletini Göstermek
Bu defa resmi internetten bulacağız. İnternetten bulduğunuz bir resmin URL'sini kodların içinde ekleyerek sonucu görebilirsiniz. Sonuçta flower-1-palette.jpg adında bir resim üzerinde renk paletinizi görebilirsiniz. Bu işlem biraz uzun sürebilir ve bilgisayarınızda kasmalar olabilir.
install_and_load <- function(package_name) {
if (!require(package_name)) {
install.packages(package_name, repos = "https://cloud.r-project.org")
library(package_name, character.only = TRUE)
}
}
library(jpeg)
library(RCurl)
library(reshape2)
library(ggplot2)
library(kohonen)
install_and_load(c(jpeg, RCurl, reshape2, ggplot2, kohonen))
download.file("https://example.com/flower-1.jpg", destfile = "flower-1.jpg", method = "curl")
img <- readJPEG("flower-1.jpg")
w <- dim(img)[1]
h <- dim(img)[2]
d <- dim(img)[3]
pixels <- melt(img)
n_colors <- 10 # Daha fazla veya daha az renk elde etmek için bu değeri değiştirin
model <- kmeans(pixels, centers = n_colors, nstart = 10)
palette <- as.integer(round(model$centers))
palette_image <- matrix(palette, nrow = 1, ncol = n_colors)
colnames(palette_image) <- NULL
jpeg("flower-1-palette.jpg")
par(mar = c(0, 0, 0, 0))
image(palette_image, col = palette, axes = FALSE)
dev.off()

