Python cv2.dilate() Examples
The following are 30
code examples of cv2.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: motion.py From object-detection with MIT License | 10 votes |
def prediction(self, image): image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) image = cv2.GaussianBlur(image, (21, 21), 0) if self.avg is None: self.avg = image.copy().astype(float) cv2.accumulateWeighted(image, self.avg, 0.5) frameDelta = cv2.absdiff(image, cv2.convertScaleAbs(self.avg)) thresh = cv2.threshold( frameDelta, DELTA_THRESH, 255, cv2.THRESH_BINARY)[1] thresh = cv2.dilate(thresh, None, iterations=2) cnts = cv2.findContours( thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) cnts = imutils.grab_contours(cnts) self.avg = image.copy().astype(float) return cnts
Example #2
Source File: squares.py From OpenCV-Python-Tutorial with MIT License | 9 votes |
def find_squares(img): img = cv2.GaussianBlur(img, (5, 5), 0) squares = [] for gray in cv2.split(img): for thrs in xrange(0, 255, 26): if thrs == 0: bin = cv2.Canny(gray, 0, 50, apertureSize=5) bin = cv2.dilate(bin, None) else: retval, bin = cv2.threshold(gray, thrs, 255, cv2.THRESH_BINARY) bin, contours, hierarchy = cv2.findContours(bin, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) for cnt in contours: cnt_len = cv2.arcLength(cnt, True) cnt = cv2.approxPolyDP(cnt, 0.02*cnt_len, True) if len(cnt) == 4 and cv2.contourArea(cnt) > 1000 and cv2.isContourConvex(cnt): cnt = cnt.reshape(-1, 2) max_cos = np.max([angle_cos( cnt[i], cnt[(i+1) % 4], cnt[(i+2) % 4] ) for i in xrange(4)]) if max_cos < 0.1: squares.append(cnt) return squares
Example #3
Source File: page.py From doc2text with MIT License | 7 votes |
def find_components(im, max_components=16): """Dilate the image until there are just a few connected components. Returns contours for these components.""" kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (10, 10)) dilation = dilate(im, kernel, 6) count = 21 n = 0 sigma = 0.000 while count > max_components: n += 1 sigma += 0.005 result = cv2.findContours(dilation, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) if len(result) == 3: _, contours, hierarchy = result elif len(result) == 2: contours, hierarchy = result possible = find_likely_rectangles(contours, sigma) count = len(possible) return (dilation, possible, n)
Example #4
Source File: detect_picture_color_circle.py From Python-Code with MIT License | 7 votes |
def findPiccircle(frame, color): hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) color_dict = color_list.getColorList() mask = cv2.inRange(hsv, color_dict[color][0], color_dict[color][1]) dilated = cv2.dilate(mask, cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3, 3)), iterations=2) ## 需要修改minRadius以及maxRadius,用来限制识别圆的大小,排除其他的干扰 circles = cv2.HoughCircles(dilated, cv2.HOUGH_GRADIENT, 1, 1000, param1=15, param2=10, minRadius=15, maxRadius=50) center = None if circles is not None: x, y, radius = circles[0][0] center = (x, y) cv2.circle(frame, center, radius, (0, 255, 0), 2) cv2.circle(frame, center, 2, (0,255,0), -1, 8, 0 ); print('圆心:{}, {}'.format(x, y)) cv2.imshow('result', frame) if center != None: return center
Example #5
Source File: line_detect_2.py From crop_row_detection with GNU General Public License v3.0 | 7 votes |
def skeletonize(image_in): '''Inputs and grayscale image and outputs a binary skeleton image''' size = np.size(image_in) skel = np.zeros(image_in.shape, np.uint8) ret, image_edit = cv2.threshold(image_in, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU) element = cv2.getStructuringElement(cv2.MORPH_CROSS, (3,3)) done = False while not done: eroded = cv2.erode(image_edit, element) temp = cv2.dilate(eroded, element) temp = cv2.subtract(image_edit, temp) skel = cv2.bitwise_or(skel, temp) image_edit = eroded.copy() zeros = size - cv2.countNonZero(image_edit) if zeros == size: done = True return skel
Example #6
Source File: picam.py From PiCamNN with MIT License | 7 votes |
def movement(mat_1,mat_2): mat_1_gray = cv2.cvtColor(mat_1.copy(),cv2.COLOR_BGR2GRAY) mat_1_gray = cv2.blur(mat_1_gray,(blur1,blur1)) _,mat_1_gray = cv2.threshold(mat_1_gray,100,255,0) mat_2_gray = cv2.cvtColor(mat_2.copy(),cv2.COLOR_BGR2GRAY) mat_2_gray = cv2.blur(mat_2_gray,(blur1,blur1)) _,mat_2_gray = cv2.threshold(mat_2_gray,100,255,0) mat_2_gray = cv2.bitwise_xor(mat_1_gray,mat_2_gray) mat_2_gray = cv2.blur(mat_2_gray,(blur2,blur2)) _,mat_2_gray = cv2.threshold(mat_2_gray,70,255,0) mat_2_gray = cv2.erode(mat_2_gray,np.ones((erodeval,erodeval))) mat_2_gray = cv2.dilate(mat_2_gray,np.ones((4,4))) _, contours,__ = cv2.findContours(mat_2_gray,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) if len(contours) > 0:return True #If there were any movements return False #if not #Pedestrian Recognition Thread
Example #7
Source File: DataSet.py From ext_portrait_segmentation with MIT License | 6 votes |
def __getitem__(self, idx): ''' :param idx: Index of the image file :return: returns the image and corresponding label file. ''' image_name = self.imList[idx] label_name = self.labelList[idx] image = cv2.imread(image_name) label = cv2.imread(label_name, 0) label_bool = 255 * ((label > 200).astype(np.uint8)) if self.transform: [image, label] = self.transform(image, label_bool) if self.edge: np_label = 255 * label.data.numpy().astype(np.uint8) kernel = np.ones((self.kernel_size , self.kernel_size ), np.uint8) erosion = cv2.erode(np_label, kernel, iterations=1) dilation = cv2.dilate(np_label, kernel, iterations=1) boundary = dilation - erosion edgemap = 255 * torch.ones_like(label) edgemap[torch.from_numpy(boundary) > 0] = label[torch.from_numpy(boundary) > 0] return (image, label, edgemap) else: return (image, label)
Example #8
Source File: instance_edge_generator.py From openseg.pytorch with MIT License | 6 votes |
def generate_edge(label, edge_width=10, area_thrs=200): label_list = [7, 8, 11, 12, 13, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 31, 32, 33] edge = np.zeros_like(label, dtype=np.uint8) for i in np.unique(label): # have no instance if i < 1000 or (i // 1000) not in label_list: continue # filter out small objects mask = (label == i).astype(np.uint8) if mask.sum() < area_thrs: continue rmin, rmax, cmin, cmax = _get_bbox(mask) mask_edge = _generate_edge(mask[rmin:rmax+1, cmin:cmax+1]) edge[rmin:rmax+1, cmin:cmax+1][mask_edge > 0] = 255 # dilation on edge kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (edge_width, edge_width)) edge = cv2.dilate(edge, kernel) return edge
Example #9
Source File: Dataloader.py From Text_Segmentation_Image_Inpainting with GNU General Public License v3.0 | 6 votes |
def process_images(self, clean, mask): i, j, h, w = RandomResizedCrop.get_params(clean, scale=(0.5, 2.0), ratio=(3. / 4., 4. / 3.)) clean_img = resized_crop(clean, i, j, h, w, size=self.img_size, interpolation=Image.BICUBIC) mask = resized_crop(mask, i, j, h, w, self.img_size, interpolation=Image.BICUBIC) # get mask before further image augment # mask = self.get_mask(raw_img, clean_img) if self.add_random_masks: mask = random_masks(mask.copy(), size=self.img_size[0], offset=10) mask = np.where(np.array(mask) > brightness_difference * 255, np.uint8(255), np.uint8(0)) mask = cv2.dilate(mask, np.ones((10, 10), np.uint8), iterations=1) mask = np.expand_dims(mask, -1) mask_t = to_tensor(mask) # mask_t = (mask_t > brightness_difference).float() # mask_t, _ = torch.max(mask_t, dim=0, keepdim=True) binary_mask = (1 - mask_t) # valid positions are 1; holes are 0 binary_mask = binary_mask.expand(3, -1, -1) clean_img = self.transformer(clean_img) corrupted_img = clean_img * binary_mask return corrupted_img, binary_mask, clean_img
Example #10
Source File: crop_morphology.py From oldnyc with Apache License 2.0 | 6 votes |
def find_components(edges, max_components=16): """Dilate the image until there are just a few connected components. Returns contours for these components.""" # Perform increasingly aggressive dilation until there are just a few # connected components. count = 21 dilation = 5 n = 1 while count > 16: n += 1 dilated_image = dilate(edges, N=3, iterations=n) contours, hierarchy = cv2.findContours(dilated_image, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) count = len(contours) #print dilation #Image.fromarray(edges).show() #Image.fromarray(255 * dilated_image).show() return contours
Example #11
Source File: SudokuExtractor.py From SolveSudoku with MIT License | 6 votes |
def pre_process_image(img, skip_dilate=False): """Uses a blurring function, adaptive thresholding and dilation to expose the main features of an image.""" # Gaussian blur with a kernal size (height, width) of 9. # Note that kernal sizes must be positive and odd and the kernel must be square. proc = cv2.GaussianBlur(img.copy(), (9, 9), 0) # Adaptive threshold using 11 nearest neighbour pixels proc = cv2.adaptiveThreshold(proc, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2) # Invert colours, so gridlines have non-zero pixel values. # Necessary to dilate the image, otherwise will look like erosion instead. proc = cv2.bitwise_not(proc, proc) if not skip_dilate: # Dilate the image to increase the size of the grid lines. kernel = np.array([[0., 1., 0.], [1., 1., 1.], [0., 1., 0.]],np.uint8) proc = cv2.dilate(proc, kernel) return proc
Example #12
Source File: coherence.py From OpenCV-Python-Tutorial with MIT License | 6 votes |
def coherence_filter(img, sigma = 11, str_sigma = 11, blend = 0.5, iter_n = 4): h, w = img.shape[:2] for i in xrange(iter_n): print(i) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) eigen = cv2.cornerEigenValsAndVecs(gray, str_sigma, 3) eigen = eigen.reshape(h, w, 3, 2) # [[e1, e2], v1, v2] x, y = eigen[:,:,1,0], eigen[:,:,1,1] gxx = cv2.Sobel(gray, cv2.CV_32F, 2, 0, ksize=sigma) gxy = cv2.Sobel(gray, cv2.CV_32F, 1, 1, ksize=sigma) gyy = cv2.Sobel(gray, cv2.CV_32F, 0, 2, ksize=sigma) gvv = x*x*gxx + 2*x*y*gxy + y*y*gyy m = gvv < 0 ero = cv2.erode(img, None) dil = cv2.dilate(img, None) img1 = ero img1[m] = dil[m] img = np.uint8(img*(1.0 - blend) + img1*blend) print('done') return img
Example #13
Source File: lucidDream.py From pyLucid with MIT License | 6 votes |
def SeamlessClone_trimap(srcIm,dstIm,imMask,offX,offY): dstIm=dstIm.copy() bimsk=imMask>0 new_msk=np.zeros(dstIm.shape[:2],dtype='uint8') new_msk[offY:offY+imMask.shape[0],offX:offX+imMask.shape[1]]=imMask dstIm[new_msk>0]=srcIm[imMask>0] kernel=cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(3,3)) bimsk=bimsk.astype('uint8') bdmsk=cv2.dilate(bimsk,kernel)-cv2.erode(bimsk,kernel) mask255=bdmsk>0 mask255=(mask255*255).astype('uint8') offCenter=(int(offX+imMask.shape[1]/2),int(offY+imMask.shape[0]/2)) if np.any(bdmsk>0): outputIm=cv2.seamlessClone(srcIm,dstIm,mask255,offCenter,cv2.MIXED_CLONE) else: outputIm=dstIm #when one object have very few pixels, bdmsk will be totally zero, which will cause segmentation fault. return outputIm,new_msk
Example #14
Source File: lucidDream.py From pyLucid with MIT License | 6 votes |
def spline_transform_multi(img, mask): bimask=mask>0 M,N=np.where(bimask) w=np.ptp(N)+1 h=np.ptp(M)+1 kernel=cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(3,3)) bound=cv2.dilate(bimask.astype('uint8'),kernel)-bimask y,x=np.where(bound>0) if x.size>4: newxy=thin_plate_transform(x,y,w,h,mask.shape[:2],num_points=5) new_img=cv2.remap(img,newxy,None,cv2.INTER_LINEAR) new_msk=cv2.remap(mask,newxy,None,cv2.INTER_NEAREST) elif x.size>0: new_img=img new_msk=mask return new_img,new_msk
Example #15
Source File: edge_smooth.py From CartoonGAN-Tensorflow with MIT License | 6 votes |
def make_edge_smooth(dataset_name, img_size) : check_folder('./dataset/{}/{}'.format(dataset_name, 'trainB_smooth')) file_list = glob('./dataset/{}/{}/*.*'.format(dataset_name, 'trainB')) save_dir = './dataset/{}/trainB_smooth'.format(dataset_name) kernel_size = 5 kernel = np.ones((kernel_size, kernel_size), np.uint8) gauss = cv2.getGaussianKernel(kernel_size, 0) gauss = gauss * gauss.transpose(1, 0) for f in tqdm(file_list) : file_name = os.path.basename(f) bgr_img = cv2.imread(f) gray_img = cv2.imread(f, 0) bgr_img = cv2.resize(bgr_img, (img_size, img_size)) pad_img = np.pad(bgr_img, ((2, 2), (2, 2), (0, 0)), mode='reflect') gray_img = cv2.resize(gray_img, (img_size, img_size)) edges = cv2.Canny(gray_img, 100, 200) dilation = cv2.dilate(edges, kernel) gauss_img = np.copy(bgr_img) idx = np.where(dilation != 0) for i in range(np.sum(dilation != 0)): gauss_img[idx[0][i], idx[1][i], 0] = np.sum( np.multiply(pad_img[idx[0][i]:idx[0][i] + kernel_size, idx[1][i]:idx[1][i] + kernel_size, 0], gauss)) gauss_img[idx[0][i], idx[1][i], 1] = np.sum( np.multiply(pad_img[idx[0][i]:idx[0][i] + kernel_size, idx[1][i]:idx[1][i] + kernel_size, 1], gauss)) gauss_img[idx[0][i], idx[1][i], 2] = np.sum( np.multiply(pad_img[idx[0][i]:idx[0][i] + kernel_size, idx[1][i]:idx[1][i] + kernel_size, 2], gauss)) cv2.imwrite(os.path.join(save_dir, file_name), gauss_img)
Example #16
Source File: image_comp_tool.py From HalloPy with MIT License | 6 votes |
def get_max_area_contour(input_image): # Get the contours. expected_gray = cv2.cvtColor(input_image, cv2.COLOR_BGR2GRAY) blur = cv2.GaussianBlur(expected_gray, (41, 41), 0) thresh = cv2.threshold(blur, 50, 255, cv2.THRESH_BINARY)[1] thresh = cv2.erode(thresh, None, iterations=2) thresh = cv2.dilate(thresh, None, iterations=2) _, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) # Find the biggest area try: if len(contours) > 0: max_area_contour = max(contours, key=cv2.contourArea) return max_area_contour except ValueError as error: print(error)
Example #17
Source File: medianABS_racking.py From ethoscope with GNU General Public License v3.0 | 6 votes |
def _update_bg_model(self, img, fgmask=None): # todo array preallocation and np.ufuns will help to optimise this part ! if self._learning_rate > self._max_learning_rate: self._learning_rate = self._max_learning_rate if self._learning_rate < self._min_learning_rate: self._learning_rate = self._min_learning_rate if self._bg_mean is None: self._bg_mean = np.copy(img) #self._bg_sd = img learning_mat = np.ones_like(img,dtype = np.float32) * np.float32(self._learning_rate) if fgmask is not None: cv2.dilate(fgmask,None,fgmask) # cv2.dilate(fgmask,None,fgmask) learning_mat[fgmask.astype(np.bool)] = 0 self._bg_mean = learning_mat * img + (1 - learning_mat) * self._bg_mean # self._bg_sd = learning_mat * np.abs(self._bg_mean - img) + (1 - learning_mat) * self._bg_sd
Example #18
Source File: evaluation.py From uois with GNU General Public License v3.0 | 5 votes |
def boundary_overlap(predicted_mask, gt_mask, bound_th=0.003): """ Compute true positives of overlapped masks, using dilated boundaries Arguments: predicted_mask (ndarray): binary segmentation image. gt_mask (ndarray): binary annotated image. Returns: overlap (float): IoU overlap of boundaries """ assert np.atleast_3d(predicted_mask).shape[2] == 1 bound_pix = bound_th if bound_th >= 1 else \ np.ceil(bound_th*np.linalg.norm(predicted_mask.shape)) # Get the pixel boundaries of both masks fg_boundary = seg2bmap(predicted_mask); gt_boundary = seg2bmap(gt_mask); from skimage.morphology import disk # Dilate segmentation boundaries gt_dil = cv2.dilate(gt_boundary.astype(np.uint8), disk(bound_pix), iterations=1) fg_dil = cv2.dilate(fg_boundary.astype(np.uint8), disk(bound_pix), iterations=1) # Get the intersection (true positives). Calculate true positives differently for # precision and recall since we have to dilated the boundaries fg_match = np.logical_and(fg_boundary, gt_dil) gt_match = np.logical_and(gt_boundary, fg_dil) # Return precision_tps, recall_tps (tps = true positives) return np.sum(fg_match), np.sum(gt_match) # This function is modeled off of P/R/F measure as described by Dave et al. (arXiv19)
Example #19
Source File: data_generation.py From keras-ocr with MIT License | 5 votes |
def compute_transformed_contour(width, height, fontsize, M, contour, minarea=0.5): """Compute the permitted drawing contour on a padded canvas for an image of a given size. We assume the canvas is padded with one full image width and height on left and right, top and bottom respectively. Args: width: Width of image height: Height of image fontsize: Size of characters M: The transformation matrix contour: The contour to which we are limited inside the rectangle of size width / height minarea: The minimum area required for a character slot to qualify as being visible, expressed as a fraction of the untransformed fontsize x fontsize slot. """ spacing = math.ceil(fontsize / 2) xslots = int(np.floor(width / spacing)) yslots = int(np.floor(height / spacing)) ys, xs = np.mgrid[:yslots, :xslots] basis = np.concatenate([xs[..., np.newaxis], ys[..., np.newaxis]], axis=-1).reshape((-1, 2)) basis *= spacing slots_pretransform = np.concatenate( [(basis + offset)[:, np.newaxis, :] for offset in [[0, 0], [spacing, 0], [spacing, spacing], [0, spacing]]], axis=1) slots = cv2.perspectiveTransform(src=slots_pretransform.reshape((1, -1, 2)).astype('float32'), m=M)[0] inside = np.array([ cv2.pointPolygonTest(contour=contour, pt=(x, y), measureDist=False) >= 0 for x, y in slots ]).reshape(-1, 4).all(axis=1) slots = slots.reshape(-1, 4, 2) areas = np.abs((slots[:, 0, 0] * slots[:, 1, 1] - slots[:, 0, 1] * slots[:, 1, 0]) + (slots[:, 1, 0] * slots[:, 2, 1] - slots[:, 1, 1] * slots[:, 2, 0]) + (slots[:, 2, 0] * slots[:, 3, 1] - slots[:, 2, 1] * slots[:, 3, 0]) + (slots[:, 3, 0] * slots[:, 0, 1] - slots[:, 3, 1] * slots[:, 0, 0])) / 2 slots_filtered = slots_pretransform[(areas > minarea * spacing * spacing) & inside] temporary_image = cv2.drawContours(image=np.zeros((height, width), dtype='uint8'), contours=slots_filtered, contourIdx=-1, color=255) temporary_image = cv2.dilate(src=temporary_image, kernel=np.ones((spacing, spacing))) newContours, _ = cv2.findContours(temporary_image, mode=cv2.RETR_TREE, method=cv2.CHAIN_APPROX_SIMPLE) x, y = slots_filtered[0][0] contour = newContours[next( index for index, contour in enumerate(newContours) if cv2.pointPolygonTest(contour=contour, pt=(x, y), measureDist=False) >= 0)][:, 0, :] return contour
Example #20
Source File: capdet.py From katarina with MIT License | 5 votes |
def detectTwoColors( img, capColors ): imgResult = np.zeros( img.shape, np.uint8 ) imgB, imgG, imgR = cv2.split(img) for col in capColors: maskB = np.logical_and( imgB < col[0]+rad, imgB > col[0]-rad ) maskG = np.logical_and( imgG < col[1]+rad, imgG > col[1]-rad ) maskR = np.logical_and( imgR < col[2]+rad, imgR > col[2]-rad ) mask = np.logical_and(maskR, maskG) mask = np.logical_and(mask, maskB) if col[1] > max(col[0],col[2]): imgResult[mask] = (0,255,0) # green else: imgResult[mask] = (0,128,255) # orange gray = cv2.cvtColor( imgResult, cv2.COLOR_BGR2GRAY ) ret, binary = cv2.threshold( gray, 1, 255, cv2.THRESH_BINARY ) kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(7,7)) binary = cv2.dilate( binary, kernel ) cmpRG = imgR > imgG contours, hierarchy = cv2.findContours( binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE ) result = [] for cnt in contours: area = cv2.contourArea(cnt, oriented=True) if area < 0: cv2.drawContours(imgResult, [cnt], -1, (255,0,0), 2) maskTmp = np.zeros( (img.shape[0],img.shape[1]), np.uint8 ) cv2.drawContours(maskTmp, [cnt], -1, 255, -1) mask = maskTmp > 0 orange = np.count_nonzero(np.logical_and( mask, cmpRG )) # print abs(area), orange, orange/float(abs(area)) frac = orange/float(abs(area)) if abs(area) > 20 and (0.4 < frac < 0.7): M = cv2.moments(cnt) cx = int(M['m10']/M['m00']) cy = int(M['m01']/M['m00']) result.append( ((cx,cy), int(abs(area)), int(orange)) ) return imgResult, result
Example #21
Source File: page_elements2.py From namsel with MIT License | 5 votes |
def _draw_new_page(self): self.page_array = np.ones_like(self.img_arr) self.tall = set([i for i in self.get_indices() if self.get_boxes()[i][3] > 3*self.char_mean]) # cv.drawContours(self.page_array, [self.contours[i] for i in # self.get_indices() if self.get_boxes()[i][2] <= self.tsek_mean + 3*self.tsek_std], # -1,0, thickness = -1) # # # self.page_array = cv.medianBlur(self.page_array, 19) # # cv.drawContours(self.page_array, [self.contours[i] for i in # self.get_indices() if self.get_boxes()[i][2] <= self.tsek_mean + 3*self.tsek_std], # -1,0, thickness = -1) cv.drawContours(self.page_array, [self.contours[i] for i in range(len(self.contours)) if self.get_boxes()[i][2] > self.smlmean + 3*self.smstd], -1,0, thickness = -1) # cv.drawContours(self.page_array, [self.contours[i] for i in # self.get_indices() if self.get_boxes()[i][3] <= 2*self.char_mean], # -1,0, thickness = -1) # cv.erode(self.page_array, None, self.page_array, iterations=2) # self.page_array = cv.morphologyEx(self.page_array, cv.MORPH_CLOSE, None,iterations=2) import Image Image.fromarray(self.page_array*255).show() # raw_input() # cv.dilate(self.page_array, None, self.page_array, iterations=1)
Example #22
Source File: page.py From doc2text with MIT License | 5 votes |
def dilate(image, kernel, iterations): dilated_image = cv2.dilate(image, kernel, iterations=iterations) return dilated_image
Example #23
Source File: Exudates.py From Diabetic-Retinopathy-Feature-Extraction-using-Fundus-Images with GNU General Public License v3.0 | 5 votes |
def applyDilation(self): #Creating Structurig Element strEl = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(6,6)) #Dilation dilateImg = cv2.dilate(self.curImg, strEl) self.curImg = dilateImg
Example #24
Source File: red_blob_detection.py From visual-followme with GNU General Public License v3.0 | 5 votes |
def clean_up_with_morphology(prob): erode = cv2.erode(prob, None, iterations=1) dilated = cv2.dilate(erode, None, iterations=2) binary_img = cv2.erode(dilated, None, iterations=1) return binary_img
Example #25
Source File: crop_morphology.py From oldnyc with Apache License 2.0 | 5 votes |
def dilate(ary, N, iterations): """Dilate using an NxN '+' sign shape. ary is np.uint8.""" kernel = np.zeros((N,N), dtype=np.uint8) kernel[(N-1)/2,:] = 1 dilated_image = cv2.dilate(ary / 255, kernel, iterations=iterations) kernel = np.zeros((N,N), dtype=np.uint8) kernel[:,(N-1)/2] = 1 dilated_image = cv2.dilate(dilated_image, kernel, iterations=iterations) return dilated_image
Example #26
Source File: imgaug.py From imgaug with MIT License | 5 votes |
def _max_pool_uint8_(arr, block_size, pad_mode="edge", pad_cval=0): return _minmax_pool_uint8_(arr, block_size, cv2.dilate, pad_mode=pad_mode, pad_cval=pad_cval) # Added in 0.5.0.
Example #27
Source File: augs.py From hover_net with MIT License | 5 votes |
def _augment(self, img, _): img = np.copy(img) orig_ann = img[...,0] # instance ID map fixed_ann = self._fix_mirror_padding(orig_ann) # re-cropping with fixed instance id map crop_ann = cropping_center(fixed_ann, self.crop_shape) # setting 1 boundary pix of each instance to background contour_map = np.zeros(fixed_ann.shape[:2], np.uint8) inst_list = list(np.unique(crop_ann)) inst_list.remove(0) # 0 is background k_disk = np.array([ [0, 0, 0, 1, 0, 0, 0], [0, 0, 1, 1, 1, 0, 0], [0, 1, 1, 1, 1, 1, 0], [1, 1, 1, 1, 1, 1, 1], [0, 1, 1, 1, 1, 1, 0], [0, 0, 1, 1, 1, 0, 0], [0, 0, 0, 1, 0, 0, 0], ], np.uint8) for inst_id in inst_list: inst_map = np.array(fixed_ann == inst_id, np.uint8) inner = cv2.erode(inst_map, k_disk, iterations=1) outer = cv2.dilate(inst_map, k_disk, iterations=1) contour_map += outer - inner contour_map[contour_map > 0] = 1 # binarize img = np.dstack([fixed_ann, contour_map]) return img ####
Example #28
Source File: BoardExtractor.py From AI_Sudoku with Creative Commons Zero v1.0 Universal | 5 votes |
def preprocess_image(self): gray = self.image #Applying Gaussian Blur to smooth out the noise gray = cv2.GaussianBlur(gray, (11, 11), 0) try: os.remove("StagesImages/1.jpg") except: pass cv2.imwrite("StagesImages/1.jpg", gray) # Applying thresholding using adaptive Gaussian|Mean thresholding gray = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C | cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 5, 2) try: os.remove("StagesImages/2.jpg") except: pass cv2.imwrite("StagesImages/2.jpg", gray) #Inverting the image gray = cv2.bitwise_not(gray) try: os.remove("StagesImages/3.jpg") except: pass cv2.imwrite("StagesImages/3.jpg", gray) #Dilating the image to fill up the "cracks" in lines kernel = np.array([[0, 1, 0], [1, 1, 1], [0, 1, 0]], np.uint8) gray = cv2.dilate(gray, kernel) self.image = gray try: os.remove("StagesImages/4.jpg") except: pass cv2.imwrite("StagesImages/4.jpg", gray)
Example #29
Source File: demo.py From ActionAI with GNU General Public License v3.0 | 5 votes |
def motion_detector(self, img): occupied = False # resize the frame, convert it to grayscale, and blur it gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) gray = cv2.GaussianBlur(gray, (15, 15), 0) if self.avg is None: print("[INFO] starting background model...") self.avg = gray.copy().astype("float") # accumulate the weighted average between the current frame and # previous frames, then compute the difference between the current # frame and running average cv2.accumulateWeighted(gray, self.avg, 0.5) frameDelta = cv2.absdiff(gray, cv2.convertScaleAbs(self.avg)) # threshold the delta image, dilate the thresholded image to fill # in holes, then find contours on thresholded image thresh = cv2.threshold(frameDelta, 5, 255, cv2.THRESH_BINARY)[1] thresh = cv2.dilate(thresh, None, iterations=2) cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) cnts = cnts[1] # loop over the contours for c in cnts: # if the contour is too small, ignore it if cv2.contourArea(c) < 5000: pass occupied = True return occupied
Example #30
Source File: utils.py From dal with MIT License | 5 votes |
def distort_map(img, rows, cols): # done making a map for LM : self.map_for_LM # try erode and dilate kernel = np.array([[0,1,1,1,0], [1,1,1,1,1], [1,1,1,1,1], [1,1,1,1,1], [0,1,1,1,0]], np.uint8) # expand img boarder = img-cv2.erode(img,np.ones((3,3),np.uint8),iterations=1) img1 = np.clip(boarder,0,1) # leave portion img1 = np.clip(img1 * (np.random.rand(rows,cols) > 0.5).astype(int) + img-boarder, 0, 1) img1 = cv2.dilate(img1, kernel, iterations = 1) # shrink img2 = cv2.erode(img1, kernel, iterations = 1) # img2 = cv2.morphologyEx(img2, cv2.MORPH_CLOSE, kernel) img3 = img2 n = np.random.randint(5) for _ in range(n): img3 = img3 * (np.random.rand(rows,cols) > 0.33).astype(int) #img3 = img2*np.random.randint(2,size=[224,224]) img3 = cv2.dilate(img3, kernel, iterations = 2) img3 = cv2.erode(img3, kernel, iterations = 2) return img3