Python cv2.MORPH_CLOSE Examples
The following are 30
code examples of cv2.MORPH_CLOSE().
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: plate_locate.py From EasyPR-python with Apache License 2.0 | 8 votes |
def sobelOperT(self, img, blursize, morphW, morphH): ''' No different with sobelOper ? ''' blur = cv2.GaussianBlur(img, (blursize, blursize), 0, 0, cv2.BORDER_DEFAULT) if len(blur.shape) == 3: gray = cv2.cvtColor(blur, cv2.COLOR_RGB2GRAY) else: gray = blur x = cv2.Sobel(gray, cv2.CV_16S, 1, 0, 3) absX = cv2.convertScaleAbs(x) grad = cv2.addWeighted(absX, 1, 0, 0, 0) _, threshold = cv2.threshold(grad, 0, 255, cv2.THRESH_OTSU + cv2.THRESH_BINARY) element = cv2.getStructuringElement(cv2.MORPH_RECT, (morphW, morphH)) threshold = cv2.morphologyEx(threshold, cv2.MORPH_CLOSE, element) return threshold
Example #2
Source File: vnet3d_train_predict.py From LiTS---Liver-Tumor-Segmentation-Challenge with MIT License | 7 votes |
def predict0(): Vnet3d = Vnet3dModule(256, 256, 64, inference=True, model_path="model\\Vnet3dModule.pd") for filenumber in range(30): batch_xs = np.zeros(shape=(64, 256, 256)) for index in range(64): imgs = cv2.imread( "D:\Data\PROMISE2012\Vnet3d_data\\test\image\\" + str(filenumber) + "\\" + str(index) + ".bmp", 0) batch_xs[index, :, :] = imgs[128:384, 128:384] predictvalue = Vnet3d.prediction(batch_xs) for index in range(64): result = np.zeros(shape=(512, 512), dtype=np.uint8) result[128:384, 128:384] = predictvalue[index] kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5)) result = cv2.morphologyEx(result, cv2.MORPH_CLOSE, kernel) cv2.imwrite( "D:\Data\PROMISE2012\Vnet3d_data\\test\image\\" + str(filenumber) + "\\" + str(index) + "mask.bmp", result)
Example #3
Source File: util.py From DeepFloorplan with GNU General Public License v3.0 | 6 votes |
def fill_break_line(cw_mask): broken_line_h = np.array([[0,0,0,0,0], [0,0,0,0,0], [1,0,0,0,1], [0,0,0,0,0], [0,0,0,0,0]], dtype=np.uint8) broken_line_h2 = np.array([[0,0,0,0,0], [0,0,0,0,0], [1,1,0,1,1], [0,0,0,0,0], [0,0,0,0,0]], dtype=np.uint8) broken_line_v = np.transpose(broken_line_h) broken_line_v2 = np.transpose(broken_line_h2) cw_mask = cv2.morphologyEx(cw_mask, cv2.MORPH_CLOSE, broken_line_h) cw_mask = cv2.morphologyEx(cw_mask, cv2.MORPH_CLOSE, broken_line_v) cw_mask = cv2.morphologyEx(cw_mask, cv2.MORPH_CLOSE, broken_line_h2) cw_mask = cv2.morphologyEx(cw_mask, cv2.MORPH_CLOSE, broken_line_v2) return cw_mask
Example #4
Source File: functions.py From bot with MIT License | 6 votes |
def get_target_centers(img): # Hide buff line # img[0:70, 0:500] = (0, 0, 0) # Hide your name in first camera position (default) img[210:230, 350:440] = (0, 0, 0) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # cv2.imwrite('1_gray_img.png', gray) # Find only white text ret, threshold1 = cv2.threshold(gray, 252, 255, cv2.THRESH_BINARY) # cv2.imwrite('2_threshold1_img.png', threshold1) # Morphological transformation kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (50, 5)) closed = cv2.morphologyEx(threshold1, cv2.MORPH_CLOSE, kernel) # cv2.imwrite('3_morphologyEx_img.png', closed) closed = cv2.erode(closed, kernel, iterations=1) # cv2.imwrite('4_erode_img.png', closed) closed = cv2.dilate(closed, kernel, iterations=1) # cv2.imwrite('5_dilate_img.png', closed) (_, centers, hierarchy) = cv2.findContours(closed, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) return centers
Example #5
Source File: vnet3d_train_predict.py From VNet3D with MIT License | 6 votes |
def predict0(): Vnet3d = Vnet3dModule(256, 256, 64, inference=True, model_path="model\\Vnet3dModule.pd") for filenumber in range(30): batch_xs = np.zeros(shape=(64, 256, 256)) for index in range(64): imgs = cv2.imread( "D:\Data\PROMISE2012\Vnet3d_data\\test\image\\" + str(filenumber) + "\\" + str(index) + ".bmp", 0) batch_xs[index, :, :] = imgs[128:384, 128:384] predictvalue = Vnet3d.prediction(batch_xs) for index in range(64): result = np.zeros(shape=(512, 512), dtype=np.uint8) result[128:384, 128:384] = predictvalue[index] kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5)) result = cv2.morphologyEx(result, cv2.MORPH_CLOSE, kernel) cv2.imwrite( "D:\Data\PROMISE2012\Vnet3d_data\\test\image\\" + str(filenumber) + "\\" + str(index) + "mask.bmp", result)
Example #6
Source File: lanenet_postprocess.py From lanenet-enet-hnet with Apache License 2.0 | 6 votes |
def _morphological_process(image, kernel_size=5): """ :param image: :param kernel_size: :return: """ if image.dtype is not np.uint8: image = np.array(image, np.uint8) if len(image.shape) == 3: image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) kernel = cv2.getStructuringElement(shape=cv2.MORPH_ELLIPSE, ksize=(kernel_size, kernel_size)) # close operation fille hole closing = cv2.morphologyEx(image, cv2.MORPH_CLOSE, kernel, iterations=1) return closing
Example #7
Source File: cvutils.py From 1ZLAB_PyEspCar with GNU General Public License v3.0 | 6 votes |
def backprojection(target, roihist): '''图像预处理''' hsvt = cv2.cvtColor(target,cv2.COLOR_BGR2HSV) dst = cv2.calcBackProject([hsvt],[0,1],roihist,[0,180,0,256],1) # Now convolute with circular disc disc = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(7,7)) cv2.filter2D(dst,-1,disc,dst) # threshold and binary AND ret,binary = cv2.threshold(dst,80,255,0) # 创建 核 kernel = np.ones((5,5), np.uint8) iter_time = 1 # 闭运算 binary = cv2.morphologyEx(binary, cv2.MORPH_CLOSE, kernel,iterations=iter_time) thresh = cv2.merge((binary,binary,binary)) target_filter = cv2.bitwise_and(target,thresh) return binary, target_filter
Example #8
Source File: segscanner.py From Map-A-Droid with GNU General Public License v3.0 | 6 votes |
def detectLevel(self, raidpic, hash, raidNo, radius): foundlvl = None lvl = None log.info('[Crop: ' + str(raidNo) + ' (' + str(self.uniqueHash) +') ] ' + 'Scanning Level') height, width, channel = raidpic.shape raidlevel = raidpic[int(round(radius*2*0.03)+(2*radius)+(radius*2*0.43)):int(round(radius*2*0.03)+(2*radius)+(radius*2*0.68)), 0:width] raidlevel = cv2.resize(raidlevel, (0,0), fx=0.5, fy=0.5) imgray = cv2.cvtColor(raidlevel, cv2.COLOR_BGR2GRAY) imgray = cv2.GaussianBlur(imgray, (9, 9), 2) #kernel = np.ones((5,5),np.uint8) #imgray = cv2.morphologyEx(imgray, cv2.MORPH_CLOSE, kernel) ret, thresh = cv2.threshold(imgray, 220, 255,0) (_, contours, _) = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) lvl = len(contours)-1 if lvl >=1 and lvl <=5: log.info('[Crop: ' + str(raidNo) + ' (' + str(self.uniqueHash) +') ] ' + 'detectLevel: found level %s' % str(lvl)) return lvl log.info('[Crop: ' + str(raidNo) + ' (' + str(self.uniqueHash) +') ] ' + 'detectLevel: could not find level') return None
Example #9
Source File: plate_locate.py From EasyPR-python with Apache License 2.0 | 6 votes |
def colorSearch(self, src, color, out_rect): """ :param src: :param color: :param out_rect: minAreaRect :return: binary """ color_morph_width = 10 color_morph_height = 2 match_gray = colorMatch(src, color, False) _, src_threshold = cv2.threshold(match_gray, 0, 255, cv2.THRESH_OTSU + cv2.THRESH_BINARY) element = cv2.getStructuringElement(cv2.MORPH_RECT, (color_morph_width, color_morph_height)) src_threshold = cv2.morphologyEx(src_threshold, cv2.MORPH_CLOSE, element) out = src_threshold.copy() _, contours, _ = cv2.findContours(src_threshold, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) for cnt in contours: mr = cv2.minAreaRect(cnt) if self.verifySizes(mr): out_rect.append(mr) return out
Example #10
Source File: getBlobTrajectories.py From tierpsy-tracker with MIT License | 6 votes |
def getBlobContours(ROI_image, thresh, strel_size=(5, 5), is_light_background=True, analysis_type="WORM", thresh_block_size=15): ROI_image = _remove_corner_blobs(ROI_image) ROI_mask, thresh = _get_blob_mask(ROI_image, thresh, thresh_block_size, is_light_background, analysis_type) # clean it using morphological closing - make this optional by setting strel_size to 0 if np.all(strel_size): strel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, strel_size) ROI_mask = cv2.morphologyEx(ROI_mask, cv2.MORPH_CLOSE, strel) # get worms, assuming each contour in the ROI is a worm ROI_worms, hierarchy = cv2.findContours(ROI_mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)[-2:] return ROI_worms, hierarchy
Example #11
Source File: getBlobTrajectories.py From tierpsy-tracker with MIT License | 6 votes |
def getBlobsSimple(in_data, blob_params): frame_number, image = in_data min_area, worm_bw_thresh_factor, strel_size = blob_params img_m = cv2.medianBlur(image, 3) valid_pix = img_m[img_m>0] if len(valid_pix) == 0: return [] th = _thresh_bw(valid_pix)*worm_bw_thresh_factor _, bw = cv2.threshold(img_m, th,255,cv2.THRESH_BINARY) if np.all(strel_size): strel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, strel_size) bw = cv2.morphologyEx(bw, cv2.MORPH_CLOSE, strel) cnts, hierarchy = cv2.findContours(bw, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)[-2:] blobs_data = _cnt_to_props(cnts, frame_number, th, min_area) return blobs_data
Example #12
Source File: L2_track_target.py From SCUTTLE with MIT License | 6 votes |
def colorTarget(color_range=((0, 0, 0), (255, 255, 255))): image = cam.newImage() if filter == 'RGB': frame_to_thresh = image.copy() else: frame_to_thresh = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) # convert image to hsv colorspace RENAME THIS TO IMAGE_HSV thresh = cv2.inRange(frame_to_thresh, color_range[0], color_range[1]) # apply a blur function kernel = np.ones((5, 5), np.uint8) mask = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel) # Apply blur mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel) # Apply blur 2nd iteration cnts = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[-2] # generates number of contiguous "1" pixels if len(cnts) > 0: # begin processing if there are "1" pixels discovered c = max(cnts, key=cv2.contourArea) # return the largest target area ((x, y), radius) = cv2.minEnclosingCircle(c) return np.array([round(x, 1), round(y, 1), round(radius, 1)]) else: return np.array([None, None, 0])
Example #13
Source File: TableRecognition.py From OTR with GNU General Public License v3.0 | 6 votes |
def compute_missing_cells_mask(self, close_ksize=5): """ Compute a binary img-scale mask, """ # Create white binary img icellmask = np.full((self.imgshape[0], self.imgshape[1]), 255, np.uint8) # Mask everything except table, as defined by corner nodes (not the larger super-node!) cv2.fillConvexPoly(icellmask, self.table_corners, 0) # Now draw all cell hulls without text, but don't downsize them() self.draw_all_cell_hulls(icellmask, None, xscale=1.1, yscale=1.1) # Morphology ops with large kernel to remove small intercell speckles # NOTE: CLOSE => remove black holes icellmask = cv2.morphologyEx(icellmask, cv2.MORPH_CLOSE, np.ones((close_ksize, close_ksize), np.uint8)) return icellmask
Example #14
Source File: utils.py From segmentation-driven-pose with GNU General Public License v3.0 | 5 votes |
def visualize_predictions(predPose, image, vertex, intrinsics): height, width, _ = image.shape confImg = np.copy(image) maskImg = np.zeros((height,width), np.uint8) contourImg = np.copy(image) for p in predPose: outid, rt, conf, puv, pxyz, opoint, clsid, partid, cx, cy, layerId = p # show surface reprojection maskImg.fill(0) if True: # if False: vp = vertices_reprojection(vertex[outid][:], rt, intrinsics) for p in vp: if p[0] != p[0] or p[1] != p[1]: # check nan continue maskImg = cv2.circle(maskImg, (int(p[0]), int(p[1])), 1, 255, -1) confImg = cv2.circle(confImg, (int(p[0]), int(p[1])), 1, get_class_colors(outid), -1, cv2.LINE_AA) # fill the holes kernel = np.ones((5,5), np.uint8) maskImg = cv2.morphologyEx(maskImg, cv2.MORPH_CLOSE, kernel) # find contour contours, _ = cv2.findContours(maskImg, mode=cv2.RETR_EXTERNAL, method=cv2.CHAIN_APPROX_SIMPLE) contourImg = cv2.drawContours(contourImg, contours, -1, (255, 255, 255), 4, cv2.LINE_AA) # border contourImg = cv2.drawContours(contourImg, contours, -1, get_class_colors(outid), 2, cv2.LINE_AA) return contourImg
Example #15
Source File: create_template.py From aggregation with Apache License 2.0 | 5 votes |
def blend_images(images,to_exclude = []): # go through at most 100 images in the given directory image_count = 0 image_so_far = None for f_name in images: if f_name in to_exclude: continue if f_name.endswith(".JPG"): # if f_name in ["Bear-AG-29-1940-0022.JPG","Bear-AG-29-1940-0342.JPG"]: # continue image = cv2.imread(aligned_images_dir+f_name,0) # _,image = cv2.threshold(image,205,255,cv2.THRESH_BINARY) # image = 255-image if image_so_far is None: image_so_far = image image_count += 1 else: image_count += 1 beta = 1/float(image_count) alpha = 1. - beta image_so_far = cv2.addWeighted(image_so_far,alpha,image,beta,0) # image_so_far = np.asarray([image_so_far, image]).max(0) # image_so_far = image_so_far & image # kernel = np.ones((3,3),np.uint8) # closing = cv2.morphologyEx(, cv2.MORPH_CLOSE, kernel) ret,thresh1 = cv2.threshold(image_so_far,180,255,cv2.THRESH_BINARY) thresh1 = 255-thresh1 return thresh1
Example #16
Source File: image.py From soccerontable with BSD 2-Clause "Simplified" License | 5 votes |
def robust_edge_detection(img): # Find edges kernel_size = 5 gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) blur_gray = cv2.GaussianBlur(gray, (kernel_size, kernel_size), 0) # io.imagesc(blur_gray) edges = cv2.Canny((blur_gray * 255).astype(np.uint8), 10, 200, apertureSize=5) # io.imagesc(edges) lsd = cv2.createLineSegmentDetector(0) lines = lsd.detect(edges)[0] # Position 0 of the returned tuple are the detected lines long_lines = [] for j in range(lines.shape[0]): x1, y1, x2, y2 = lines[j, 0, :] if np.linalg.norm(np.array([x1, y1]) - np.array([x2, y2])) > 50: long_lines.append(lines[j, :, :]) lines = np.array(long_lines) edges = 1 * np.ones_like(img) drawn_img = lsd.drawSegments(edges, lines) edges = (drawn_img[:, :, 2] > 1).astype(np.float32) kernel = np.ones((7, 7), np.uint8) edges = cv2.morphologyEx(edges, cv2.MORPH_CLOSE, kernel) kernel = np.ones((3, 3), np.uint8) edges = cv2.morphologyEx(edges, cv2.MORPH_OPEN, kernel) return edges
Example #17
Source File: EdgeBased.py From ImageProcessingProjects with MIT License | 5 votes |
def morph_close(input, kernel): morph = cv2.morphologyEx(input, cv2.MORPH_CLOSE, kernel) morph = cv2.GaussianBlur(morph, (3, 3), 0) show_image(input, morph, "Morphology") return morph.astype(np.uint8)
Example #18
Source File: zebrafishAnalysis.py From tierpsy-tracker with MIT License | 5 votes |
def cleanMask(mask): # Apply closing to smooth the edges of the mask kernel_size = 5 kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (kernel_size, kernel_size)) # Circle mask_closing = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel) return mask_closing
Example #19
Source File: geometries.py From deeposlandia with MIT License | 5 votes |
def extract_geometry_vertices(mask, structure_size=(10, 10), approx_eps=0.01): """Extract polygon vertices from a boolean mask with the help of OpenCV utilities, as a numpy array Parameters ---------- mask : numpy.array Image mask where to find polygons structure_size : tuple Size of the cv2 structuring artefact, as a tuple of horizontal and vertical pixels approx_eps : double Approximation coefficient, aiming at building more simplified polygons (this coefficient lies between 0 and 1, the larger the value is, the more important the approximation is) Returns ------- numpy.array List of polygons contained in the mask, identified by their vertices """ structure = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, structure_size) denoised = cv2.morphologyEx(mask, cv2.MORPH_OPEN, structure) grown = cv2.morphologyEx(denoised, cv2.MORPH_CLOSE, structure) _, contours, hierarchy = cv2.findContours( grown, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE ) polygons = [ cv2.approxPolyDP( c, epsilon=approx_eps * cv2.arcLength(c, closed=True), closed=True ) for c in contours ] return polygons, hierarchy
Example #20
Source File: detector.py From TextDetector with GNU General Public License v3.0 | 5 votes |
def image2label(self, img, coor, psize, ssize, para0, para1, target = 'foreground'): ''' image2label(img, coor, psize, ssize, para0, para1) generate label for corresponding patches labels are corresonding to patches get from self._image2feat img: 2D_numpy_array Return 2D_numpy_array''' (ind1, ind2) = map(lambda var:range(0, int(var)-psize, ssize), img.shape) label = numpy.zeros((len(ind1), len(ind2))) for bb in coor: # Comparing patch size: if not self.width_height_comp(bb, psize, para1): continue # Comparing patch location (overlapping): for p, i in enumerate(ind1): for q, j in enumerate(ind2): if self.area_comp(bb, [i, j, psize, psize], para0): label[p, q] = 1 if target == 'foreground': return label if target == 'whitespace': kernel = numpy.ones((3, 3), dtype = numpy.float32) labelb = cv2.dilate(label, kernel, iterations = 1) - label return labelb if target == 'whitespace_strict': kernel = numpy.ones((3, 1), dtype = numpy.float32) labelb = cv2.morphologyEx(label, cv2.MORPH_CLOSE, kernel) - label return labelb else: raise Exception('Target '+target+' is not found!') return
Example #21
Source File: active_weather.py From aggregation with Apache License 2.0 | 5 votes |
def __sobel_image__(self,image,horizontal): """ apply the sobel operator to a given image on either the vertical or horizontal axis basically copied from http://stackoverflow.com/questions/10196198/how-to-remove-convexity-defects-in-a-sudoku-square :param horizontal: :return: """ if horizontal: dy = cv2.Sobel(image,cv2.CV_16S,0,2) dy = cv2.convertScaleAbs(dy) cv2.normalize(dy,dy,0,255,cv2.NORM_MINMAX) ret,close = cv2.threshold(dy,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU) kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(10,2)) else: dx = cv2.Sobel(image,cv2.CV_16S,2,0) dx = cv2.convertScaleAbs(dx) cv2.normalize(dx,dx,0,255,cv2.NORM_MINMAX) ret,close = cv2.threshold(dx,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU) kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(2,10)) close = cv2.morphologyEx(close,cv2.MORPH_CLOSE,kernel) return close
Example #22
Source File: TextDetect.py From text-detection with BSD 3-Clause "New" or "Revised" License | 5 votes |
def text_detect(img,ele_size=(8,2)): # if len(img.shape)==3: img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) img_sobel = cv2.Sobel(img,cv2.CV_8U,1,0)#same as default,None,3,1,0,cv2.BORDER_DEFAULT) img_threshold = cv2.threshold(img_sobel,0,255,cv2.THRESH_OTSU+cv2.THRESH_BINARY) element = cv2.getStructuringElement(cv2.MORPH_RECT,ele_size) img_threshold = cv2.morphologyEx(img_threshold[1],cv2.MORPH_CLOSE,element) res = cv2.findContours(img_threshold, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) if cv2.__version__.split(".")[0] == '3': _, contours, hierarchy = res else: contours, hierarchy = res Rect = [cv2.boundingRect(i) for i in contours if i.shape[0]>100] RectP = [(int(i[0]-i[2]*0.08),int(i[1]-i[3]*0.08),int(i[0]+i[2]*1.1),int(i[1]+i[3]*1.1)) for i in Rect] return RectP
Example #23
Source File: getSignature.py From signature_extractor with MIT License | 5 votes |
def getSignatureFromPage(img): imgSize = np.shape(img) gImg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # The values for edge detection can be approximated using Otsu's Algorithm # Reference - http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.402.5899&rep=rep1&type=pdf threshold, _ = cv2.threshold(src = gImg, thresh = 0, maxval = 255, type = cv2.THRESH_BINARY | cv2.THRESH_OTSU) cannyImg = cv2.Canny(image = gImg, threshold1 = 0.5 * threshold, threshold2 = threshold) # Close the image to fill blank spots so blocks of text that are close together (like the signature) are easier to detect # Signature usually are wider and shorter so the strcturing elements used for closing will have this ratio kernel = cv2.getStructuringElement(shape = cv2.MORPH_RECT, ksize = (30, 1)) cannyImg = cv2.morphologyEx(src = cannyImg, op = cv2.MORPH_CLOSE, kernel = kernel) # findContours is a distructive function so the image pased is only a copy _, contours, _ = cv2.findContours(image = cannyImg.copy(), mode = cv2.RETR_TREE, method = cv2.CHAIN_APPROX_SIMPLE) maxRect = Rect(0, 0, 0, 0) for contour in contours: x, y, w, h = cv2.boundingRect(points = contour) currentArea = w * h if currentArea > maxRect.getArea(): maxRect.set(x, y, w, h) # Increase the bounding box to get a better view of the signature maxRect.addPadding(imgSize = imgSize, padding = 10) return img[maxRect.y : maxRect.y + maxRect.h, maxRect.x : maxRect.x + maxRect.w]
Example #24
Source File: main.py From speed-detector with MIT License | 5 votes |
def filter_mask (mask): # I want some pretty drastic closing kernel_close = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (20, 20)) kernel_open = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (8, 8)) kernel_dilate = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5)) # Remove noise opening = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel_open) # Close holes within contours closing = cv2.morphologyEx(opening, cv2.MORPH_CLOSE, kernel_close) # Merge adjacent blobs dilation = cv2.dilate(closing, kernel_dilate, iterations = 2) return dilation
Example #25
Source File: motion_detection.py From pynvr with BSD 3-Clause "New" or "Revised" License | 5 votes |
def motionDetected(self, new_frame): frame = self.preprocessInputFrame(new_frame) gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY) gray = cv.GaussianBlur(gray, (21, 21), 0) if self.prevFrame is None: self.prevFrame = gray return False frameDiff = cv.absdiff(gray, self.prevFrame) # kernel = np.ones((5, 5), np.uint8) opening = cv.morphologyEx(frameDiff, cv.MORPH_OPEN, None) # noqa closing = cv.morphologyEx(frameDiff, cv.MORPH_CLOSE, None) # noqa ret1, th1 = cv.threshold(frameDiff, 10, 255, cv.THRESH_BINARY) height = np.size(th1, 0) width = np.size(th1, 1) nb = cv.countNonZero(th1) avg = (nb * 100) / (height * width) # Calculate the average of black pixel in the image self.prevFrame = gray # cv.DrawContours(currentframe, self.currentcontours, (0, 0, 255), (0, 255, 0), 1, 2, cv.CV_FILLED) # cv.imshow("frame", current_frame) ret = avg > self.threshold # If over the ceiling trigger the alarm if ret: self.updateMotionDetectionDts() return ret
Example #26
Source File: main.py From sbb_textline_detection with Apache License 2.0 | 5 votes |
def return_rotated_contours(self,slope,img_patch): dst = self.rotate_image(img_patch, slope) dst = dst.astype(np.uint8) dst = dst[:, :, 0] dst[dst != 0] = 1 imgray = cv2.cvtColor(dst, cv2.COLOR_BGR2GRAY) _, thresh = cv2.threshold(imgray, 0, 255, 0) thresh = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel) thresh = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel) contours, _ = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) return contours
Example #27
Source File: main.py From sbb_textline_detection with Apache License 2.0 | 5 votes |
def get_text_region_contours_and_boxes(self, image): rgb_class_of_texts = (1, 1, 1) mask_texts = np.all(image == rgb_class_of_texts, axis=-1) image = np.repeat(mask_texts[:, :, np.newaxis], 3, axis=2) * 255 image = image.astype(np.uint8) image = cv2.morphologyEx(image, cv2.MORPH_OPEN, self.kernel) image = cv2.morphologyEx(image, cv2.MORPH_CLOSE, self.kernel) imgray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) _, thresh = cv2.threshold(imgray, 0, 255, 0) contours, hierarchy = cv2.findContours(thresh.copy(), cv2.cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) main_contours = self.filter_contours_area_of_image(thresh, contours, hierarchy, max_area=1, min_area=0.00001) self.boxes = [] for jj in range(len(main_contours)): x, y, w, h = cv2.boundingRect(main_contours[jj]) self.boxes.append([x, y, w, h]) return main_contours
Example #28
Source File: cells.py From SnapSudoku with MIT License | 5 votes |
def clean(self, cell): contour = self.helpers.largestContour(cell.copy()) x, y, w, h = cv2.boundingRect(contour) cell = self.helpers.make_it_square(cell[y:y + h, x:x + w], 28) kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (2, 2)) cell = cv2.morphologyEx(cell, cv2.MORPH_CLOSE, kernel) cell = 255 * (cell / 130) return cell
Example #29
Source File: sudokuExtractor.py From SnapSudoku with MIT License | 5 votes |
def preprocess(self): print 'Preprocessing...', self.image = cv2.cvtColor(self.image, cv2.COLOR_BGR2GRAY) self.image = self.helpers.thresholdify(self.image) kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (2, 2)) self.image = cv2.morphologyEx(self.image, cv2.MORPH_CLOSE, kernel) print 'done.'
Example #30
Source File: findCard.py From BusinessCardReader with MIT License | 5 votes |
def processCard(image_o,scale): #Scale image down so functions work better and turns to greyscale image = cv2.resize(image_o, (image_o.shape[1]/scale, image_o.shape[0]/scale)) #Processing image to improve reliability of finding corners image = cv2.bilateralFilter(image, 5, 150, 50) imgray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) kernel = np.ones((5,5),np.uint8) imgray = cv2.morphologyEx(imgray,cv2.MORPH_OPEN,kernel) imgray = cv2.morphologyEx(imgray,cv2.MORPH_CLOSE,kernel) imgray = cv2.Canny(imgray,40,50) """ Ploting of image before and after processing plt.subplot(121) plt.imshow(cv2.cvtColor(image_o, cv2.COLOR_BGR2RGB)) plt.title("Original") plt.axis("off") plt.subplot(122) plt.axis("off") plt.title("After Canny Edge") plt.imshow(imgray) plt.gray() plt.show() """ return imgray #Takes edited picture and find corners. Returns transformation of original image croped and transformed