Как добавить результаты анализа изображений в dataframe в python (для матрицы путаницы)? - PullRequest
0 голосов
/ 23 октября 2018

Новый в Python, я пытаюсь определить эффективность функции цветовой сегментации на моих образцах, делая путаницу матрицы.Функция цветовой сегментации green_detection выглядит следующим образом:

import cv2
from skimage import io

def green_detection(img):

    #converting the picture to HSV  
    hsv_img = cv2.cvtColor(img, cv2.COLOR_RGB2HSV)

    #defining HSV limits
    lower_green = (40, 25, 100)
    upper_green = (80, 255, 255)

    #creating a mask with the limits and calculating green area fraction
    mask = cv2.inRange(hsv_img, lower_green, upper_green)

    mask_pix = (mask == 255).sum()
    green_area = mask_pix / (mask.shape[0]*mask.shape[1]) * 100

    #value of acceptable green area on the picture in %
    acceptable_green_area = 0.5

    #sort the picture based on the green area
    if green_area < acceptable_green_area:
        print ('Green not detected')
    else:
        print ('Green detected')    

Затем я запускаю функцию для всех моих выборок:

path = "green\\sample"

list_samples = []
for i in range(1, 201):
    img = io.imread(path + str(i) + ".tif")
    list_samples.append(img)
    green_haze_detection(img)

Я хочу создать фрейм данных с именем образца (1-й столбец) и результат функции для 200 сэмплов, которые у меня есть (2-й столбец): при обнаружении зеленого цвета добавьте 1 к строке.Если нет, добавьте 0.Позже это будет объединено с существующим файлом Excel для создания матрицы путаницы.Не могли бы вы дать мне совет по автоматизации сбора данных?

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Ладно, думаю, я выяснил проблемы:

#First of all, create a return for the function:
if area < min_green_haze_area: 
    return 0
else:
    return 1

#Create a list of header:
name_feature = ['Image n°', 'green_haze_detection']

#Then create an empty dataframe:
import pandas as pd
df = pd.DataFrame(columns=name_feature)

#Create a variable in which I can store my function results:
GD = green_detection(img)

#create a new line for each analysis, create a row and append it to the dataframe:
new_line = [i] + [GD]
row = pd.Series(new_line, name_feature)
df = df.append([row], ignore_index=True)

Теперь он работает, и я получаю результаты своего анализа в кадре данных.Теперь я буду использовать для создания матрицы путаницы, используя sklearn

0 голосов
/ 23 октября 2018

Самый простой способ создать путаницу - использовать sklearn.actual - фактические выходы (0 или 1);predicted - это прогнозируемые результаты (0 или 1).

from sklearn.metrics import confusion_matrix

Confusionmatrix = confusion_matrix(actual, predicted) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...