Python cv2.threshold() Examples
The following are 30
code examples of cv2.threshold().
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: pycv2.py From vrequest with MIT License | 16 votes |
def laplacian(filepathname): v = cv2.imread(filepathname) s = cv2.cvtColor(v, cv2.COLOR_BGR2GRAY) s = cv2.Laplacian(s, cv2.CV_16S, ksize=3) s = cv2.convertScaleAbs(s) cv2.imshow('nier',s) return s # ret, binary = cv2.threshold(s,40,255,cv2.THRESH_BINARY) # contours, hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) # for c in contours: # x,y,w,h = cv2.boundingRect(c) # if w>5 and h>10: # cv2.rectangle(v,(x,y),(x+w,y+h),(155,155,0),1) # cv2.imshow('nier2',v) # cv2.waitKey() # cv2.destroyAllWindows()
Example #2
Source File: segment.py From gesture-recognition with MIT License | 12 votes |
def segment(image, threshold=25): global bg # find the absolute difference between background and current frame diff = cv2.absdiff(bg.astype("uint8"), image) # threshold the diff image so that we get the foreground thresholded = cv2.threshold(diff, threshold, 255, cv2.THRESH_BINARY)[1] # get the contours in the thresholded image (_, cnts, _) = cv2.findContours(thresholded.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # return None, if no contours detected if len(cnts) == 0: return else: # based on contour area, get the maximum contour which is the hand segmented = max(cnts, key=cv2.contourArea) return (thresholded, segmented) #----------------- # MAIN FUNCTION #-----------------
Example #3
Source File: motion.py From object-detection with MIT License | 10 votes |
def prediction(self, image): image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) image = cv2.GaussianBlur(image, (21, 21), 0) if self.avg is None: self.avg = image.copy().astype(float) cv2.accumulateWeighted(image, self.avg, 0.5) frameDelta = cv2.absdiff(image, cv2.convertScaleAbs(self.avg)) thresh = cv2.threshold( frameDelta, DELTA_THRESH, 255, cv2.THRESH_BINARY)[1] thresh = cv2.dilate(thresh, None, iterations=2) cnts = cv2.findContours( thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) cnts = imutils.grab_contours(cnts) self.avg = image.copy().astype(float) return cnts
Example #4
Source File: squares.py From OpenCV-Python-Tutorial with MIT License | 9 votes |
def find_squares(img): img = cv2.GaussianBlur(img, (5, 5), 0) squares = [] for gray in cv2.split(img): for thrs in xrange(0, 255, 26): if thrs == 0: bin = cv2.Canny(gray, 0, 50, apertureSize=5) bin = cv2.dilate(bin, None) else: retval, bin = cv2.threshold(gray, thrs, 255, cv2.THRESH_BINARY) bin, contours, hierarchy = cv2.findContours(bin, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) for cnt in contours: cnt_len = cv2.arcLength(cnt, True) cnt = cv2.approxPolyDP(cnt, 0.02*cnt_len, True) if len(cnt) == 4 and cv2.contourArea(cnt) > 1000 and cv2.isContourConvex(cnt): cnt = cnt.reshape(-1, 2) max_cos = np.max([angle_cos( cnt[i], cnt[(i+1) % 4], cnt[(i+2) % 4] ) for i in xrange(4)]) if max_cos < 0.1: squares.append(cnt) return squares
Example #5
Source File: pycv2.py From vrequest with MIT License | 8 votes |
def canny(filepathname, left=70, right=140): v = cv2.imread(filepathname) s = cv2.cvtColor(v, cv2.COLOR_BGR2GRAY) s = cv2.Canny(s, left, right) cv2.imshow('nier',s) return s # 圈出最小方矩形框,这里Canny算法后都是白色线条,所以取色范围 127-255 即可。 # ret, binary = cv2.threshold(s,127,255,cv2.THRESH_BINARY) # contours, hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) # for c in contours: # x,y,w,h = cv2.boundingRect(c) # if w>5 and h>10: # 有约束的画框 # cv2.rectangle(v,(x,y),(x+w,y+h),(155,155,0),1) # # cv2.drawContours(s,contours,-1,(0,0,255),3) # 画所有框 # cv2.imshow('nier2',v) # cv2.waitKey() # cv2.destroyAllWindows()
Example #6
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 #7
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 #8
Source File: picam.py From PiCamNN with MIT License | 7 votes |
def movement(mat_1,mat_2): mat_1_gray = cv2.cvtColor(mat_1.copy(),cv2.COLOR_BGR2GRAY) mat_1_gray = cv2.blur(mat_1_gray,(blur1,blur1)) _,mat_1_gray = cv2.threshold(mat_1_gray,100,255,0) mat_2_gray = cv2.cvtColor(mat_2.copy(),cv2.COLOR_BGR2GRAY) mat_2_gray = cv2.blur(mat_2_gray,(blur1,blur1)) _,mat_2_gray = cv2.threshold(mat_2_gray,100,255,0) mat_2_gray = cv2.bitwise_xor(mat_1_gray,mat_2_gray) mat_2_gray = cv2.blur(mat_2_gray,(blur2,blur2)) _,mat_2_gray = cv2.threshold(mat_2_gray,70,255,0) mat_2_gray = cv2.erode(mat_2_gray,np.ones((erodeval,erodeval))) mat_2_gray = cv2.dilate(mat_2_gray,np.ones((4,4))) _, contours,__ = cv2.findContours(mat_2_gray,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) if len(contours) > 0:return True #If there were any movements return False #if not #Pedestrian Recognition Thread
Example #9
Source File: camera_test.py From crop_row_detection with GNU General Public License v3.0 | 7 votes |
def main(): capture = cv2.VideoCapture(0) _, image = capture.read() previous = image.copy() while (cv2.waitKey(1) < 0): _, image = capture.read() diff = cv2.absdiff(image, previous) #image = cv2.flip(image, 3) #image = cv2.norm(image) _, diff = cv2.threshold(diff, 32, 0, cv2.THRESH_TOZERO) _, diff = cv2.threshold(diff, 0, 255, cv2.THRESH_BINARY) diff = cv2.medianBlur(diff, 5) cv2.imshow('video', diff) previous = image.copy() capture.release() cv2.destroyAllWindows()
Example #10
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 #11
Source File: recognize.py From gesture-recognition with MIT License | 6 votes |
def segment(image, threshold=25): global bg # find the absolute difference between background and current frame diff = cv2.absdiff(bg.astype("uint8"), image) # threshold the diff image so that we get the foreground thresholded = cv2.threshold(diff, threshold, 255, cv2.THRESH_BINARY)[1] # get the contours in the thresholded image (_, cnts, _) = cv2.findContours(thresholded.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # return None, if no contours detected if len(cnts) == 0: return else: # based on contour area, get the maximum contour which is the hand segmented = max(cnts, key=cv2.contourArea) return (thresholded, segmented) #-------------------------------------------------------------- # To count the number of fingers in the segmented hand region #--------------------------------------------------------------
Example #12
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 #13
Source File: pycv2.py From vrequest with MIT License | 6 votes |
def sobel(filepathname): v = cv2.imread(filepathname) s = cv2.cvtColor(v,cv2.COLOR_BGR2GRAY) x, y = cv2.Sobel(s,cv2.CV_16S,1,0), cv2.Sobel(s,cv2.CV_16S,0,1) s = cv2.convertScaleAbs(cv2.subtract(x,y)) s = cv2.blur(s,(9,9)) cv2.imshow('nier',s) return s # ret, binary = cv2.threshold(s,40,255,cv2.THRESH_BINARY) # contours, hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) # for c in contours: # x,y,w,h = cv2.boundingRect(c) # if w>5 and h>10: # cv2.rectangle(v,(x,y),(x+w,y+h),(155,155,0),1) # cv2.imshow('nier2',v) # cv2.waitKey() # cv2.destroyAllWindows()
Example #14
Source File: predict.py From License-Plate-Recognition with MIT License | 6 votes |
def find_waves(threshold, histogram): up_point = -1#上升点 is_peak = False if histogram[0] > threshold: up_point = 0 is_peak = True wave_peaks = [] for i,x in enumerate(histogram): if is_peak and x < threshold: if i - up_point > 2: is_peak = False wave_peaks.append((up_point, i)) elif not is_peak and x >= threshold: is_peak = True up_point = i if is_peak and up_point != -1 and i - up_point > 4: wave_peaks.append((up_point, i)) return wave_peaks #根据找出的波峰,分隔图片,从而得到逐个字符图片
Example #15
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 #16
Source File: demo_segmentation.py From Text_Segmentation_Image_Inpainting with GNU General Public License v3.0 | 6 votes |
def process(eval_img, device='cpu'): (img, origin, unpadder), file_name = eval_img with torch.no_grad(): out = model(img.to(device)) prob = F.sigmoid(out) mask = prob > 0.5 mask = torch.nn.MaxPool2d(kernel_size=(3, 3), padding=(1, 1), stride=1)(mask.float()).byte() mask = unpadder(mask) mask = mask.float().cpu() save_image(mask, file_name + ' _mask.jpg') origin_np = np.array(to_pil_image(origin[0])) mask_np = to_pil_image(mask[0]).convert("L") mask_np = np.array(mask_np, dtype='uint8') mask_np = draw_bounding_box(origin_np, mask_np, 500) mask_ = Image.fromarray(mask_np) mask_.save(file_name + "_contour.jpg") # ret, mask_np = cv2.threshold(mask_np, 127, 255, 0) # dst = cv2.inpaint(origin_np, mask_np, 1, cv2.INPAINT_NS) # out = Image.fromarray(dst) # out.save(file_name + ' _box.jpg')
Example #17
Source File: Grouping.py From CSGNet with MIT License | 6 votes |
def tightboundingbox(self, image): ret, thresh = cv2.threshold(np.array(image, dtype=np.uint8), 0, 255, 0) im2, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) bb = [] for c in contours: x, y, w, h = cv2.boundingRect(c) # +1 is done to encapsulate entire figure w += 2 h += 2 x -= 1 y -= 1 x = np.max([0, x]) y = np.max([0, y]) bb.append([y, x, w, h]) bb = self.nms(bb) return bb
Example #18
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 #19
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 #20
Source File: helpers.py From hazymaze with Apache License 2.0 | 6 votes |
def blend_non_transparent(sprite, background_img): gray_overlay = cv2.cvtColor(background_img, cv2.COLOR_BGR2GRAY) overlay_mask = cv2.threshold(gray_overlay, 1, 255, cv2.THRESH_BINARY)[1] overlay_mask = cv2.erode(overlay_mask, cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3, 3))) overlay_mask = cv2.blur(overlay_mask, (3, 3)) background_mask = 255 - overlay_mask overlay_mask = cv2.cvtColor(overlay_mask, cv2.COLOR_GRAY2BGR) background_mask = cv2.cvtColor(background_mask, cv2.COLOR_GRAY2BGR) sprite_part = (sprite * (1 / 255.0)) * (background_mask * (1 / 255.0)) overlay_part = (background_img * (1 / 255.0)) * (overlay_mask * (1 / 255.0)) return np.uint8(cv2.addWeighted(sprite_part, 255.0, overlay_part, 255.0, 0.0))
Example #21
Source File: motion_detection.py From pynvr with BSD 3-Clause "New" or "Revised" License | 5 votes |
def __init__(self): MotionDetectorBase.__init__(self) self.threshold = 8
Example #22
Source File: size_detector.py From gaps with MIT License | 5 votes |
def _filter_image(self, image): _, thresh = cv2.threshold(image, 200, 255, cv2.THRESH_BINARY) opened = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, (5, 5), iterations=3) return cv2.bitwise_not(opened)
Example #23
Source File: motion.py From pygta5 with GNU General Public License v3.0 | 5 votes |
def motion_detection(t_minus, t_now, t_plus): delta_view = delta_images(t_minus, t_now, t_plus) retval, delta_view = cv2.threshold(delta_view, 16, 255, 3) cv2.normalize(delta_view, delta_view, 0, 255, cv2.NORM_MINMAX) img_count_view = cv2.cvtColor(delta_view, cv2.COLOR_RGB2GRAY) delta_count = cv2.countNonZero(img_count_view) dst = cv2.addWeighted(screen,1.0, delta_view,0.6,0) delta_count_last = delta_count return delta_count
Example #24
Source File: mouse_and_match.py From OpenCV-Python-Tutorial with MIT License | 5 votes |
def onmouse(event, x, y, flags, param): global drag_start, sel if event == cv2.EVENT_LBUTTONDOWN: drag_start = x, y sel = 0,0,0,0 elif event == cv2.EVENT_LBUTTONUP: if sel[2] > sel[0] and sel[3] > sel[1]: patch = gray[sel[1]:sel[3],sel[0]:sel[2]] result = cv2.matchTemplate(gray,patch,cv2.TM_CCOEFF_NORMED) result = np.abs(result)**3 val, result = cv2.threshold(result, 0.01, 0, cv2.THRESH_TOZERO) result8 = cv2.normalize(result,None,0,255,cv2.NORM_MINMAX,cv2.CV_8U) cv2.imshow("result", result8) drag_start = None elif drag_start: #print flags if flags & cv2.EVENT_FLAG_LBUTTON: minpos = min(drag_start[0], x), min(drag_start[1], y) maxpos = max(drag_start[0], x), max(drag_start[1], y) sel = minpos[0], minpos[1], maxpos[0], maxpos[1] img = cv2.cvtColor(gray, cv2.COLOR_GRAY2BGR) cv2.rectangle(img, (sel[0], sel[1]), (sel[2], sel[3]), (0,255,255), 1) cv2.imshow("gray", img) else: print("selection is complete") drag_start = None
Example #25
Source File: motion.py From pygta5 with GNU General Public License v3.0 | 5 votes |
def motion_detection(t_minus, t_now, t_plus): delta_view = delta_images(t_minus, t_now, t_plus) retval, delta_view = cv2.threshold(delta_view, 16, 255, 3) cv2.normalize(delta_view, delta_view, 0, 255, cv2.NORM_MINMAX) img_count_view = cv2.cvtColor(delta_view, cv2.COLOR_RGB2GRAY) delta_count = cv2.countNonZero(img_count_view) dst = cv2.addWeighted(screen,1.0, delta_view,0.6,0) delta_count_last = delta_count return delta_count
Example #26
Source File: process_image.py From RealTime-DigitRecognition with GNU General Public License v3.0 | 5 votes |
def get_output_image(path): img = cv2.imread(path,2) img_org = cv2.imread(path) ret,thresh = cv2.threshold(img,127,255,0) im2,contours,hierarchy = cv2.findContours(thresh, cv2.RETR_CCOMP, cv2.CHAIN_APPROX_SIMPLE) for j,cnt in enumerate(contours): epsilon = 0.01*cv2.arcLength(cnt,True) approx = cv2.approxPolyDP(cnt,epsilon,True) hull = cv2.convexHull(cnt) k = cv2.isContourConvex(cnt) x,y,w,h = cv2.boundingRect(cnt) if(hierarchy[0][j][3]!=-1 and w>10 and h>10): #putting boundary on each digit cv2.rectangle(img_org,(x,y),(x+w,y+h),(0,255,0),2) #cropping each image and process roi = img[y:y+h, x:x+w] roi = cv2.bitwise_not(roi) roi = image_refiner(roi) th,fnl = cv2.threshold(roi,127,255,cv2.THRESH_BINARY) # getting prediction of cropped image pred = predict_digit(roi) print(pred) # placing label on each digit (x,y),radius = cv2.minEnclosingCircle(cnt) img_org = put_label(img_org,pred,x,y) return img_org
Example #27
Source File: plate_locate.py From EasyPR-python with Apache License 2.0 | 5 votes |
def sobelOper(self, img, blursize, morphW, morphH): 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, ksize=3, scale=1, delta=0, borderType=cv2.BORDER_DEFAULT) 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 #28
Source File: motion.py From pygta5 with GNU General Public License v3.0 | 5 votes |
def motion_detection(t_minus, t_now, t_plus): delta_view = delta_images(t_minus, t_now, t_plus) retval, delta_view = cv2.threshold(delta_view, 16, 255, 3) cv2.normalize(delta_view, delta_view, 0, 255, cv2.NORM_MINMAX) img_count_view = cv2.cvtColor(delta_view, cv2.COLOR_RGB2GRAY) delta_count = cv2.countNonZero(img_count_view) dst = cv2.addWeighted(screen,1.0, delta_view,0.6,0) delta_count_last = delta_count return delta_count
Example #29
Source File: rodent.py From rodent with MIT License | 5 votes |
def motion_detection(camera, folder, until): """ Uses 3 frames to look for motion, can't remember where I found it but it gives better result than my first try with comparing 2 frames. """ utils.clear_directory(folder) # Need to get 2 images to start with previous_image = cv2.cvtColor(camera.read()[1], cv2.cv.CV_RGB2GRAY) current_image = cv2.cvtColor(camera.read()[1], cv2.cv.CV_RGB2GRAY) purple = (140, 25, 71) while True: now = datetime.datetime.now() _, image = camera.read() gray_image = cv2.cvtColor(image, cv2.cv.CV_RGB2GRAY) difference1 = cv2.absdiff(previous_image, gray_image) difference2 = cv2.absdiff(current_image, gray_image) result = cv2.bitwise_and(difference1, difference2) # Basic threshold, turn the bitwise_and into a black or white (haha) # result, white (255) being a motion _, result = cv2.threshold(result, 40, 255, cv2.THRESH_BINARY) # Let's show a square around the detected motion in the original pic low_point, high_point = utils.find_motion_boundaries(result.tolist()) if low_point is not None and high_point is not None: cv2.rectangle(image, low_point, high_point, purple, 3) print 'Motion detected ! Taking picture' utils.save_image(image, folder, now) previous_image = current_image current_image = gray_image if utils.time_over(until, now): break del(camera)
Example #30
Source File: DetectChars.py From ALPR-Indonesia with MIT License | 5 votes |
def recognizeCharsInPlate(imgThresh, listOfMatchingChars): strChars = "" # this will be the return value, the chars in the lic plate height, width = imgThresh.shape imgThreshColor = np.zeros((height, width, 3), np.uint8) listOfMatchingChars.sort(key = lambda matchingChar: matchingChar.intCenterX) # sort chars from left to right cv2.cvtColor(imgThresh, cv2.COLOR_GRAY2BGR, imgThreshColor) # make color version of threshold image so we can draw contours in color on it for currentChar in listOfMatchingChars: # for each char in plate pt1 = (currentChar.intBoundingRectX, currentChar.intBoundingRectY) pt2 = ((currentChar.intBoundingRectX + currentChar.intBoundingRectWidth), (currentChar.intBoundingRectY + currentChar.intBoundingRectHeight)) cv2.rectangle(imgThreshColor, pt1, pt2, Main.SCALAR_GREEN, 2) # draw green box around the char # crop char out of threshold image imgROI = imgThresh[currentChar.intBoundingRectY : currentChar.intBoundingRectY + currentChar.intBoundingRectHeight, currentChar.intBoundingRectX : currentChar.intBoundingRectX + currentChar.intBoundingRectWidth] imgROIResized = cv2.resize(imgROI, (RESIZED_CHAR_IMAGE_WIDTH, RESIZED_CHAR_IMAGE_HEIGHT)) # resize image, this is necessary for char recognition npaROIResized = imgROIResized.reshape((1, RESIZED_CHAR_IMAGE_WIDTH * RESIZED_CHAR_IMAGE_HEIGHT)) # flatten image into 1d numpy array npaROIResized = np.float32(npaROIResized) # convert from 1d numpy array of ints to 1d numpy array of floats retval, npaResults, neigh_resp, dists = kNearest.findNearest(npaROIResized, k = 1) # finally we can call findNearest !!! strCurrentChar = str(chr(int(npaResults[0][0]))) # get character from results strChars = strChars + strCurrentChar # append current char to full string # end for return strChars # end function