Python cv2.ADAPTIVE_THRESH_MEAN_C Examples
The following are 21
code examples of cv2.ADAPTIVE_THRESH_MEAN_C().
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: masterForgery.py From signature_extractor with MIT License | 8 votes |
def getSignature(img): imgSize = np.shape(img) gImg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # Adaptive Thresholding requires the blocksize to be odd and bigger than 1 blockSize = 1 / 8 * imgSize[0] / 2 * 2 + 1 if blockSize <= 1: blockSize = imgSize[0] / 2 * 2 + 1 const = 10 mask = cv2.adaptiveThreshold(gImg, maxValue = 255, adaptiveMethod = cv2.ADAPTIVE_THRESH_MEAN_C, thresholdType = cv2.THRESH_BINARY, blockSize = blockSize, C = const) rmask = cv2.bitwise_not(mask) return (cv2.bitwise_and(img, img, mask=rmask), rmask) # First Prompt
Example #2
Source File: idcardocr.py From idcardocr with GNU General Public License v3.0 | 6 votes |
def get_name(img): # cv2.imshow("method3", img) # cv2.waitKey() print('name') _, _, red = cv2.split(img) #split 会自动将UMat转换回Mat red = cv2.UMat(red) red = hist_equal(red) red = cv2.adaptiveThreshold(red, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 151, 50) # red = cv2.medianBlur(red, 3) red = img_resize(red, 150) img = img_resize(img, 150) # showimg(red) # cv2.imwrite('name.png', red) # img2 = Image.open('address.png') # img = Image.fromarray(cv2.UMat.get(red).astype('uint8')) #return get_result_vary_length(red, 'chi_sim', img, '-psm 7') return get_result_vary_length(red, 'chi_sim', img, '--psm 7') # return punc_filter(pytesseract.image_to_string(img, lang='chi_sim', config='-psm 13').replace(" ",""))
Example #3
Source File: platesOCR.py From LicensePlates-OCR with MIT License | 6 votes |
def adaptiveThreshold(plates): for i, plate in enumerate(plates): img = cv2.imread(plate) gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) cv2.imshow('gray', gray) ret, thresh = cv2.threshold(gray, 50, 255, cv2.THRESH_BINARY) # cv2.imshow('thresh', thresh) threshMean = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 5, 10) # cv2.imshow('threshMean', threshMean) threshGauss = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 51, 27) cv2.imshow('threshGauss', threshGauss) cv2.imwrite("processed\\plate{}.png".format(i), threshGauss) cv2.waitKey(0)
Example #4
Source File: temp.py From aggregation with Apache License 2.0 | 6 votes |
def read_file(fname): image = cv2.imread(fname,0) image = cv2.adaptiveThreshold(image,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,11,2) # cv2.namedWindow('image', cv2.WINDOW_NORMAL) # cv2.imshow('image',image) # cv2.waitKey(0) # cv2.destroyAllWindows() # image = cv2.adaptiveThreshold(image,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,11,2) # cv2.imwrite("/home/ggdhines/temp.jpg",image) # assert False # _,image = cv2.threshold(image,200,255,cv2.THRESH_BINARY) # image = 255 - image # image = image > 0 image = image.astype(np.float) return image
Example #5
Source File: auto_marker.py From lightnet with MIT License | 5 votes |
def update_image(image_id, category_id = 0, image_filenames=[], enable_vis=True, enable_marker_dump=False): try: global contours, hierarchy, img, gray, g_image_filenames if len(image_filenames) > 0: g_image_filenames=image_filenames img=cv.imread(g_image_filenames[image_id]) # print(g_image_filenames[image_id]) cv.setTrackbarPos('image', 'marker', image_id) gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY) gray[np.where(gray <= [3])] = [187] gray = cv.medianBlur(gray, 11) if enable_vis: cv.imshow('gray', gray) if CANNY_MODE: thrs1 = cv.getTrackbarPos('thrs1', 'marker') thrs2 = cv.getTrackbarPos('thrs2', 'marker') bin = cv.Canny(gray, thrs1, thrs2, apertureSize=5) else: bin = cv.adaptiveThreshold( gray, 255, cv.ADAPTIVE_THRESH_MEAN_C, cv.THRESH_BINARY_INV, 31, 10) if enable_vis: cv.imshow('bin', bin) _, contours0, hierarchy = cv.findContours( bin.copy(), cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE) contours = [cnt for cnt in contours0 if cv.contourArea(cnt) > 200] if enable_vis: cv.imshow('image', img) update_contour(category_id, image_id, enable_vis, enable_marker_dump) except Exception: import traceback traceback.print_exc() raise
Example #6
Source File: remove_noise.py From image_text_reader with MIT License | 5 votes |
def remove_noise_and_smooth(file_name): logging.info('Removing noise and smoothening image') img = cv2.imread(file_name, 0) filtered = cv2.adaptiveThreshold(img.astype(np.uint8), 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 41, 3) kernel = np.ones((1, 1), np.uint8) opening = cv2.morphologyEx(filtered, cv2.MORPH_OPEN, kernel) closing = cv2.morphologyEx(opening, cv2.MORPH_CLOSE, kernel) img = image_smoothening(img) or_image = cv2.bitwise_or(img, closing) return or_image
Example #7
Source File: augmentor.py From A-Light-and-Fast-Face-Detector-for-Edge-Devices with MIT License | 5 votes |
def binarization(image, block_size=5, C=10): """ convert input image to binary image cv2.adaptiveThreshold is used, for detailed information, refer to opencv docs :param image: :return: """ if image.ndim == 3: image_grayscale = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) else: image_grayscale = image binary_image = cv2.adaptiveThreshold(image_grayscale, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, block_size, C) return binary_image
Example #8
Source File: ImageProcessing.py From PyDesignPattern with GNU General Public License v3.0 | 5 votes |
def processing(self, img): super().processing(img) print("真正的核心算法:边缘提取算法") newImg = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 5, 10) return newImg
Example #9
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 #10
Source File: AdaptiveThresholding.py From Finger-Detection-and-Tracking with BSD 2-Clause "Simplified" License | 5 votes |
def main(): const = 2 block_size = 51 imagePath = "../data/sudoku.png" image = cv2.imread(imagePath, 0) cv2.imshow("Orignal Image", image) mean_thresh = \ cv2.adaptiveThreshold(image, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, block_size, const) gaussian_thresh = \ cv2.adaptiveThreshold(image, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, block_size, const) images = [image, mean_thresh, gaussian_thresh] titles = ["Orignals", "Mean", "Gaussian"] cv2.imshow("Mean Image", mean_thresh) cv2.imshow("Gaussian Image", gaussian_thresh) for i in range(3): plt.subplot(3, 1, i + 1) plt.imshow(images[i], cmap='gray') plt.title(titles[i]) plt.show() cv2.waitKey(0) cv2.destroyAllWindows()
Example #11
Source File: helpers.py From SnapSudoku with MIT License | 5 votes |
def thresholdify(self, img): img = cv2.adaptiveThreshold(img.astype(np.uint8), 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 11, 3) return 255 - img
Example #12
Source File: augmentor.py From lffd-pytorch with MIT License | 5 votes |
def binarization(image, block_size=5, C=10): """ convert input image to binary image cv2.adaptiveThreshold is used, for detailed information, refer to opencv docs :param image: :return: """ if image.ndim == 3: image_grayscale = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) else: image_grayscale = image binary_image = cv2.adaptiveThreshold(image_grayscale, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, block_size, C) return binary_image
Example #13
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 #14
Source File: markers_detection.py From niryo_one_ros with GNU General Public License v3.0 | 5 votes |
def draw_markers(img, workspace_ratio=1.0): gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) img_thresh = cv2.adaptiveThreshold(gray, maxValue=255, adaptiveMethod=cv2.ADAPTIVE_THRESH_MEAN_C, thresholdType=cv2.THRESH_BINARY, blockSize=15, C=32) list_good_candidates = find_markers_from_img_thresh(img_thresh) if not list_good_candidates: return False, img im_draw = img.copy() for marker in list_good_candidates: cx, cy = marker.get_center() radius = marker.get_radius() cv2.circle(im_draw, (cx, cy), radius, (0, 0, 255), 2) if len(list_good_candidates) > 6: return False, im_draw if len(list_good_candidates) == 4: list_good_candidates = sort_markers_detection(list_good_candidates) else: list_good_candidates = complicated_sort_markers(list_good_candidates, workspace_ratio=workspace_ratio) if list_good_candidates is None: return False, im_draw for i, marker in enumerate(list_good_candidates[:4]): cx, cy = marker.get_center() radius = marker.get_radius() cv2.circle(im_draw, (cx, cy), radius, (0, 200, 0), 2) cv2.putText(im_draw, "{}".format(i + 1), (cx + 5, cy - 15), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 0, 0), 3) cv2.putText(im_draw, "{}".format(i + 1), (cx + 5, cy - 15), cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 200, 0), 2) return True, im_draw
Example #15
Source File: markers_detection.py From niryo_one_ros with GNU General Public License v3.0 | 5 votes |
def extract_img_markers(img, workspace_ratio=1.0): """ Extract working area from an image thanks to 4 Niryo's markers :param img: OpenCV image which contain 4 Niryo's markers :param workspace_ratio: Ratio between the width and the height of the area represented by the markers :return: extracted and warped working area image """ gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) img_thresh = cv2.adaptiveThreshold(gray, maxValue=255, adaptiveMethod=cv2.ADAPTIVE_THRESH_MEAN_C, thresholdType=cv2.THRESH_BINARY, blockSize=15, C=25) list_good_candidates = find_markers_from_img_thresh(img_thresh) if not list_good_candidates or len(list_good_candidates) > 6: return None if len(list_good_candidates) == 4: list_good_candidates = sort_markers_detection(list_good_candidates) else: list_good_candidates = complicated_sort_markers(list_good_candidates, workspace_ratio=workspace_ratio) if list_good_candidates is None: return None im_cut = extract_sub_img(img, list_good_candidates, ratio_w_h=workspace_ratio) return im_cut
Example #16
Source File: cut_part.py From 2019-CCF-BDCI-OCR-MCZJ-OCR-IdentificationIDElement with MIT License | 5 votes |
def gradient_and_binary(img_blurred, image_name='1.jpg', save_path='./'): # 将灰度图二值化,后面两个参数调试用 """ 求取梯度,二值化 :param img_blurred: 滤波后的图片 :param image_name: 图片名,测试用 :param save_path: 保存路径,测试用 :return: 二值化后的图片 """ gradX = cv2.Sobel(img_blurred, ddepth=cv2.CV_32F, dx=1, dy=0) gradY = cv2.Sobel(img_blurred, ddepth=cv2.CV_32F, dx=0, dy=1) img_gradient = cv2.subtract(gradX, gradY) img_gradient = cv2.convertScaleAbs(img_gradient) # sobel算子,计算梯度, 也可以用canny算子替代 # 这里改进成自适应阈值,貌似没用 img_thresh = cv2.adaptiveThreshold(img_gradient, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 3, -3) # cv2.imwrite(os.path.join(save_path, img_name + '_binary.jpg'), img_thresh) # 二值化 阈值未调整好 kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5)) img_closed = cv2.morphologyEx(img_thresh, cv2.MORPH_CLOSE, kernel) img_closed = cv2.morphologyEx(img_closed, cv2.MORPH_OPEN, kernel) img_closed = cv2.erode(img_closed, None, iterations=9) img_closed = cv2.dilate(img_closed, None, iterations=9) # 腐蚀膨胀 # 这里调整了kernel大小(减小),腐蚀膨胀次数后(增大),出错的概率大幅减小 return img_closed
Example #17
Source File: signatureExtractor.py From signature_extractor with MIT License | 4 votes |
def getSignature(img): imgSize = np.shape(img) gImg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # minBlockSize = 3 # maxBlockSize = 101 # minC = 3 # maxC = 101 # # bestContourNo = 1000000 # bestBlockSize = 0 # bestC = 0 # # for c in range(minC, maxC, 2): # for bs in range(minBlockSize, maxBlockSize, 2): # mask = cv2.adaptiveThreshold(gImg, maxValue = 255, adaptiveMethod = cv2.ADAPTIVE_THRESH_MEAN_C, thresholdType = cv2.THRESH_BINARY, blockSize = bs, C = c) # rmask = cv2.bitwise_not(mask) # _, contours, _ = cv2.findContours(image = rmask.copy(), mode = cv2.RETR_TREE, method = cv2.CHAIN_APPROX_SIMPLE) # if len(contours) > 15 and len(contours) < bestContourNo: # bestContourNo = len(contours) # bestBlockSize = bs # bestC = c # blockSize = 21, C = 10 # TODO throw error if blockSize is bigger than image blockSize = 21 C = 10 if blockSize > imgSize[0]: if imgSize[0] % 2 == 0: blockSize = imgSize[0] - 1 else: blockSize = imgSize[0] if blockSize > imgSize[1]: if imgSize[0] % 2 == 0: blockSize = imgSize[1] - 1 else: blockSize = imgSize[1] mask = cv2.adaptiveThreshold(gImg, maxValue = 255, adaptiveMethod = cv2.ADAPTIVE_THRESH_MEAN_C, thresholdType = cv2.THRESH_BINARY, blockSize = blockSize, C = C) rmask = cv2.bitwise_not(mask) return cv2.bitwise_and(signature, signature, mask=rmask) # Camera capture # camera = cv2.VideoCapture(0) # (grabbed, signature) = camera.read() # cv2.imshow('Picture', signature) # cv2.waitKey(0)
Example #18
Source File: lane_tracker.py From lane_tracker with GNU General Public License v3.0 | 4 votes |
def filter_lane_points(self, img, filter_type='bilateral', ksize_r=25, C_r=8, ksize_b=35, C_b=5, mask_noise=False, ksize_noise=65, C_noise=10, noise_thresh=135): ''' Filter an image to isolate lane lines and return a binary version. All image color space conversion, thresholding, filtering and morphing happens inside this method. It takes an RGB color image as input and returns a binary filtered version. ''' # Define structuring elements for cv2 functions strel_lab_b = cv2.getStructuringElement(shape=cv2.MORPH_ELLIPSE, ksize=(55,55)) strel_rgb_r = cv2.getStructuringElement(shape=cv2.MORPH_ELLIPSE, ksize=(29,29)) strel_open = cv2.getStructuringElement(shape=cv2.MORPH_ELLIPSE, ksize=(5,5)) # Extract RGB R-channel and LAB B-channel rgb_r_channel = img[:,:,0] lab_b_channel = (cv2.cvtColor(img, cv2.COLOR_RGB2LAB))[:,:,2] # Apply tophat morphology rgb_r_tophat = cv2.morphologyEx(rgb_r_channel, cv2.MORPH_TOPHAT, strel_rgb_r, iterations=1) lab_b_tophat = cv2.morphologyEx(lab_b_channel, cv2.MORPH_TOPHAT, strel_lab_b, iterations=1) if filter_type == 'bilateral': # Apply bilateral adaptive color thresholding rgb_r_thresh = bilateral_adaptive_threshold(rgb_r_tophat, ksize=ksize_r, C=C_r) lab_b_thresh = bilateral_adaptive_threshold(lab_b_tophat, ksize=ksize_b, C=C_b) elif filter_type == 'neighborhood': rgb_r_thresh = cv2.adaptiveThreshold(rgb_r_channel, 255, adaptiveMethod=cv2.ADAPTIVE_THRESH_MEAN_C, thresholdType=cv2.THRESH_BINARY, blockSize=ksize_r, C=-C_r) lab_b_thresh = cv2.adaptiveThreshold(lab_b_channel, 255, adaptiveMethod=cv2.ADAPTIVE_THRESH_MEAN_C, thresholdType=cv2.THRESH_BINARY, blockSize=ksize_b, C=-C_b) else: raise ValueError("Unexpected filter mode. Expected modes are 'bilateral' or 'neighborhood'.") if mask_noise: # Merge both color channels and the noise mask # Create a mask to filter out noise such as trees and other greenery based on the LAB B-channel noise_mask_part1 = cv2.inRange(lab_b_channel, noise_thresh, 255) # This catches the noise, but unfortunately also the yellow line, therefore... noise_mask_part2 = bilateral_adaptive_threshold(lab_b_channel, ksize=ksize_noise, C=C_noise) # ...this brings the yellow line back... noise_bool = np.logical_or(np.logical_not(noise_mask_part1), noise_mask_part2) # ...once we combine the two. noise_mask = np.zeros_like(rgb_r_channel, dtype=np.uint8) noise_mask[noise_bool] = 255 merged_bool = np.logical_and(np.logical_or(rgb_r_thresh, lab_b_thresh), noise_mask) merged = np.zeros_like(rgb_r_channel, dtype=np.uint8) merged[merged_bool] = 255 else: # Only merge the two color channels merged_bool = np.logical_or(rgb_r_thresh, lab_b_thresh) merged = np.zeros_like(rgb_r_channel, dtype=np.uint8) merged[merged_bool] = 255 # Apply open morphology opened = cv2.morphologyEx(merged, cv2.MORPH_OPEN, strel_open, iterations=1) return opened
Example #19
Source File: page_dewarp.py From page_dewarp with MIT License | 4 votes |
def remap_image(name, img, small, page_dims, params): height = 0.5 * page_dims[1] * OUTPUT_ZOOM * img.shape[0] height = round_nearest_multiple(height, REMAP_DECIMATE) width = round_nearest_multiple(height * page_dims[0] / page_dims[1], REMAP_DECIMATE) print ' output will be {}x{}'.format(width, height) height_small = height / REMAP_DECIMATE width_small = width / REMAP_DECIMATE page_x_range = np.linspace(0, page_dims[0], width_small) page_y_range = np.linspace(0, page_dims[1], height_small) page_x_coords, page_y_coords = np.meshgrid(page_x_range, page_y_range) page_xy_coords = np.hstack((page_x_coords.flatten().reshape((-1, 1)), page_y_coords.flatten().reshape((-1, 1)))) page_xy_coords = page_xy_coords.astype(np.float32) image_points = project_xy(page_xy_coords, params) image_points = norm2pix(img.shape, image_points, False) image_x_coords = image_points[:, 0, 0].reshape(page_x_coords.shape) image_y_coords = image_points[:, 0, 1].reshape(page_y_coords.shape) image_x_coords = cv2.resize(image_x_coords, (width, height), interpolation=cv2.INTER_CUBIC) image_y_coords = cv2.resize(image_y_coords, (width, height), interpolation=cv2.INTER_CUBIC) img_gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) remapped = cv2.remap(img_gray, image_x_coords, image_y_coords, cv2.INTER_CUBIC, None, cv2.BORDER_REPLICATE) thresh = cv2.adaptiveThreshold(remapped, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, ADAPTIVE_WINSZ, 25) pil_image = Image.fromarray(thresh) pil_image = pil_image.convert('1') threshfile = name + '_thresh.png' pil_image.save(threshfile, dpi=(OUTPUT_DPI, OUTPUT_DPI)) if DEBUG_LEVEL >= 1: height = small.shape[0] width = int(round(height * float(thresh.shape[1])/thresh.shape[0])) display = cv2.resize(thresh, (width, height), interpolation=cv2.INTER_AREA) debug_show(name, 6, 'output', display) return threshfile
Example #20
Source File: page_dewarp.py From page_dewarp with MIT License | 4 votes |
def get_mask(name, small, pagemask, masktype): sgray = cv2.cvtColor(small, cv2.COLOR_RGB2GRAY) if masktype == 'text': mask = cv2.adaptiveThreshold(sgray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY_INV, ADAPTIVE_WINSZ, 25) if DEBUG_LEVEL >= 3: debug_show(name, 0.1, 'thresholded', mask) mask = cv2.dilate(mask, box(9, 1)) if DEBUG_LEVEL >= 3: debug_show(name, 0.2, 'dilated', mask) mask = cv2.erode(mask, box(1, 3)) if DEBUG_LEVEL >= 3: debug_show(name, 0.3, 'eroded', mask) else: mask = cv2.adaptiveThreshold(sgray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY_INV, ADAPTIVE_WINSZ, 7) if DEBUG_LEVEL >= 3: debug_show(name, 0.4, 'thresholded', mask) mask = cv2.erode(mask, box(3, 1), iterations=3) if DEBUG_LEVEL >= 3: debug_show(name, 0.5, 'eroded', mask) mask = cv2.dilate(mask, box(8, 2)) if DEBUG_LEVEL >= 3: debug_show(name, 0.6, 'dilated', mask) return np.minimum(mask, pagemask)
Example #21
Source File: eventvision.py From event-Python with MIT License | 4 votes |
def show_em(self): """Displays the EM events (grayscale ATIS events)""" frame_length = 24e3 t_max = self.data.ts[-1] frame_start = self.data[0].ts frame_end = self.data[0].ts + frame_length max_val = 1.16e5 min_val = 1.74e3 val_range = max_val - min_val thr = np.rec.array(None, dtype=[('valid', np.bool_), ('low', np.uint64), ('high', np.uint64)], shape=(self.height, self.width)) thr.valid.fill(False) thr.low.fill(frame_start) thr.high.fill(0) def show_em_frame(frame_data): """Prepare and show a single frame of em data to be shown""" for datum in np.nditer(frame_data): ts_val = datum['ts'].item(0) thr_data = thr[datum['y'].item(0), datum['x'].item(0)] if datum['p'].item(0) == 0: thr_data.valid = 1 thr_data.low = ts_val elif thr_data.valid == 1: thr_data.valid = 0 thr_data.high = ts_val - thr_data.low img = 255 * (1 - (thr.high - min_val) / (val_range)) #thr_h = cv2.adaptiveThreshold(thr_h, 255, #cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 3, 0) img = np.piecewise(img, [img <= 0, (img > 0) & (img < 255), img >= 255], [0, lambda x: x, 255]) img = img.astype('uint8') cv2.imshow('img', img) cv2.waitKey(1) while frame_start < t_max: #with timer.Timer() as em_playback_timer: frame_data = self.data[(self.data.ts >= frame_start) & (self.data.ts < frame_end)] show_em_frame(frame_data) frame_start = frame_end + 1 frame_end += frame_length + 1 #print 'showing em frame took %s seconds' %em_playback_timer.secs cv2.destroyAllWindows() return