Morphological Reconstruction in OpenCV

后端 未结 2 1314
没有蜡笔的小新
没有蜡笔的小新 2021-01-20 03:11

When processing an image with text in OpenCV, my opening operation does not result in proper output data. The issue is quite similar to the one described in this article: ht

2条回答
  •  独厮守ぢ
    2021-01-20 03:49

    Here's my Python3 implementation in analogy to MatLab's imreconstruct algorithm:

    import cv2
    import numpy as np
    
    
    def imreconstruct(marker: np.ndarray, mask: np.ndarray, radius: int = 1):
        """Iteratively expand the markers white keeping them limited by the mask during each iteration.
    
        :param marker: Grayscale image where initial seed is white on black background.
        :param mask: Grayscale mask where the valid area is white on black background.
        :param radius Can be increased to improve expansion speed while causing decreased isolation from nearby areas.
        :returns A copy of the last expansion.
        Written By Semnodime.
        """
        kernel = np.ones(shape=(radius * 2 + 1,) * 2, dtype=np.uint8)
        while True:
            expanded = cv2.dilate(src=marker, kernel=kernel)
            cv2.bitwise_and(src1=expanded, src2=mask, dst=expanded)
    
            # Termination criterion: Expansion didn't change the image at all
            if (marker == expanded).all():
                return expanded
            marker = expanded
    

提交回复
热议问题