Python cv2.THRESH_BINARY_INV Examples
The following are 30
code examples of cv2.THRESH_BINARY_INV().
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: preprocessor.py From signature-recognition with MIT License | 7 votes |
def prepare(input): # preprocessing the image input clean = cv2.fastNlMeansDenoising(input) ret, tresh = cv2.threshold(clean, 127, 1, cv2.THRESH_BINARY_INV) img = crop(tresh) # 40x10 image as a flatten array flatten_img = cv2.resize(img, (40, 10), interpolation=cv2.INTER_AREA).flatten() # resize to 400x100 resized = cv2.resize(img, (400, 100), interpolation=cv2.INTER_AREA) columns = np.sum(resized, axis=0) # sum of all columns lines = np.sum(resized, axis=1) # sum of all lines h, w = img.shape aspect = w / h return [*flatten_img, *columns, *lines, aspect]
Example #2
Source File: parse_image_segments.py From geosolver with Apache License 2.0 | 6 votes |
def _get_image_segments(image, kernel, block_size, c): binarized_image = cv2.adaptiveThreshold(image, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, block_size, c) labeled, nr_objects = ndimage.label(binarized_image, structure=kernel) slices = ndimage.find_objects(labeled) image_segments = {} for idx, slice_ in enumerate(slices): offset = instantiators['point'](slice_[1].start, slice_[0].start) sliced_image = image[slice_] boolean_array = labeled[slice_] == (idx+1) segmented_image = 255- (255-sliced_image) * boolean_array pixels = set(instantiators['point'](x, y) for x, y in np.transpose(np.nonzero(np.transpose(boolean_array)))) binarized_segmented_image = cv2.adaptiveThreshold(segmented_image, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, block_size, c) image_segment = ImageSegment(segmented_image, sliced_image, binarized_segmented_image, pixels, offset, idx) image_segments[idx] = image_segment return image_segments
Example #3
Source File: MeterReader.py From Pointer-meter-identification-and-reading with MIT License | 6 votes |
def binary_image(self,img): # 应用5种不同的阈值方法 # ret, th1 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY) # ret, th2 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY_INV) # ret, th3 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_TRUNC) # ret, th4 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_TOZERO) # ret, th5 = cv2.threshold(img_gray, 127, 255, cv2.THRESH_TOZERO_INV) # titles = ['Gray', 'BINARY', 'BINARY_INV', 'TRUNC', 'TOZERO', 'TOZERO_INV'] # images = [img_gray, th1, th2, th3, th4, th5] # 使用Matplotlib显示 # for i in range(6): # plt.subplot(2, 3, i + 1) # plt.imshow(images[i], 'gray') # plt.title(titles[i], fontsize=8) # plt.xticks([]), plt.yticks([]) # 隐藏坐标轴 # plt.show() # Otsu阈值 _, th = cv2.threshold(img, 0, 255, cv2.THRESH_TOZERO + cv2.THRESH_OTSU) cv2.imshow('Binary image', th) return th # 边缘检测
Example #4
Source File: plate_locate.py From EasyPR-python with Apache License 2.0 | 6 votes |
def DeleteNotArea(self, in_img): input_gray = cv2.cvtColor(in_img, cv2.COLOR_BGR2GRAY) w = in_img.shape[1] h = in_img.shape[0] tmp_mat = in_img[int(h * 0.1):int(h * 0.85), int(w * 0.15):int(w * 0.85)] plateType = getPlateType(tmp_mat, True) if plateType == 'BLUE': tmp = in_img[int(h * 0.1):int(h * 0.85), int(w * 0.15):int(w * 0.85)] threadHoldV = ThresholdOtsu(tmp) _, img_threshold = cv2.threshold(input_gray, threadHoldV, 255, cv2.THRESH_BINARY) elif plateType == 'YELLOW': tmp = in_img[int(h * 0.1):int(h * 0.85), int(w * 0.15):int(w * 0.85)] threadHoldV = ThresholdOtsu(tmp) _, img_threshold = cv2.threshold(input_gray, threadHoldV, 255, cv2.THRESH_BINARY_INV) else: _, img_threshold = cv2.threshold(input_gray, 10, 255, cv2.THRESH_OTSU + cv2.THRESH_BINARY) top, bottom = clearLiuDing(img_threshold, 0, img_threshold.shape[0] - 1) posLeft, posRight, flag = bFindLeftRightBound1(img_threshold) if flag: in_img = in_img[int(top):int(bottom), int(posLeft):int(w)]
Example #5
Source File: image.py From uiautomator2 with MIT License | 6 votes |
def compare_ssim_debug(image_a, image_b, color=(255, 0, 0)): """ Args: image_a, image_b: opencv image or PIL.Image color: (r, g, b) eg: (255, 0, 0) for red Refs: https://www.pyimagesearch.com/2017/06/19/image-difference-with-opencv-and-python/ """ ima, imb = conv2cv(image_a), conv2cv(image_b) score, diff = compare_ssim(ima, imb, full=True) diff = (diff * 255).astype('uint8') _, thresh = cv2.threshold(diff, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU) cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) cnts = imutils.grab_contours(cnts) cv2color = tuple(reversed(color)) im = ima.copy() for c in cnts: x, y, w, h = cv2.boundingRect(c) cv2.rectangle(im, (x, y), (x+w, y+h), cv2color, 2) # todo: show image cv2pil(im).show() return im
Example #6
Source File: 05_cartoonizing.py From OpenCV-3-x-with-Python-By-Example with MIT License | 6 votes |
def cartoonize_image(img, ksize=5, sketch_mode=False): num_repetitions, sigma_color, sigma_space, ds_factor = 10, 5, 7, 4 # Convert image to grayscale img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # Apply median filter to the grayscale image img_gray = cv2.medianBlur(img_gray, 7) # Detect edges in the image and threshold it edges = cv2.Laplacian(img_gray, cv2.CV_8U, ksize=ksize) ret, mask = cv2.threshold(edges, 100, 255, cv2.THRESH_BINARY_INV) # 'mask' is the sketch of the image if sketch_mode: return cv2.cvtColor(mask, cv2.COLOR_GRAY2BGR) # Resize the image to a smaller size for faster computation img_small = cv2.resize(img, None, fx=1.0/ds_factor, fy=1.0/ds_factor, interpolation=cv2.INTER_AREA) # Apply bilateral filter the image multiple times for i in range(num_repetitions): img_small = cv2.bilateralFilter(img_small, ksize, sigma_color, sigma_space) img_output = cv2.resize(img_small, None, fx=ds_factor, fy=ds_factor, interpolation=cv2.INTER_LINEAR) dst = np.zeros(img_gray.shape) # Add the thick boundary lines to the image using 'AND' operator dst = cv2.bitwise_and(img_output, img_output, mask=mask) return dst
Example #7
Source File: mnist_calc.py From ncappzoo with MIT License | 6 votes |
def _do_ncs_infer(self, operand, img_label=None): """Detect and classify digits. If you provide an img_label the cropped digit image will be written to file.""" # Get a list of rectangles for objects detected in this operand's box op_img = self._canvas[operand.top: operand.bottom, operand.left: operand.right] gray_img = cv2.cvtColor(op_img, cv2.COLOR_BGR2GRAY) _, binary_img = cv2.threshold(gray_img, 127, 255, cv2.THRESH_BINARY_INV) contours, hierarchy = cv2.findContours(binary_img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) digits = [cv2.boundingRect(contour) for contour in contours] if len(digits) > 0: x, y, w, h = digits[0] digit_img = self._canvas[operand.top + y: operand.top + y + h, operand.left + x: operand.left + x + w] # Write the cropped image to file if a label was provided if img_label: cv2.imwrite(img_label + ".png", digit_img) # Classify the digit and return the most probable result value, probability = self._net_processor.do_async_inference(digit_img)[0] print("value: " + str(value) + " probability: " + str(probability)) return value, probability else: return None, None
Example #8
Source File: util.py From CrowdFlow with GNU General Public License v3.0 | 6 votes |
def compute_error(flow, gt_flow, invalid_mask): mag_flow = cv2.sqrt(gt_flow[:, :, 0] * gt_flow[:, :, 0] + gt_flow[:, :, 1] * gt_flow[:, :, 1]) ret, mask_to_large = cv2.threshold(src=mag_flow, thresh=900, maxval=1, type=cv2.THRESH_BINARY_INV) total_inp_mask = invalid_mask[:, :, 0] + invalid_mask[:, :, 1] + invalid_mask[:, :, 2] ret, fg_mask = cv2.threshold(src=invalid_mask[:, :, 1], thresh=0.5, maxval=1, type=cv2.THRESH_BINARY) ret, total_mask = cv2.threshold(src=total_inp_mask, thresh=0.5, maxval=1, type=cv2.THRESH_BINARY) #mask_to_large = np.ones(fg_mask.shape) bg_mask = total_mask - fg_mask ee_base = computeEE(flow, gt_flow) result = dict() result["FG"] = computer_errors(ee_base, fg_mask * mask_to_large) result["BG"] = computer_errors(ee_base, bg_mask * mask_to_large) result["Total"] = computer_errors(ee_base, total_mask * mask_to_large) return result
Example #9
Source File: 1b-est-gyro-rates.py From ImageAnalysis with MIT License | 6 votes |
def motion1(new_frame, base): motion = cv2.absdiff(base, new_frame) gray = cv2.cvtColor(motion, cv2.COLOR_BGR2GRAY) cv2.imshow('motion', gray) ret, motion_mask = cv2.threshold(gray, 25, 255, cv2.THRESH_BINARY_INV) blendsize = (3,3) kernel = np.ones(blendsize,'uint8') motion_mask = cv2.erode(motion_mask, kernel) # lots motion_mask /= 1.1429 motion_mask += 16 # medium #motion_mask /= 1.333 #motion_mask += 32 # minimal #motion_mask /= 2 #motion_mask += 64 cv2.imshow('motion1', motion_mask) return motion_mask
Example #10
Source File: markers.py From Zozo-Measurer with GNU General Public License v3.0 | 6 votes |
def find_marker_ellipses(im): im_gray = cvtColor(im, COLOR_BGR2GRAY) im_blur = GaussianBlur(im_gray, (3, 3), 0) ret, th = threshold(im_blur, 0, 255, THRESH_BINARY_INV + THRESH_OTSU) imgEdge, contours, hierarchy = findContours(th, RETR_TREE, CHAIN_APPROX_NONE) points = [] origins = [] ellipses = [] id_point_candidates = [] small_point_candidates = [] for cnt in contours: if contour_sanity_check(cnt, im.shape[0], point_d=0.02): id_point_candidates.append(cnt) elif contour_sanity_check(cnt, im.shape[0], point_d=0.01): small_point_candidates.append(cnt) for cnt in id_point_candidates: x, y, w, h = boundingRect(cnt) ellipse = fitEllipse(cnt) points.append(im_gray[y:y + h, x:x + w]) origins.append((x, y)) ellipses.append(ellipse) return points, origins, ellipses
Example #11
Source File: OTSUThresholding.py From Finger-Detection-and-Tracking with BSD 2-Clause "Simplified" License | 6 votes |
def main(): threshold = 0 max_value = 255 image = cv2.imread("../data/7.1.08.tiff", 0) # when applying OTSU threshold, set threshold to 0. _, output1 = cv2.threshold(image, threshold, max_value, cv2.THRESH_BINARY + cv2.THRESH_OTSU) _, output2 = cv2.threshold(image, threshold, max_value, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU) _, output3 = cv2.threshold(image, threshold, max_value, cv2.THRESH_TOZERO + cv2.THRESH_OTSU) _, output4 = cv2.threshold(image, threshold, max_value, cv2.THRESH_TOZERO_INV + cv2.THRESH_OTSU) _, output5 = cv2.threshold(image, threshold, max_value, cv2.THRESH_TRUNC + cv2.THRESH_OTSU) images = [image, output1, output2, output3, output4, output5] titles = ["Orignals", "Binary", "Binary Inverse", "TOZERO", "TOZERO INV", "TRUNC"] for i in range(6): plt.subplot(3, 2, i + 1) plt.imshow(images[i], cmap='gray') plt.title(titles[i]) plt.show()
Example #12
Source File: 1a-est-gyro-rates.py From ImageAnalysis with MIT License | 6 votes |
def motion1(new_frame, base): motion = cv2.absdiff(base, new_frame) gray = cv2.cvtColor(motion, cv2.COLOR_BGR2GRAY) cv2.imshow('motion', gray) ret, motion_mask = cv2.threshold(gray, 25, 255, cv2.THRESH_BINARY_INV) blendsize = (3,3) kernel = np.ones(blendsize,'uint8') motion_mask = cv2.erode(motion_mask, kernel) # lots motion_mask /= 1.1429 motion_mask += 16 # medium #motion_mask /= 1.333 #motion_mask += 32 # minimal #motion_mask /= 2 #motion_mask += 64 cv2.imshow('motion1', motion_mask) return motion_mask
Example #13
Source File: extract_color.py From python-image-processing with MIT License | 6 votes |
def extract_color( src, h_th_low, h_th_up, s_th, v_th ): hsv = cv2.cvtColor(src, cv2.COLOR_BGR2HSV) h, s, v = cv2.split(hsv) if h_th_low > h_th_up: ret, h_dst_1 = cv2.threshold(h, h_th_low, 255, cv2.THRESH_BINARY) ret, h_dst_2 = cv2.threshold(h, h_th_up, 255, cv2.THRESH_BINARY_INV) dst = cv2.bitwise_or(h_dst_1, h_dst_2) else: ret, dst = cv2.threshold(h, h_th_low, 255, cv2.THRESH_TOZERO) ret, dst = cv2.threshold(dst, h_th_up, 255, cv2.THRESH_TOZERO_INV) ret, dst = cv2.threshold(dst, 0, 255, cv2.THRESH_BINARY) ret, s_dst = cv2.threshold(s, s_th, 255, cv2.THRESH_BINARY) ret, v_dst = cv2.threshold(v, v_th, 255, cv2.THRESH_BINARY) dst = cv2.bitwise_and(dst, s_dst) dst = cv2.bitwise_and(dst, v_dst) return dst
Example #14
Source File: 1a-est-gyro-rates.py From ImageAnalysis with MIT License | 6 votes |
def motion1(new_frame, base): motion = cv2.absdiff(base, new_frame) gray = cv2.cvtColor(motion, cv2.COLOR_BGR2GRAY) cv2.imshow('motion', gray) ret, motion_mask = cv2.threshold(gray, 25, 255, cv2.THRESH_BINARY_INV) blendsize = (3,3) kernel = np.ones(blendsize,'uint8') motion_mask = cv2.erode(motion_mask, kernel) # lots motion_mask /= 1.1429 motion_mask += 16 # medium #motion_mask /= 1.333 #motion_mask += 32 # minimal #motion_mask /= 2 #motion_mask += 64 cv2.imshow('motion1', motion_mask) return motion_mask
Example #15
Source File: cartoonizing.py From Mastering-OpenCV-4-with-Python with MIT License | 6 votes |
def sketch_image(img): """Sketches the image applying a laplacian operator to detect the edges""" # Convert to gray scale img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # Apply median filter img_gray = cv2.medianBlur(img_gray, 5) # Detect edges using cv2.Laplacian() edges = cv2.Laplacian(img_gray, cv2.CV_8U, ksize=5) # Threshold the edges image: ret, thresholded = cv2.threshold(edges, 70, 255, cv2.THRESH_BINARY_INV) return thresholded
Example #16
Source File: mainDetect.py From DE3-ROB1-CHESS with Creative Commons Attribution 4.0 International | 6 votes |
def processFile(self, img, debug=False): """ Converts input image to grayscale & applies adaptive thresholding. """ img = cv2.GaussianBlur(img,(5,5),0) # Convert to HSV hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # Convert to grayscale gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) # HSV Thresholding res,hsvThresh = cv2.threshold(hsv[:,:,0], 25, 250, cv2.THRESH_BINARY_INV) # Show adaptively thresholded image adaptiveThresh = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 115, 1) # Show both thresholded images # cv2.imshow("HSV Thresholded",hsvThresh) if debug: cv2.imshow("Adaptive Thresholding", adaptiveThresh) return img, adaptiveThresh
Example #17
Source File: GeetCodeRun.py From GeetChinese_crack with MIT License | 6 votes |
def run_vercode_boxdetect(ver_img, chineseimg_path): ver_img = ver_img.replace('\\', '/') image = cv2.imread(ver_img, cv2.IMREAD_GRAYSCALE) ret, image1 = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY_INV) box = FindImageBBox(image1) imagename = ver_img.split('/')[-1].split('.')[0] box_index = 0 vercode_box_info = [] cls_vercode_box_info=[] bbox = np.array([0,0,0,0]) for starx,endx in box: box_index = box_index +1 region = image[0:40,starx:endx] out_path = chineseimg_path+ imagename +'_'+str(box_index) + '.jpg' cv2.imwrite(out_path, region) vercode_box_info.append([out_path,bbox]) cls_vercode_box_info.append(vercode_box_info) return cls_vercode_box_info
Example #18
Source File: ch4.py From diagnose-heart with MIT License | 6 votes |
def process_data(): all_data = [] img_size = 256 contour_path= os.path.join(c.data_manual, 'manual_contours_ch4', 'contours') image_path = os.path.join(c.data_manual, 'manual_contours_ch4', 'images') for fn in [f for f in os.listdir(contour_path) if 'jpg' in f]: if not os.path.exists(os.path.join(image_path, fn)): continue img = cv2.imread(os.path.join(image_path, fn), 0) img = cv2.resize(img, (img_size,img_size)).reshape(1,1,img_size,img_size) label = cv2.imread(os.path.join(contour_path, fn), 0) label = cv2.resize(label, (img_size,img_size)) _,label = cv2.threshold(label, 127,255,cv2.THRESH_BINARY_INV) label = label.reshape(1,1,img_size,img_size)/255 all_data.append([img,label]) np.random.shuffle(all_data) all_imgs = np.concatenate([a[0] for a in all_data], axis=0) all_labels = np.concatenate([a[1] for a in all_data], axis=0) n = all_imgs.shape[0] destpath = os.path.join(c.data_intermediate, 'ch4_{}.hdf5'.format(img_size)) if os.path.exists(destpath): os.remove(destpath) u.save_hd5py({'images': all_imgs, 'labels': all_labels}, destpath, 5)
Example #19
Source File: functions.py From malayalam-character-recognition with MIT License | 6 votes |
def clean(img): """Process an image""" gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) (__, img_bw) = cv2.threshold(gray, 128, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU) ctrs, __ = cv2.findContours(img_bw.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # take largest contour ctr = sorted(ctrs, key=lambda ctr: (cv2.boundingRect(ctr)[2] * cv2.boundingRect(ctr)[3]), reverse=True)[0] # Get bounding box x, y, w, h = cv2.boundingRect(ctr) # Getting ROI roi = img_bw[y:y + h, x:x + w] return skeletize(crop(roi, IMAGE_SIZE))
Example #20
Source File: filter-table-pages.py From OTR with GNU General Public License v3.0 | 6 votes |
def hasTable(filename, min_fract_area=.2, min_cells=150): img = cv2.imread(filename, flags=cv2.IMREAD_COLOR) if img is None: raise ValueError("File {0} does not exist".format(filename)) imgGrey = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) imgThresh = cv2.threshold(imgGrey, 150, 255, cv2.THRESH_BINARY_INV)[1] imgThreshInv = cv2.threshold(imgGrey, 150, 255, cv2.THRESH_BINARY)[1] imgDil = cv2.dilate(imgThresh, np.ones((5, 5), np.uint8)) imgEro = cv2.erode(imgDil, np.ones((4, 4), np.uint8)) contour_analyzer = TableRecognition.ContourAnalyzer(imgDil) # 1st pass (black in algorithm diagram) contour_analyzer.filter_contours(min_area=400) contour_analyzer.build_graph() contour_analyzer.remove_non_table_nodes() contour_analyzer.compute_contour_bounding_boxes() contour_analyzer.separate_supernode() return contour_analyzer.does_page_have_valid_table(min_fract_area, min_cells)
Example #21
Source File: threshold_methods.py From plantcv with MIT License | 5 votes |
def mean(gray_img, max_value, object_type="light"): """Creates a binary image from a grayscale image based on the mean adaptive threshold method. Inputs: gray_img = Grayscale image data max_value = value to apply above threshold (usually 255 = white) object_type = "light" or "dark" (default: "light") - If object is lighter than the background then standard thresholding is done - If object is darker than the background then inverse thresholding is done Returns: bin_img = Thresholded, binary image :param gray_img: numpy.ndarray :param max_value: int :param object_type: str :return bin_img: numpy.ndarray """ # Set the threshold method threshold_method = "" if object_type.upper() == "LIGHT": threshold_method = cv2.THRESH_BINARY elif object_type.upper() == "DARK": threshold_method = cv2.THRESH_BINARY_INV else: fatal_error('Object type ' + str(object_type) + ' is not "light" or "dark"!') params.device += 1 bin_img = _call_adaptive_threshold(gray_img, max_value, cv2.ADAPTIVE_THRESH_MEAN_C, threshold_method, "_mean_threshold_") return bin_img # Otsu autothreshold
Example #22
Source File: threshold_methods.py From plantcv with MIT License | 5 votes |
def otsu(gray_img, max_value, object_type="light"): """Creates a binary image from a grayscale image using Otsu's thresholding. Inputs: gray_img = Grayscale image data max_value = value to apply above threshold (usually 255 = white) object_type = "light" or "dark" (default: "light") - If object is lighter than the background then standard thresholding is done - If object is darker than the background then inverse thresholding is done Returns: bin_img = Thresholded, binary image :param gray_img: numpy.ndarray :param max_value: int :param object_type: str :return bin_img: numpy.ndarray """ # Set the threshold method threshold_method = "" if object_type.upper() == "LIGHT": threshold_method = cv2.THRESH_BINARY + cv2.THRESH_OTSU elif object_type.upper() == "DARK": threshold_method = cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU else: fatal_error('Object type ' + str(object_type) + ' is not "light" or "dark"!') params.device += 1 # Threshold the image bin_img = _call_threshold(gray_img, 0, max_value, threshold_method, "_otsu_threshold_") return bin_img # Triangle autothreshold
Example #23
Source File: test-otr.py From OTR with GNU General Public License v3.0 | 5 votes |
def runOTR(filename): img = cv2.imread(filename, flags=cv2.IMREAD_COLOR) if img is None: raise ValueError("File {0} does not exist".format(filename)) imgGrey = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) imgThresh = cv2.threshold(imgGrey, 150, 255, cv2.THRESH_BINARY_INV)[1] imgThreshInv = cv2.threshold(imgGrey, 150, 255, cv2.THRESH_BINARY)[1] imgDil = cv2.dilate(imgThresh, np.ones((5, 5), np.uint8)) imgEro = cv2.erode(imgDil, np.ones((4, 4), np.uint8)) contour_analyzer = TableRecognition.ContourAnalyzer(imgDil) # 1st pass (black in algorithm diagram) contour_analyzer.filter_contours(min_area=400) contour_analyzer.build_graph() contour_analyzer.remove_non_table_nodes() contour_analyzer.compute_contour_bounding_boxes() contour_analyzer.separate_supernode() contour_analyzer.find_empty_cells(imgThreshInv) contour_analyzer.find_corner_clusters() contour_analyzer.compute_cell_hulls() contour_analyzer.find_fine_table_corners() # Add missing contours to contour list missing_contours = contour_analyzer.compute_filtered_missing_cell_contours() contour_analyzer.contours += missing_contours # 2nd pass (red in algorithm diagram) contour_analyzer.compute_contour_bounding_boxes() contour_analyzer.find_empty_cells(imgThreshInv) contour_analyzer.find_corner_clusters() contour_analyzer.compute_cell_hulls() contour_analyzer.find_fine_table_corners() # End of 2nd pass. Continue regularly contour_analyzer.compute_table_coordinates(5.) contour_analyzer.draw_table_coord_cell_hulls(img, xscale=.8, yscale=.8) return img
Example #24
Source File: threshold_methods.py From plantcv with MIT License | 5 votes |
def binary(gray_img, threshold, max_value, object_type="light"): """Creates a binary image from a grayscale image based on the threshold value. Inputs: gray_img = Grayscale image data threshold = Threshold value (0-255) max_value = value to apply above threshold (usually 255 = white) object_type = "light" or "dark" (default: "light") - If object is lighter than the background then standard thresholding is done - If object is darker than the background then inverse thresholding is done Returns: bin_img = Thresholded, binary image :param gray_img: numpy.ndarray :param threshold: int :param max_value: int :param object_type: str :return bin_img: numpy.ndarray """ # Set the threshold method threshold_method = "" if object_type.upper() == "LIGHT": threshold_method = cv2.THRESH_BINARY elif object_type.upper() == "DARK": threshold_method = cv2.THRESH_BINARY_INV else: fatal_error('Object type ' + str(object_type) + ' is not "light" or "dark"!') params.device += 1 # Threshold the image bin_img = _call_threshold(gray_img, threshold, max_value, threshold_method, "_binary_threshold_") return bin_img # Gaussian adaptive threshold
Example #25
Source File: threshold_methods.py From plantcv with MIT License | 5 votes |
def gaussian(gray_img, max_value, object_type="light"): """Creates a binary image from a grayscale image based on the Gaussian adaptive threshold method. Inputs: gray_img = Grayscale image data max_value = value to apply above threshold (usually 255 = white) object_type = "light" or "dark" (default: "light") - If object is lighter than the background then standard thresholding is done - If object is darker than the background then inverse thresholding is done Returns: bin_img = Thresholded, binary image :param gray_img: numpy.ndarray :param max_value: int :param object_type: str :return bin_img: numpy.ndarray """ # Set the threshold method threshold_method = "" if object_type.upper() == "LIGHT": threshold_method = cv2.THRESH_BINARY elif object_type.upper() == "DARK": threshold_method = cv2.THRESH_BINARY_INV else: fatal_error('Object type ' + str(object_type) + ' is not "light" or "dark"!') params.device += 1 bin_img = _call_adaptive_threshold(gray_img, max_value, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, threshold_method, "_gaussian_threshold_") return bin_img # Mean adaptive threshold
Example #26
Source File: fake_util.py From CRAFT_keras with Apache License 2.0 | 5 votes |
def watershed(src): """ Performs a marker-based image segmentation using the watershed algorithm. :param src: 8-bit 1-channel image. :return: 32-bit single-channel image (map) of markers. """ # cv2.imwrite('{}.png'.format(np.random.randint(1000)), src) gray = src.copy() img = cv2.cvtColor(gray, cv2.COLOR_GRAY2BGR) # h, w = gray.shape[:2] # block_size = (min(h, w) // 4 + 1) * 2 + 1 # thresh = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, block_size, 0) _ret, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU) # noise removal kernel = np.ones((3, 3), np.uint8) opening = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel, iterations=2) # sure background area sure_bg = cv2.dilate(opening, kernel, iterations=3) # Finding sure foreground area dist_transform = cv2.distanceTransform(opening, cv2.DIST_L2, 5) # dist_transform = opening & gray # cv2.imshow('dist_transform', dist_transform) # _ret, sure_bg = cv2.threshold(dist_transform, 0.2 * dist_transform.max(), 255, cv2.THRESH_BINARY_INV) _ret, sure_fg = cv2.threshold(dist_transform, 0.2 * dist_transform.max(), 255, cv2.THRESH_BINARY) # Finding unknown region # sure_bg = np.uint8(sure_bg) sure_fg = np.uint8(sure_fg) # cv2.imshow('sure_fg', sure_fg) unknown = cv2.subtract(sure_bg, sure_fg) # Marker label lingret, marker_map = cv2.connectedComponents(sure_fg) # Add one to all labels so that sure background is not 0, but 1 marker_map = marker_map + 1 # Now, mark the region of unknown with zero marker_map[unknown == 255] = 0 marker_map = cv2.watershed(img, marker_map) return marker_map
Example #27
Source File: autoplay.py From AIGames with MIT License | 5 votes |
def auto_play(bbox): api = API_Class() count = 0 click_num = 100 while True: img_rgb = api.screenshot(bbox=bbox) img_rgb = np.array(img_rgb) gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY) ret, gray_thresh = cv2.threshold(gray, 5, 255, cv2.THRESH_BINARY_INV) # 形态学处理-腐蚀 gray_erode = cv2.erode(gray_thresh, None, iterations=5) # 轮廓检测 img, contours, hierarchy = cv2.findContours(gray_erode.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE) for contour in contours: min_1 = tuple(contour[contour[:, :, 1].argmin()][0]) min_2 = tuple(contour[contour[:, :, 0].argmin()][0]) max_1 = tuple(contour[contour[:, :, 1].argmax()][0]) max_2 = tuple(contour[contour[:, :, 0].argmax()][0]) # 如果检测到的是小轮廓,应该不是需要点击的黑块 if max_1[1] - min_1[1] < 50: continue x = (min_2[0] + max_2[0]) // 2 y = max_1[1] - 15 position = (x + bbox[0], y + bbox[1]) api.click(position) count += 1 if count > click_num: break
Example #28
Source File: cv_functions.py From R-CNN_LIGHT with MIT License | 5 votes |
def adaptiveThresholding(gray=None, neighbor=5, blur=False, k_size=3): if(blur): gray = cv2.GaussianBlur(gray, (k_size, k_size), 0) return cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, neighbor, 1)
Example #29
Source File: before_segmentation.py From Printed-Text-recognition-and-conversion with MIT License | 5 votes |
def image_for_extraction(raw_image): raw_image = cv2.GaussianBlur(raw_image,(3,3),0) ret,no_sm_bw_image = cv2.threshold(raw_image,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU) return no_sm_bw_image
Example #30
Source File: before_segmentation.py From Printed-Text-recognition-and-conversion with MIT License | 5 votes |
def image_for_detection(raw_image): #remove tiny noises by blurring sm_image = cv2.GaussianBlur(raw_image,(5,5),0) #binarize ret, bw_image = cv2.threshold(sm_image,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU) #dilate kernel = np.ones((2,2),np.uint8) bw_image = cv2.dilate(bw_image,kernel) return bw_image