Как сделать подсчет теневой части фона в качестве фона (рисунок ниже) с помощью OpenCV в Python? - PullRequest
0 голосов
/ 08 ноября 2018

Я очень новичок в OpenCV (и в StackOverflow). Я пишу программу с OpenCV, которая делает снимок с объектом (то есть ручкой (рис., Телефон), положенным на бумагу) и вычисляет , какой процент составляет объект изображения .

Проблема, с которой я сталкиваюсь, - это когда я пороговое изображение (пробное адаптивное и отсу ) фото немного затенено по краям:

Исходное изображение

Результирующая картинка

А вот и мой код:

import cv2

img = cv2.imread("image.png")

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
b,g,r = cv2.split(img)

th, thresh = cv2.threshold(b, 100, 255, cv2.THRESH_BINARY|cv2.THRESH_OTSU)
cv2.imwrite("image_bl_wh.png", thresh)

Пытался размытие и морфология , но не смог этого сделать.

Как сделать так, чтобы моя программа считала черные части вокруг изображения в качестве фона, и есть ли более лучший и простой способ сделать это?

P.S. Извините за ошибки в грамматике английского языка.

1 Ответ

0 голосов
/ 08 ноября 2018

Это не программное решение, но когда вы выполняете автоматический визуальный осмотр, это первое, что вы должны попробовать: Улучшить настройку. Изображение просто темнее по краям, поэтому при запись изображений должна помочь.

Если это не вариант, вы можете рассмотреть возможность использования пустого изображения для сравнения. То, что вы пытаетесь сделать, - это сегментирование фона, и есть более эффективные способы, чем простая пороговая настройка цвета, однако обычно для этого требуется как минимум одно изображение фона или несколько изображений.

Если вы хотите использовать программное решение, вы должны попробовать детектор края в сочетании с морфологическими операторами.

...