Python cv2.MORPH_DILATE Examples
The following are 6
code examples of cv2.MORPH_DILATE().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
cv2
, or try the search function
.
Example #1
Source File: getFoodContourMorph.py From tierpsy-tracker with MIT License | 6 votes |
def skeletonize(img): """ OpenCV function to return a skeletonized version of img, a Mat object""" # hat tip to http://felix.abecassis.me/2011/09/opencv-morphological-skeleton/ img = img.copy() # don't clobber original skel = img.copy() skel[:,:] = 0 kernel = cv2.getStructuringElement(cv2.MORPH_CROSS, (3,3)) while True: eroded = cv2.morphologyEx(img, cv2.MORPH_ERODE, kernel) temp = cv2.morphologyEx(eroded, cv2.MORPH_DILATE, kernel) temp = cv2.subtract(img, temp) skel = cv2.bitwise_or(skel, temp) img[:,:] = eroded[:,:] if cv2.countNonZero(img) == 0: break return skel
Example #2
Source File: image_functions.py From niryo_one_ros with GNU General Public License v3.0 | 5 votes |
def morphological_transformations(im_thresh, morpho_type="CLOSE", kernel_shape=(5, 5), kernel_type="ELLIPSE"): """ Take black & white image and apply morphological transformation :param im_thresh: Black & White Image :param morpho_type: CLOSE/OPEN/ERODE/DILATE => See on OpenCV/Google if you do not know these words :param kernel_shape: tuple corresponding to the size of the kernel :param kernel_type: RECT/ELLIPSE/CROSS => see on OpenCV :return: image after processing """ if kernel_type == "CROSS": kernel = cv2.getStructuringElement(cv2.MORPH_CROSS, kernel_shape) elif kernel_type == "RECT": kernel = cv2.getStructuringElement(cv2.MORPH_RECT, kernel_shape) else: kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, kernel_shape) if morpho_type == "OPEN": morph_type = cv2.MORPH_OPEN elif morpho_type == "DILATE": morph_type = cv2.MORPH_DILATE elif morpho_type == "ERODE": morph_type = cv2.MORPH_ERODE else: morph_type = cv2.MORPH_CLOSE return cv2.morphologyEx(im_thresh, morph_type, kernel) # Contours
Example #3
Source File: trappedball_fill.py From LineFiller with MIT License | 5 votes |
def trapped_ball_fill_single(image, seed_point, radius): """Perform a single trapped ball fill operation. # Arguments image: an image. the image should consist of white background, black lines and black fills. the white area is unfilled area, and the black area is filled area. seed_point: seed point for trapped-ball fill, a tuple (integer, integer). radius: radius of ball shape. # Returns an image after filling. """ ball = get_ball_structuring_element(radius) pass1 = np.full(image.shape, 255, np.uint8) pass2 = np.full(image.shape, 255, np.uint8) im_inv = cv2.bitwise_not(image) # Floodfill the image mask1 = cv2.copyMakeBorder(im_inv, 1, 1, 1, 1, cv2.BORDER_CONSTANT, 0) _, pass1, _, _ = cv2.floodFill(pass1, mask1, seed_point, 0, 0, 0, 4) # Perform dilation on image. The fill areas between gaps became disconnected. pass1 = cv2.morphologyEx(pass1, cv2.MORPH_DILATE, ball, anchor=(-1, -1), iterations=1) mask2 = cv2.copyMakeBorder(pass1, 1, 1, 1, 1, cv2.BORDER_CONSTANT, 0) # Floodfill with seed point again to select one fill area. _, pass2, _, rect = cv2.floodFill(pass2, mask2, seed_point, 0, 0, 0, 4) # Perform erosion on the fill result leaking-proof fill. pass2 = cv2.morphologyEx(pass2, cv2.MORPH_ERODE, ball, anchor=(-1, -1), iterations=1) return pass2
Example #4
Source File: invisibility_cloak.py From snapchat-filters-opencv with MIT License | 5 votes |
def invisibility(image): # converting from BGR to HSV color space hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) # cv2.imshow("hsv", hsv[..., 0]) # Range for lower red lower_red = np.array([0, 120, 70]) upper_red = np.array([10, 255, 255]) mask1 = cv2.inRange(hsv, lower_red, upper_red) # Range for upper range lower_red = np.array([170, 120, 70]) upper_red = np.array([180, 255, 255]) mask2 = cv2.inRange(hsv, lower_red, upper_red) # Generating the final mask to detect red color mask1 = mask1 + mask2 mask1 = cv2.morphologyEx(mask1, cv2.MORPH_OPEN, np.ones((3, 3), np.uint8)) mask1 = cv2.morphologyEx(mask1, cv2.MORPH_DILATE, np.ones((3, 3), np.uint8)) # creating an inverted mask to segment out the cloth from the frame mask2 = cv2.bitwise_not(mask1) # Segmenting the cloth out of the frame using bitwise and with the inverted mask res1 = cv2.bitwise_and(image, image, mask=mask2) # creating image showing static background frame pixels only for the masked region res2 = cv2.bitwise_and(background, background, mask=mask1) # Generating the final output final_output = cv2.addWeighted(res1, 1, res2, 1, 0) return final_output
Example #5
Source File: trappedball_fill.py From LineFiller with MIT License | 4 votes |
def get_border_point(points, rect, max_height, max_width): """Get border points of a fill area # Arguments points: points of fill . rect: bounding rect of fill. max_height: image max height. max_width: image max width. # Returns points , convex shape of points """ # Get a local bounding rect. border_rect = get_border_bounding_rect(max_height, max_width, rect[:2], rect[2:], 2) # Get fill in rect. fill = np.zeros((border_rect[3] - border_rect[1], border_rect[2] - border_rect[0]), np.uint8) # Move points to the rect. fill[(points[0] - border_rect[1], points[1] - border_rect[0])] = 255 # Get shape. _, contours, _ = cv2.findContours(fill, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) approx_shape = cv2.approxPolyDP(contours[0], 0.02 * cv2.arcLength(contours[0], True), True) # Get border pixel. # Structuring element in cross shape is used instead of box to get 4-connected border. cross = cv2.getStructuringElement(cv2.MORPH_CROSS, (3, 3)) border_pixel_mask = cv2.morphologyEx(fill, cv2.MORPH_DILATE, cross, anchor=(-1, -1), iterations=1) - fill border_pixel_points = np.where(border_pixel_mask == 255) # Transform points back to fillmap. border_pixel_points = (border_pixel_points[0] + border_rect[1], border_pixel_points[1] + border_rect[0]) return border_pixel_points, approx_shape
Example #6
Source File: paper_quad.py From aggregation with Apache License 2.0 | 4 votes |
def __extract_grids__(img,horizontal): assert len(img.shape) == 2 # height,width = img.shape grid_lines = [] if horizontal: kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(5,1)) d_image = cv2.Sobel(img,cv2.CV_16S,0,2) else: kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(1,5)) d_image = cv2.Sobel(img,cv2.CV_16S,2,0) d_image = cv2.convertScaleAbs(d_image) cv2.normalize(d_image,d_image,0,255,cv2.NORM_MINMAX) ret,close = cv2.threshold(d_image,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU) # _,th1 = cv2.threshold(d_image,127,255,cv2.THRESH_BINARY) close = cv2.morphologyEx(close,cv2.MORPH_DILATE,kernel) _,contour, hier = cv2.findContours(close.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE) for cnt in contour: x,y,w,h = cv2.boundingRect(cnt) perimeter = cv2.arcLength(cnt,True) if min(h,w) > 1 and (perimeter > 500): s = cnt.shape f = np.reshape(cnt,(s[0],s[2])) if horizontal and (w/h > 5): grid_lines.append(f) template = np.zeros(img.shape,np.uint8) template.fill(255) cv2.drawContours(template, [cnt], 0, 0, -1) plt.imshow(template) plt.show() elif not horizontal and (h/w > 5): grid_lines.append(f) return grid_lines