Python cv2.THRESH_OTSU Examples
The following are 30
code examples of cv2.THRESH_OTSU().
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: 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 #3
Source File: Tshirt.py From virtual-dressing-room with Apache License 2.0 | 6 votes |
def detect_shirt(self): #self.dst=cv2.inRange(self.norm_rgb,np.array([self.lb,self.lg,self.lr],np.uint8),np.array([self.b,self.g,self.r],np.uint8)) self.dst=cv2.inRange(self.norm_rgb,np.array([20,20,20],np.uint8),np.array([255,110,80],np.uint8)) cv2.threshold(self.dst,0,255,cv2.THRESH_OTSU+cv2.THRESH_BINARY) fg=cv2.erode(self.dst,None,iterations=2) #cv2.imshow("fore",fg) bg=cv2.dilate(self.dst,None,iterations=3) _,bg=cv2.threshold(bg, 1,128,1) #cv2.imshow("back",bg) mark=cv2.add(fg,bg) mark32=np.int32(mark) cv2.watershed(self.norm_rgb,mark32) self.m=cv2.convertScaleAbs(mark32) _,self.m=cv2.threshold(self.m,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU) #cv2.imshow("final_tshirt",self.m) cntr,h=cv2.findContours(self.m,cv2.cv.CV_RETR_EXTERNAL,cv2.cv.CV_CHAIN_APPROX_SIMPLE) return self.m,cntr
Example #4
Source File: line_detect_1.py From crop_row_detection with GNU General Public License v3.0 | 6 votes |
def crop_row_detect(image_in): save_image('0_image_in', image_in) ### Grayscale Transform ### image_edit = grayscale_transform(image_in) save_image('1_image_gray', image_edit) ### Binarization ### _, image_edit = cv2.threshold(image_edit, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU) save_image('2_image_bin', image_edit) ### Stripping ### crop_points = strip_process(image_edit) save_image('8_crop_points', crop_points) ### Hough Transform ### crop_lines = crop_point_hough(crop_points) save_image('9_image_hough', cv2.addWeighted(image_in, 1, crop_lines, 1, 0.0)) return crop_lines
Example #5
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 #6
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 #7
Source File: thresholding.py From smashscan with MIT License | 6 votes |
def param_filter(self, frame): # Apply pre-blur according to trackbar value. if self.pre_blur_val == 1: frame = cv2.GaussianBlur(frame, (5, 5), 0) elif self.pre_blur_val == 2: frame = cv2.medianBlur(frame, 5) # Apply a thresholding method according to trackbar value. if self.thresh_flag: _, frame = cv2.threshold(frame, 127, 255, cv2.THRESH_BINARY) else: _, frame = cv2.threshold(frame, 127, 255, cv2.THRESH_OTSU) # Apply post-blur according to trackbar value. if self.post_blur_val: frame = cv2.medianBlur(frame, 5) return frame # Apply filterrs to frame according to contour parameters.
Example #8
Source File: binarization.py From dhSegment with GNU General Public License v3.0 | 6 votes |
def thresholding(probs: np.ndarray, threshold: float=-1) -> np.ndarray: """ Computes the binary mask of the detected Page from the probabilities output by network. :param probs: array in range [0, 1] of shape HxWx2 :param threshold: threshold between [0 and 1], if negative Otsu's adaptive threshold will be used :return: binary mask """ if threshold < 0: # Otsu's thresholding probs = np.uint8(probs * 255) #TODO Correct that weird gaussianBlur probs = cv2.GaussianBlur(probs, (5, 5), 0) thresh_val, bin_img = cv2.threshold(probs, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU) mask = np.uint8(bin_img / 255) else: mask = np.uint8(probs > threshold) return mask
Example #9
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 #10
Source File: cvmgr.py From sia-cog with MIT License | 6 votes |
def extracttext(imgpath, preprocess): if imgpath.startswith('http://') or imgpath.startswith('https://') or imgpath.startswith('ftp://'): image = url_to_image(imgpath) else: image = cv2.imread(imgpath) gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) if preprocess == "thresh": gray = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1] elif preprocess == "blur": gray = cv2.medianBlur(gray, 3) filename = "{}.png".format(os.getpid()) cv2.imwrite(filename, gray) text = pytesseract.image_to_string(Image.open(filename)) os.remove(filename) return {"text": text}
Example #11
Source File: normalize.py From Table-Detection-using-Deep-learning with BSD 3-Clause "New" or "Revised" License | 6 votes |
def remove_background(img): """ Remove noise using OTSU's method. :param img: The image to be processed :return: The normalized image """ img = img.astype(np.uint8) # Binarize the image using OTSU's algorithm. This is used to find the center # of mass of the image, and find the threshold to remove background noise threshold, _ = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU) # Remove noise - anything higher than the threshold. Note that the image is still grayscale img[img > threshold] = 255 return img
Example #12
Source File: image_manipulation.py From self_driving_pi_car with MIT License | 6 votes |
def binarize_image(input_image, threshold_value=177): """ Convert input_image to binary representation :param input_image: image :type input_image: numpy.ndarray :param threshold_value: value to be used as a threshold :type threshold_value: int :return: image in binary form :rtype: numpy.ndarray """ gray_image = grayscale_image(input_image) bin_image = cv2.GaussianBlur(gray_image, (5, 5), 0) _, bin_image = cv2.threshold(bin_image, threshold_value, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU) return bin_image
Example #13
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 #14
Source File: getPaper.py From signature_extractor with MIT License | 6 votes |
def getPaperFromImage(img): gImg = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) bImg = cv2.medianBlur(src = gImg, ksize = 51) threshold, _ = cv2.threshold(src = bImg, thresh = 0, maxval = 255, type = cv2.THRESH_BINARY | cv2.THRESH_OTSU) cannyImg = cv2.Canny(image = bImg, threshold1 = 0.5 * threshold, threshold2 = threshold) _, 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) return img[maxRect.y : maxRect.y + maxRect.h, maxRect.x : maxRect.x + maxRect.w]
Example #15
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 #16
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 #17
Source File: main.py From sbb_textline_detection with Apache License 2.0 | 6 votes |
def otsu_copy(self, img): img_r = np.zeros(img.shape) img1 = img[:, :, 0] img2 = img[:, :, 1] img3 = img[:, :, 2] # print(img.min()) # print(img[:,:,0].min()) # blur = cv2.GaussianBlur(img,(5,5)) # ret3,th3 = cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU) retval1, threshold1 = cv2.threshold(img1, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU) retval2, threshold2 = cv2.threshold(img2, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU) retval3, threshold3 = cv2.threshold(img3, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU) img_r[:, :, 0] = threshold1 img_r[:, :, 1] = threshold1 img_r[:, :, 2] = threshold1 return img_r
Example #18
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 #19
Source File: ImageMiniLab.py From ImageMiniLab with GNU General Public License v3.0 | 6 votes |
def find_contours(self): src = self.cv_read_img(self.src_file) if src is None: return dst = cv.GaussianBlur(src, (3, 3), 0) gray = cv.cvtColor(dst, cv.COLOR_BGR2GRAY) ret, binary = cv.threshold(gray, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU) cloneImage, contous, heriachy = cv.findContours(binary, cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE) for i,contou in enumerate(contous): cv.drawContours(src, contous, i, (0, 0, 255), 1) # 轮廓 self.decode_and_show_dst(src) # 轮廓覆盖 for i,contou in enumerate(contous): cv.drawContours(src, contous, i, (0, 0, 255), -1) self.decode_and_show_dst(src) #人脸识别 正脸 需要下载xml模型 haarcascade_frontalface_alt.xml
Example #20
Source File: ImageMiniLab.py From ImageMiniLab with GNU General Public License v3.0 | 6 votes |
def threshold(self): src = self.cv_read_img(self.src_file) if src is None: return gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY) # 这个函数的第一个参数就是原图像,原图像应该是灰度图。 # 第二个参数就是用来对像素值进行分类的阈值。 # 第三个参数就是当像素值高于(有时是小于)阈值时应该被赋予的新的像素值 # 第四个参数来决定阈值方法,见threshold_simple() # ret, binary = cv.threshold(gray, 127, 255, cv.THRESH_BINARY) ret, dst = cv.threshold(gray, 127, 255, cv.THRESH_BINARY | cv.THRESH_OTSU) self.decode_and_show_dst(dst) # Canny边缘检测
Example #21
Source File: saliency.py From OpenCV-Computer-Vision-Projects-with-Python with MIT License | 6 votes |
def get_proto_objects_map(self, use_otsu=True): """Returns the proto-objects map of an RGB image This method generates a proto-objects map of an RGB image. Proto-objects are saliency hot spots, generated by thresholding the saliency map. :param use_otsu: flag whether to use Otsu thresholding (True) or a hardcoded threshold value (False) :returns: proto-objects map """ saliency = self.get_saliency_map() if use_otsu: _, img_objects = cv2.threshold(np.uint8(saliency*255), 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU) else: thresh = np.mean(saliency)*255*3 _, img_objects = cv2.threshold(np.uint8(saliency*255), thresh, 255, cv2.THRESH_BINARY) return img_objects
Example #22
Source File: extract.py From DE3-ROB1-CHESS with Creative Commons Attribution 4.0 International | 5 votes |
def extractGrid(img, nvertical, nhorizontal, threshold1 = 50, threshold2 = 150, apertureSize = 3, hough_threshold_step=20, hough_threshold_min=50, hough_threshold_max=150): """Finds the grid lines in a board image. :param img: board image :param nvertical: number of vertical lines :param nhorizontal: number of horizontal lines :returns: a pair (horizontal, vertical). Both elements are lists with the lines' positions. """ w, h, _ = img.shape close_threshold_v = (w / nvertical) / 4 close_threshold_h = (h / nhorizontal) / 4 im_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) thresh, im_bw = cv2.threshold(im_gray, 128, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU) im_canny = cv2.Canny(im_bw, threshold1, threshold2, apertureSize=apertureSize) for i in range((hough_threshold_max - hough_threshold_min + 1) / hough_threshold_step): lines = cv2.HoughLines(im_canny, 1, np.pi / 180, hough_threshold_max - (hough_threshold_step * i)) if lines is None: continue lines = [Line(l[0], l[1]) for l in lines[0]] horizontal, vertical = partitionLines(lines) vertical = filterCloseLines(vertical, horizontal=False, threshold=close_threshold_v) horizontal = filterCloseLines(horizontal, horizontal=True, threshold=close_threshold_h) if len(vertical) >= nvertical and \ len(horizontal) >= nhorizontal: return (horizontal, vertical)
Example #23
Source File: text_recognition.py From MemePolice_bot with GNU General Public License v2.0 | 5 votes |
def text_recognition(post): meme_name = "temp" # We would just call all the temporary images as "temp" request.urlretrieve(post.url, filename=meme_name) # Here we are downloading the appropriate image (png, jpg, jpeg, bmp) image = cv2.imread(meme_name) # We load up the image using opencv gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # Turning the image to grayscale gray = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1] # Making a threshold for the image, text will be more apparent gray = cv2.medianBlur(gray, 3) # Adding some blur, useful for really noisy images filename = "{}-ocr.png".format(meme_name) # Making the temporary, ready file for text recognition cv2.imwrite(filename, gray) # Now, we will save the image img = Image.open(filename) # Open the processed image with pillow recognized_text = pytesseract.image_to_string(img).encode('utf-8') # As a means of exceptions, need to read out as UTF-8, so no encoding errors would occur os.remove(filename) # Deleting all temporary image os.remove(meme_name) return recognized_text # Returns the recognized text in UTF-8 encodign and with capital and lower letters
Example #24
Source File: Tshirt.py From virtual-dressing-room with Apache License 2.0 | 5 votes |
def detect_shirt2(self): self.hsv=cv2.cvtColor(self.norm_rgb,cv.CV_BGR2HSV) self.hue,s,_=cv2.split(self.hsv) _,self.dst=cv2.threshold(self.hue,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU) self.fg=cv2.erode(self.dst,None,iterations=3) self.bg=cv2.dilate(self.dst,None,iterations=1) _,self.bg=cv2.threshold(self.bg,1,128,1) mark=cv2.add(self.fg,self.bg) mark32=np.int32(mark) cv2.watershed(self.norm_rgb,mark32) m=cv2.convertScaleAbs(mark32) _,m=cv2.threshold(m,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU) cntr,h=cv2.findContours(m,cv.CV_RETR_EXTERNAL,cv.CV_CHAIN_APPROX_SIMPLE) print len(cntr) #print cntr[0].shape #cntr[1].dtype=np.float32 #ret=cv2.contourArea(np.array(cntr[1])) #print ret #cntr[0].dtype=np.uint8 cv2.drawContours(m,cntr,-1,(255,255,255),3) cv2.imshow("mask_fg",self.fg) cv2.imshow("mask_bg",self.bg) cv2.imshow("mark",m)
Example #25
Source File: Chinese_OCR_new.py From GeetChinese_crack with MIT License | 5 votes |
def binary_pic(name_list): for image in name_list: temp_image = cv2.imread(image) #print image GrayImage=cv2.cvtColor(temp_image,cv2.COLOR_BGR2GRAY) ret,thresh1=cv2.threshold(GrayImage,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU) single_name = image.split('t/')[1] #print single_name cv2.imwrite('../data/tmp/'+single_name,thresh1)
Example #26
Source File: ocr_controller.py From JusticeAI with MIT License | 5 votes |
def _binarize(img): """ Uses Otsu' adaptive thresholding to convert the image to black/white pixels based on its immediate surroundings """ img = _filter_blur(img) _, img = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU) return img
Example #27
Source File: extractBoard.py From DE3-ROB1-CHESS with Creative Commons Attribution 4.0 International | 5 votes |
def extractGrid(img, nvertical, nhorizontal, threshold1 = 50, threshold2 = 150, apertureSize = 3, hough_threshold_step=20, hough_threshold_min=50, hough_threshold_max=150): """Finds the grid lines in a board image. :param img: board image :param nvertical: number of vertical lines :param nhorizontal: number of horizontal lines :returns: a pair (horizontal, vertical). Both elements are lists with the lines' positions. """ w, h, _ = img.shape close_threshold_v = (w / nvertical) / 4 close_threshold_h = (h / nhorizontal) / 4 im_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) thresh, im_bw = cv2.threshold(im_gray, 128, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU) im_canny = cv2.Canny(im_bw, threshold1, threshold2, apertureSize=apertureSize) for i in range((hough_threshold_max - hough_threshold_min + 1) / hough_threshold_step): lines = cv2.HoughLines(im_canny, 1, np.pi / 180, hough_threshold_max - (hough_threshold_step * i)) if lines is None: continue lines = [Line(l[0], l[1]) for l in lines[0]] horizontal, vertical = partitionLines(lines) vertical = filterCloseLines(vertical, horizontal=False, threshold=close_threshold_v) horizontal = filterCloseLines(horizontal, horizontal=True, threshold=close_threshold_h) if len(vertical) >= nvertical and \ len(horizontal) >= nhorizontal: return (horizontal, vertical)
Example #28
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 #29
Source File: image_dataset.py From Comicolorization with MIT License | 5 votes |
def convert_to_linedrawing(self, luminous_image_data): linedrawing = cv2.threshold(luminous_image_data, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1] return linedrawing
Example #30
Source File: extract.py From DE3-ROB1-CHESS with Creative Commons Attribution 4.0 International | 5 votes |
def extractGrid(img, nvertical, nhorizontal, threshold1 = 50, threshold2 = 150, apertureSize = 3, hough_threshold_step=20, hough_threshold_min=50, hough_threshold_max=150): """Finds the grid lines in a board image. :param img: board image :param nvertical: number of vertical lines :param nhorizontal: number of horizontal lines :returns: a pair (horizontal, vertical). Both elements are lists with the lines' positions. """ w, h, _ = img.shape close_threshold_v = (w / nvertical) / 4 close_threshold_h = (h / nhorizontal) / 4 im_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) thresh, im_bw = cv2.threshold(im_gray, 128, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU) im_canny = cv2.Canny(im_bw, threshold1, threshold2, apertureSize=apertureSize) for i in range((hough_threshold_max - hough_threshold_min + 1) / hough_threshold_step): lines = cv2.HoughLines(im_canny, 1, np.pi / 180, hough_threshold_max - (hough_threshold_step * i)) if lines is None: continue lines = [Line(l[0], l[1]) for l in lines[0]] horizontal, vertical = partitionLines(lines) vertical = filterCloseLines(vertical, horizontal=False, threshold=close_threshold_v) horizontal = filterCloseLines(horizontal, horizontal=True, threshold=close_threshold_h) if len(vertical) >= nvertical and \ len(horizontal) >= nhorizontal: return (horizontal, vertical)