Как повернуть структурирующий элемент при использовании преобразования top-hat? - PullRequest
0 голосов
/ 07 ноября 2019

Я выполняю преобразование top-hat на изображении, структурирующий элемент имеет длину 21 пиксель и ширину 1 пиксель, как я могу повернуть этот структурирующий элемент? Так что я могу извлекать информацию под разными углами из этого изображения.

Что у меня сейчас есть

import numpy as np
import cv2
element = np.ones((21, 1))

new_image = cv2.morphologyEx(origin_image, cv2.MORPH_TOPHAT, element, iterations = 1)

Но как применить это к разным углам? Как повернуть структурирующий элемент на 30 градусов.

1 Ответ

0 голосов
/ 09 ноября 2019

Функция, которую я использовал для поворота структурирующего элемента, приведена ниже:

import cv2 
import numpy
def rotate_bound(image,angle):
    (h,w) = image.shape[:2]
    (cx,cy) = (w/2,h/2)

    M = cv2.getRotationMatrix2D((cx,cy),-angle,1.0)
    print(M.shape)
    print(M)

    cos = np.abs(M[0,0])
    sin = np.abs(M[0,1])

    nW = int((h*sin)+(w*cos))
    nH = int((h*cos)+(w*sin))

    M[0,2] += (nW/2) - cx
    M[1,2] += (nH/2) - cy

    return cv2.warpAffine(image,M,(nW,nH))

element = np.ones((21,1))
rotated_element = rotate_bound(element, 30)
rotated_element[rotated_element == 0] = 10
result = cv2.morphologyEx(image, cv2.MORPH_TOPHAT, rotated_element)

Спасибо за помощь от @ fmw42:)

...