Проблемы, выявляющие края стальной упаковки в автоматизированной упаковочной линии (Computer Vision)Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Проблемы, выявляющие края стальной упаковки в автоматизированной упаковочной линии (Computer Vision)

Сообщение Anonymous »

Надеюсь, кто -нибудь может мне помочь. Я пытаюсь использовать компьютерное зрение, чтобы обнаружить пакет при начале автоматической упаковочной линии. Пакет состоит из сложенных стальных листов, которые имеют текстурированный внешний вид на камеру и цвет фона, который очень похож. Я попробовал много настроек и фильтров от OpenCV, чтобы получить края пакета, но все они не удались. потратили много времени, используя хэпди, Sobel и много других методов, но ни один из них не дал мне приличного результата. < /p>
Вот код одной из моих последних попыток. /p>
import cv2
import numpy as np
import matplotlib.pyplot as plt

# Load image
image_path = "paquetes/paquete1.png"
img = cv2.imread(image_path)

# Convert to grayscale
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# Apply adaptive thresholding
adaptive_thresh = cv2.adaptiveThreshold(
gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2
)

# Apply Canny edge detection
edges = cv2.Canny(adaptive_thresh, 30, 100, apertureSize=3)

# Morphological refinements
kernel_close = np.ones((5, 5), np.uint8)
kernel_open = np.ones((3, 3), np.uint8)
closed_edges = cv2.morphologyEx(edges, cv2.MORPH_CLOSE, kernel_close, iterations=2)
opened_edges = cv2.morphologyEx(closed_edges, cv2.MORPH_OPEN, kernel_open, iterations=1)

# Light dilation to enhance continuity
kernel_dilate = np.ones((3, 3), np.uint8)
dilated_edges = cv2.dilate(opened_edges, kernel_dilate, iterations=1)

# Invert mask
mask = cv2.bitwise_not(dilated_edges)

# Find contours
contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# Filter contours by number of edges and area
filtered_contours = []
for contour in contours:
epsilon = 0.02 * cv2.arcLength(contour, True)
approx = cv2.approxPolyDP(contour, epsilon, True)
area = cv2.contourArea(contour)

if 4
Это вывод этого кода:
код вывод < /p>
Если у кого -то есть идея, пожалуйста, lmk! < /p>

Подробнее здесь: https://stackoverflow.com/questions/794 ... e-computer
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»