Не выводит значение массива results в поля csv файла

В программе используем метод распознания квадрата по цветовым составляющим контура в конвертированном в монохром изображений и листика по фильтрации цвета. Площадь квадрата 1 см квадратный. Рассчитываем площадь в см квадратных листика, поделив количество пикселей в листике на количество пикселей в квадратике.

import cv2
import numpy as np
import os
import csv

path = '221-1.jpg'
# Загрузите изображение
image = cv2.imread(path)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

# Определение нижней и верхней границы красного цвета в HSV
lower_red = np.array([45, 58, 34])
upper_red = np.array([145, 138, 108])

# Создание маски для красного цвета
mask_leave = cv2.inRange(hsv_image, lower_red, upper_red)

# Применение размытия для уменьшения шума
blurred = cv2.GaussianBlur(gray, (5, 5), 0)

# Обнаружение краев с использованием алгоритма Canny
edges_quadrat = cv2.Canny(blurred, 57, 88)

# Найти контуры квадрата
contours_quadrat, _ = cv2.findContours(edges_quadrat, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

# Подготовка списка для результатов
results = []

# Перебрать найденные контуры для квадрата
for contour_quadrat in contours_quadrat:
    epsilon_quadrat = 0.063 * cv2.arcLength(contour_quadrat, True)
    approx_quadrat = cv2.approxPolyDP(contour_quadrat, epsilon_quadrat, True)

    # Создать маску для квадрата
    mask_quadrat = np.zeros_like(gray)
    cv2.drawContours(mask_quadrat, [approx_quadrat], -1, 255, thickness=cv2.FILLED)

    # Применить маску к маске красного листа
    mask_quadrat = cv2.bitwise_and(mask_leave, mask_quadrat)

    # Вычислить площадь квадрата
    s_quadrat = cv2.countNonZero(mask_quadrat)

    if 900 < s_quadrat < 1000:
        # Вычислить площадь контура квадрата
        num_red_pixels = cv2.contourArea(contour_quadrat)
        num_red_sm_q = num_red_pixels / s_quadrat
        results.append([path, num_red_pixels, s_quadrat, num_red_sm_q])

        # Рисование контуров на изображении
        cv2.drawContours(image, [approx_quadrat], -1, (255, 0, 0), 1)
        headers = ['Название', 'Площадь листика (пиксели)', 'Площадь квадрата', 'Площадь листика (см^2)']
        with open('resultsALL.csv', 'w', newline='') as f:
            writer = csv.writer(f, delimiter=';')
            writer.writerow(headers)
            writer.writerows(results)
# Вывод изображения с контурами
cv2.imshow('Contours', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

Ответы (0 шт):