如何使用一个脚本从不同的图像获取RGB值?

时间:2019-05-18 20:03:09

标签: python python-3.x opencv

我正在构建一个脚本,该脚本从裁剪区域读取图像值并应用聚类作为获取该区域“中等颜色”的一种方式。到目前为止,我一直在Linux中使用OpenCV + Python,而Linux的OpenCV界面在窗口底部显示RGB像素值。不幸的是,我不得不改用Windows,并且在运行脚本时没有OpenCV界面。

那么,有什么方法可以使我从某个区域获取RGB像素值吗?由于它是群集图像,因此它不必是该图像的特定像素。我为此找到的所有答案都需要高度和宽度的图像值,并且由于我需要将此脚本应用于多个不同的图像,因此该答案对我而言并不实用。

这是我的代码:

import cv2
import numpy as np
import os
import imutils
if __name__ == '__main__' :


### Recorte ####



# Carrega imagem e aplica resize
img = cv2.imread("006.JPG")
im = cv2.resize(img,(1600,900))

# Seleciona ROI
r = cv2.selectROI(im)

# Recorta
imCrop = im[int(r[1]):int(r[1]+r[3]), int(r[0]):int(r[0]+r[2])]

# Mostra imagem recortada & Salva
cv2.imshow("Image", imCrop)
cv2.imwrite("1.png", imCrop)
cv2.waitKey(0)
cv2.destroyAllWindows()

### Clustering ###

#Carrega imagem
img = cv2.imread("1.png")
Z = img.reshape((-1,3))

# Converte para np.float32
Z = np.float32(Z)

# Define numero de clusters e aplica kmeans
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0)
K = 1
ret,label,center=cv2.kmeans(Z,K,None,criteria,10,cv2.KMEANS_RANDOM_CENTERS)

# Converte para uint8
center = np.uint8(center)
res = center[label.flatten()]
res2 = res.reshape((img.shape))

#Mostra a imagem & Salva
cv2.imshow('res2',res2)
cv2.imwrite("resultado.png", res2)
os.remove("1.png")
cv2.waitKey(0)
cv2.destroyAllWindows()

0 个答案:

没有答案