Обнаружение металлических предметов с помощью openCVPython

Программы на Python
Ответить
Anonymous
 Обнаружение металлических предметов с помощью openCV

Сообщение Anonymous »

Я только начинаю работать с OpenCV, поэтому, если я сделал что-то «незаконное», имейте это в виду:)
У меня есть такие изображения (мне нужно, чтобы изображение было монохромным), и я пытаюсь полностью удалить фон и выделить (было бы лучше, если бы в результате изображение было двоичным) металлические объекты на изображениях и делать это достаточно последовательно, я попытался сделать следующий путь:

размытие по Гауссу -> фильтрация отсу -> использование таких операций, как эрозия, для удаления фонового шума, но конечный результат выглядит примерно так, как на последней картинке, и мой вопрос: какой метод я могу использовать, чтобы лучше подготовить фотографии или удалить такое количество шума?
Изображение

Изображение

Изображение

Изображение

Текущее состояние функции, которую я использовал:
import cv2
import numpy as np

def process_image(input_path, output_path,
blur_kernel=(5, 5),
erosion_kernel_size=3):

img = cv2.imread(input_path, cv2.IMREAD_GRAYSCALE)

blurred = cv2.GaussianBlur(img, blur_kernel, 0)
_, otsu = cv2.threshold(blurred, 0, 255,
cv2.THRESH_BINARY + cv2.THRESH_OTSU)

kernel = np.ones((erosion_kernel_size, erosion_kernel_size), np.uint8)
eroded = cv2.erode(otsu, kernel, iterations=5)

cv2.imwrite(output_path, eroded)

process_image("PXL_20260108_121315716.jpg", "result.png")


Подробнее здесь: https://stackoverflow.com/questions/798 ... ing-opencv
Ответить

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

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

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

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

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