Dieses Mal werden wir den Prozess der Ausgabe des Durchschnittswerts des Pixelwerts RGB des Objekts in eine CSV-Datei einführen.
Ich möchte den durchschnittlichen Pixelwert eines Bildes eines Objekts wie eines Apfels ermitteln! Sie können es zu diesem Zeitpunkt verwenden. Wie dieser Prozess aufgebaut wurde, können Sie in einem Artikel nachlesen, den ich zuvor in Qiita gepostet habe. ↓ [[Python] Klassifizieren Sie Äpfel und Birnen aus Pixelwerten mit einer Support Vector Machine (SVM)] [0] [0]:https://qiita.com/ZESSU/items/3083ce23e0405565765d Dieser Prozess wird verwendet, um die Vorverarbeitung des in diesem Artikel beschriebenen Verfahrens "Ermitteln des Durchschnittswerts der RGB-Pixelwerte für jedes Apfel- und Birnenbild" durchzuführen.
Die einzige Information, die für diesen Prozess benötigt wird, ist ein Bild, das das Objekt zeigt. Wenn der Hintergrund jedoch enthalten ist, kann er nicht korrekt berechnet werden. Verwenden Sie daher eine App wie Paint, um nur das Objekt sauber zu schneiden, wie in der folgenden Abbildung dargestellt.
Da openCV für die Bildverarbeitung und Pandas als Datenrahmen verwendet wird, installieren Sie diese Bibliotheken bitte im Voraus.
pip install opencv-python
pip install pandas
Der Code ist hier. Da openCV verwendet wird, erfolgt die Ausgabe als Einschränkung in der Größenordnung von BGR und nicht von RGB.
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') #Beginnen Sie mit Nummer 1
print(idir + fname + '_' + str(k+1) + '.jpg')
h, w, c = img.shape #height, width, channnel
#Initialisieren
l=0
b_ave=0; g_ave=0; r_ave=0
for i in range(h):
for j in range(w):
#Pixelwert[0,0,0](Black)を除外してピクセルの和とbgrのPixelwertの合計を計算する
if(img[i,j,0] != 0 or img[i,j,1] != 0 or img[i,j,2] != 0 ):
l+=1 #Berechnen Sie die Anzahl der interessierenden Pixel
#Berechnen Sie die Summe der Pixelwerte der Zielpixel
b_ave=b_ave+img[i,j,0]
g_ave=g_ave+img[i,j,1]
r_ave=r_ave+img[i,j,2]
#Berechnen Sie den Durchschnittswert der RGB-Pixelwerte, indem Sie die Gesamtpixelwerte durch die Anzahl der Pixel dividieren.
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 mit OpenCV-Bestellung Quasi-BGR
df.to_csv(odir + fname + '.csv')
Zum Beispiel ...
fname='apple'
num_photo=1
Im Fall von wird der Durchschnittswert jedes Pixelwerts von nur einer Datei von "input / apple_1.jpg " als "output / apple.csv" ausgegeben.
Nach der Verarbeitung der Bilder von 10 Äpfeln wird die Datei apple.csv mit dem Durchschnittswert von 10 BGR-Bildern wie unten gezeigt ausgegeben.
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
Wie in der Übersicht beschrieben, verwenden Sie die von diesem Code ausgegebene CSV-Datei für Apfel und Birne ↓ [[Python] Klassifizieren Sie Äpfel und Birnen anhand einer Pixel mit einer Support Vector Machine (SVM) aus Pixelwerten.] [1] [1]:https://qiita.com/ZESSU/items/3083ce23e0405565765d Ich mache. Bitte lesen Sie auch diesen Artikel!
Recommended Posts