Попытка обнаружить и замаскировать цветы на изображениях с использованием OpenCV и адаптивного порогаPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Попытка обнаружить и замаскировать цветы на изображениях с использованием OpenCV и адаптивного порога

Сообщение Anonymous »

Я работаю над проектом, в котором мне нужно обнаруживать и маскировать цветы на изображениях с помощью OpenCV и адаптивного порогового определения. Несмотря на мои усилия, результаты противоречивы. Некоторые цветы маскируются хорошо, а другие либо маскируются частично, либо вообще не обнаруживаются. Для этой задачи я использую набор данных Oxford Flowers 102 в TensorFlow. Ниже приведен код, который я использую:

Код: Выделить всё

(train_dataset, test_dataset, validation_dataset), ds_info = tfds.load('oxford_flowers102', split=['test', 'train','validation'], with_info=True, as_supervised=True)

def normalize_img(image, label):
image = tf.image.resize(image, (256, 256))
return tf.cast(image, tf.float32) / 255.0, label

train_dataset = train_dataset.map(normalize_img, num_parallel_calls=tf.data.experimental.AUTOTUNE)
train_dataset = train_dataset.cache()
train_dataset = train_dataset.shuffle(ds_info.splits['train'].num_examples)
train_dataset = train_dataset.batch(32)
train_dataset = train_dataset.prefetch(tf.data.experimental.AUTOTUNE)

def detect_flowers_and_mask(image):
image_np = (image.numpy() * 255).astype(np.uint8)
gray_image = cv2.cvtColor(image_np, cv2.COLOR_RGB2GRAY)
binary_image = cv2.adaptiveThreshold(gray_image, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY_INV, 11, 2)
contours, _ = cv2.findContours(binary_image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

if contours:
max_contour = max(contours, key=cv2.contourArea)
mask = np.zeros_like(gray_image, dtype=np.uint8)
cv2.drawContours(mask, [max_contour], -1, (255, 255, 255), thickness=cv2.FILLED)
masked_image = cv2.bitwise_and(image_np, image_np, mask=mask)
else:
masked_image = image_np

return masked_image

plt.figure(figsize=(15, 15))
for i, (image_batch, label_batch) in enumerate(train_dataset.take(20)):
for image, label in zip(image_batch, label_batch):
masked_image = detect_flowers_and_mask(image)
plt.subplot(4, 5, i+1)
plt.imshow(masked_image)
plt.title(ds_info.features['label'].int2str(label.numpy()))
plt.axis("off")
plt.tight_layout()
plt.show()
Изображение


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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как бинаризировать изображение с использованием локального порога с помощью opencv
    Anonymous » » в форуме C++
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Как изменить цветы фона Apple Map (Mkmapview)?
    Anonymous » » в форуме IOS
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Как изменить цветы фона Apple Map (Mkmapview)?
    Anonymous » » в форуме IOS
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Как изменить цветы фона Apple Map (Mkmapview)?
    Anonymous » » в форуме IOS
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous
  • Cv2.error: OpenCV(4.8.1) D:\a\opencv-python\opencv-python\opencv\modules\src\.cpp:660: ошибка: (-215: утверждение не вып
    Anonymous » » в форуме Python
    0 Ответы
    117 Просмотры
    Последнее сообщение Anonymous

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