OpenCV: размыть края изображения

127
02 ноября 2019, 08:50

Как можно такое размытие реализовать? Пока только получается как на метки "My Output"

Изображение и маска

Основная задача, это вырезать картинку на другой фон. Так как фон будет не подходящий, надо размыть края как показано на примере.

Answer 1

Попробуйте так:

import numpy as np
import cv2

def cut_and_blur_contour(img, mask, cnt_thickness=4, kernel=(5,5)):
    # apply mask
    img = cv2.bitwise_and(img, img, mask=mask)
    tmp = img.copy()
    # prepare a blurred image
    blur = cv2.GaussianBlur(img, kernel, 0)
    # find contours
    ret,thresh = cv2.threshold(mask,127,255,0)
    im2, contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
    # draw contours using passed [cnt_thickness] on a temporary image
    _ = cv2.drawContours(tmp, contours, 0, (0,255,0), cnt_thickness)
    # create contour mask
    hsv = cv2.cvtColor(tmp, cv2.COLOR_BGR2HSV)
    mask = cv2.inRange(hsv, (36, 25, 25), (70, 255,255))
    # apply contour mask
    tmp = cv2.bitwise_and(blur, blur, mask=mask)
    return np.where(tmp > 0, blur, img)

img_fn = r'D:\download\image.png'
mask_fn = r'D:\download\mask.png'
img = cv2.imread(img_fn)
mask = cv2.imread(mask_fn, 0)
res = cut_and_blur_contour(img, mask, cnt_thickness=4, kernel=(5,5))
cv2.imwrite(r'C:\temp\result.png', res)
cv2.imshow('result', res)

Результат:

READ ALSO
как настроить фильтр для столбаца в excel через c#, возможно ли использовать для этого какую либо систему?

как настроить фильтр для столбаца в excel через c#, возможно ли использовать для этого какую либо систему?

В архиве на стеллажах хранятся коробки с документамиКаждый стеллаж имеет свой штрих-код – Sххххх, где х – цифра от 0 до 9 Каждая полка на стеллажах...

112
Передача разных типо данных в аргумент функции c#

Передача разных типо данных в аргумент функции c#

В коде у 4-ех свойств повторяются сеттеры (ActivityStatus, TimeSpan(2), DataTime)Требуется убрать повторения путем написание функции

115
Класc Двумерный вектор и Трехмерный вектор в C#

Класc Двумерный вектор и Трехмерный вектор в C#

Задание такое: Составить программу с одним родительским классом и двумя потомкамиПотомки должны содержать виртуальные функции

119
Работа с данными полученными из БД Oracle

Работа с данными полученными из БД Oracle

подскажите, есть код, который открывает поток на чтение данных из БД оракл

92