Cette fois, nous allons introduire le processus de sortie de la valeur moyenne de la valeur de pixel RVB de l'objet dans un fichier csv.
Je veux trouver la valeur moyenne en pixels d'une image d'un objet tel qu'une pomme! Vous pouvez l'utiliser à ce moment-là. Vous pouvez lire comment ce processus a été construit dans un article que j'ai publié sur Qiita plus tôt. ↓ [[Python] Classer les pommes et les poires à partir des valeurs de pixels à l’aide d’une machine à vecteurs de support (SVM)] [0] [0]:https://qiita.com/ZESSU/items/3083ce23e0405565765d Ce processus est utilisé pour effectuer le prétraitement de la méthode décrite dans cet article, «Obtention de la valeur moyenne des valeurs de pixel RVB de chaque image de pomme et de poire».
La seule information requise pour ce processus est une image montrant l'objet. Cependant, si l'arrière-plan est inclus, il ne peut pas être calculé correctement, utilisez donc une application telle que Paint pour rogner uniquement l'objet proprement, comme illustré dans la figure ci-dessous.
Étant donné qu'openCV est utilisé pour le traitement d'images et que les pandas sont utilisés comme trame de données, veuillez installer ces bibliothèques à l'avance.
pip install opencv-python
pip install pandas
Le code est ici. En guise de mise en garde, puisque openCV est utilisé, la sortie sera dans l'ordre de BGR, pas RVB.
bgr_csv.py
import cv2
import numpy as np
import pandas as pd
idir = 'input/'
odir = 'output/'
fname='apple'
num_photo=10
bgr = np.zeros((num_photo,3))
for k in range(num_photo):
img = cv2.imread(idir + fname + '_' + str(k+1) + '.jpg') #Partir du numéro 1
print(idir + fname + '_' + str(k+1) + '.jpg')
h, w, c = img.shape #height, width, channnel
#Initialiser
l=0
b_ave=0; g_ave=0; r_ave=0
for i in range(h):
for j in range(w):
#Valeur de pixel[0,0,0](Black)を除外してピクセルの和とbgrのValeur de pixelの合計を計算する
if(img[i,j,0] != 0 or img[i,j,1] != 0 or img[i,j,2] != 0 ):
l+=1 #Calculez le nombre de pixels d'intérêt
#Calculer la somme des valeurs de pixels des pixels cibles
b_ave=b_ave+img[i,j,0]
g_ave=g_ave+img[i,j,1]
r_ave=r_ave+img[i,j,2]
#Calculez la valeur moyenne des valeurs de pixels RVB en divisant les valeurs totales de pixels par le nombre de pixels.
b_ave=b_ave/l
g_ave=g_ave/l
r_ave=r_ave/l
bgr[k]=np.array([b_ave, g_ave, r_ave])
df = pd.DataFrame(bgr, columns=['blue', 'green', 'red']) #Match avec ordre d'ouverture quasi-BGR
df.to_csv(odir + fname + '.csv')
Par exemple ...
fname='apple'
num_photo=1
Dans le cas de, la valeur moyenne de chaque valeur de pixel d'un seul fichier de "input / apple_1.jpg " est sortie comme "output / apple.csv".
Après avoir traité les images de 10 pommes, le fichier apple.csv avec la valeur moyenne de 10 images BGR sera généré comme indiqué ci-dessous.
apple.csv
,blue,green,red
0,39.88469583593901,28.743374377331637,137.23369201906283
1,83.72563703792319,79.59471228615863,164.77884914463453
2,66.8231805177587,74.52501570023027,141.8854929872305
3,55.2837418388098,45.28968211495237,148.4160869099861
4,37.59397951454073,49.82323881039423,137.30237460066527
5,53.68868757437335,50.963264366051206,142.6121454070861
6,51.277953772145956,64.07145371348116,152.98116860260473
7,50.47702848900108,48.37151099891814,124.46714749368914
8,40.35442093843233,52.0682126390019,137.8299091402224
9,48.18758094199441,55.87655919841865,145.6361529548088
Comme décrit dans l'aperçu, en utilisant la sortie de fichier csv apple et pear par ce code ↓ [[Python] Classer les pommes et les poires à partir des valeurs de pixels à l’aide d’une machine à vecteurs de support (SVM)] [1] [1]:https://qiita.com/ZESSU/items/3083ce23e0405565765d Je fais. Jetez également un œil à cet article!
Recommended Posts