Python cv2.TERM_CRITERIA_EPS Examples
The following are 30
code examples of cv2.TERM_CRITERIA_EPS().
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: k_means_color_quantization.py From Mastering-OpenCV-4-with-Python with MIT License | 10 votes |
def color_quantization(image, k): """Performs color quantization using K-means clustering algorithm""" # Transform image into 'data': data = np.float32(image).reshape((-1, 3)) # print(data.shape) # Define the algorithm termination criteria (the maximum number of iterations and/or the desired accuracy): # In this case the maximum number of iterations is set to 20 and epsilon = 1.0 criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 20, 1.0) # Apply K-means clustering algorithm: ret, label, center = cv2.kmeans(data, k, None, criteria, 10, cv2.KMEANS_RANDOM_CENTERS) # At this point we can make the image with k colors # Convert center to uint8: center = np.uint8(center) # Replace pixel values with their center value: result = center[label.flatten()] result = result.reshape(img.shape) return result # Create the dimensions of the figure and set title:
Example #2
Source File: models.py From rainymotion with MIT License | 7 votes |
def __init__(self): self.of_params = {'st_pars': dict(maxCorners=200, qualityLevel=0.2, minDistance=7, blockSize=21), 'lk_pars': dict(winSize=(20, 20), maxLevel=2, criteria=(cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10, 0))} self.extrapolation = "linear" self.warper = "affine" self.input_data = None self.scaler = RYScaler self.inverse_scaler = inv_RYScaler self.lead_steps = 12
Example #3
Source File: markerfunctions.py From SaltwashAR with GNU General Public License v3.0 | 7 votes |
def get_vectors(image, points, mtx, dist): # order points points = _order_points(points) # set up criteria, image, points and axis criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001) gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) imgp = np.array(points, dtype='float32') objp = np.array([[0.,0.,0.],[1.,0.,0.], [1.,1.,0.],[0.,1.,0.]], dtype='float32') # calculate rotation and translation vectors cv2.cornerSubPix(gray,imgp,(11,11),(-1,-1),criteria) rvecs, tvecs, _ = cv2.solvePnPRansac(objp, imgp, mtx, dist) return rvecs, tvecs
Example #4
Source File: main.py From python-turtle-draw-svg with GNU General Public License v3.0 | 7 votes |
def drawBitmap(w_image): print('Reducing the colors...') Z = w_image.reshape((-1, 3)) # convert to np.float32 Z = np.float32(Z) # define criteria, number of clusters(K) and apply kmeans() criteria = (cv2.TERM_CRITERIA_EPS, 10, 1.0) global K ret, label, center = cv2.kmeans( Z, K, None, criteria, 10, cv2.KMEANS_RANDOM_CENTERS) # Now convert back into uint8, and make original image center = np.uint8(center) res = center[label.flatten()] res = res.reshape(w_image.shape) no = 1 for i in center: sys.stdout.write('\rDrawing: %.2f%% [' % ( no / K * 100) + '#' * no + ' ' * (K - no) + ']') no += 1 res2 = cv2.inRange(res, i, i) res2 = cv2.bitwise_not(res2) cv2.imwrite('.tmp.bmp', res2) os.system('potrace.exe .tmp.bmp -s --flat') # print(i) drawSVG('.tmp.svg', '#%02x%02x%02x' % (i[2], i[1], i[0])) os.remove('.tmp.bmp') os.remove('.tmp.svg') print('\n\rFinished, close the window to exit.') te.done()
Example #5
Source File: inklings_tracker.py From IkaLog with Apache License 2.0 | 7 votes |
def _detect_team_color(self, pixels): criteria = \ (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0) pixels = np.array(pixels.reshape((-1, 3)), dtype=np.float32) ret, label, center = cv2.kmeans( pixels, 2, None, criteria, 10, cv2.KMEANS_RANDOM_CENTERS) # one is black, another is the team color. colors = np.array(center, dtype=np.uint8).reshape((1, 2, 3)) colors_hsv = cv2.cvtColor(colors, cv2.COLOR_BGR2HSV) x = np.argmax(colors_hsv[:, :, 2]) team_color_bgr = colors[0, x, :] team_color_hsv = colors_hsv[0, x, :] return { 'rgb': cv2.cvtColor(colors, cv2.COLOR_BGR2RGB).tolist()[0][x], 'hsv': cv2.cvtColor(colors, cv2.COLOR_BGR2HSV).tolist()[0][x], }
Example #6
Source File: ml.py From HUAWEIOCR-2019 with MIT License | 6 votes |
def kmeans(samples, k, criteria = None, attempts = 3, flags = None): import cv2 if flags == None: flags = cv2.KMEANS_RANDOM_CENTERS if criteria == None: criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0) samples = np.asarray(samples, dtype = np.float32) _,labels,centers = cv2.kmeans(samples, k, criteria, attempts, flags) labels = util.np.flatten(labels) clusters = [None]*k for idx, label in enumerate(labels): if clusters[label] is None: clusters[label] = [] clusters[label].append(idx) for idx, cluster in enumerate(clusters): if cluster == None: logging.warn('Empty cluster appeared.') clusters[idx] = [] return labels, clusters, centers
Example #7
Source File: tracking.py From OpenCV-Computer-Vision-Projects-with-Python with MIT License | 6 votes |
def __init__(self, min_area=400, min_shift2=5): """Constructor This method initializes the multiple-objects tracking algorithm. :param min_area: Minimum area for a proto-object contour to be considered a real object :param min_shift2: Minimum distance for a proto-object to drift from frame to frame ot be considered a real object """ self.object_roi = [] self.object_box = [] self.min_cnt_area = min_area self.min_shift2 = min_shift2 # Setup the termination criteria, either 100 iteration or move by at # least 1 pt self.term_crit = (cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 100, 1)
Example #8
Source File: marker.py From BAR4Py with MIT License | 6 votes |
def calculateCorners(self, gray, points=None): ''' gray is OpenCV gray image, points is Marker.points >>> marker.calculateCorners(gray) >>> print(marker.corners) ''' if points is None: points = self.points if points is None: raise TypeError('calculateCorners need a points value') ''' rotations = 0 -> 0,1,2,3 rotations = 1 -> 3,0,1,2 rotations = 2 -> 2,3,0,1 rotations = 3 -> 1,2,3,0 => A: 1,0,3,2; B: 0,3,2,1; C: 2,1,0,3; D: 3,2,1,0 ''' i = self.rotations A = (1,0,3,2)[i]; B = (0,3,2,1)[i]; C = (2,1,0,3)[i]; D = (3,2,1,0)[i] corners = np.float32([points[A], points[B], points[C], points[D]]) criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.1) self.corners = cv2.cornerSubPix(gray, corners, (5,5), (-1,-1), criteria)
Example #9
Source File: marker.py From BAR4Py with MIT License | 6 votes |
def calculateCorners(self, gray, points=None): ''' gray is OpenCV gray image, points is Marker.points >>> marker.calculateCorners(gray) >>> print(marker.corners) ''' if points is None: points = self.points if points is None: raise TypeError('calculateCorners need a points value') ''' rotations = 0 -> 0,1,2,3 rotations = 1 -> 3,0,1,2 rotations = 2 -> 2,3,0,1 rotations = 3 -> 1,2,3,0 => A: 1,0,3,2; B: 0,3,2,1; C: 2,1,0,3; D: 3,2,1,0 ''' i = self.rotations A = (1,0,3,2)[i]; B = (0,3,2,1)[i]; C = (2,1,0,3)[i]; D = (3,2,1,0)[i] corners = np.float32([points[A], points[B], points[C], points[D]]) criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.1) self.corners = cv2.cornerSubPix(gray, corners, (5,5), (-1,-1), criteria)
Example #10
Source File: marker.py From BAR4Py with MIT License | 6 votes |
def calculateCorners(self, gray, points=None): ''' gray is OpenCV gray image, points is Marker.points >>> marker.calculateCorners(gray) >>> print(marker.corners) ''' if points is None: points = self.points if points is None: raise TypeError('calculateCorners need a points value') ''' rotations = 0 -> 0,1,2,3 rotations = 1 -> 3,0,1,2 rotations = 2 -> 2,3,0,1 rotations = 3 -> 1,2,3,0 => A: 1,0,3,2; B: 0,3,2,1; C: 2,1,0,3; D: 3,2,1,0 ''' i = self.rotations A = (1,0,3,2)[i]; B = (0,3,2,1)[i]; C = (2,1,0,3)[i]; D = (3,2,1,0)[i] corners = np.float32([points[A], points[B], points[C], points[D]]) criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.1) self.corners = cv2.cornerSubPix(gray, corners, (5,5), (-1,-1), criteria)
Example #11
Source File: marker.py From BAR4Py with MIT License | 6 votes |
def calculateCorners(self, gray, points=None): ''' gray is OpenCV gray image, points is Marker.points >>> marker.calculateCorners(gray) >>> print(marker.corners) ''' if points is None: points = self.points if points is None: raise TypeError('calculateCorners need a points value') ''' rotations = 0 -> 0,1,2,3 rotations = 1 -> 3,0,1,2 rotations = 2 -> 2,3,0,1 rotations = 3 -> 1,2,3,0 => A: 1,0,3,2; B: 0,3,2,1; C: 2,1,0,3; D: 3,2,1,0 ''' i = self.rotations A = (1,0,3,2)[i]; B = (0,3,2,1)[i]; C = (2,1,0,3)[i]; D = (3,2,1,0)[i] corners = np.float32([points[A], points[B], points[C], points[D]]) criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.1) self.corners = cv2.cornerSubPix(gray, corners, (5,5), (-1,-1), criteria)
Example #12
Source File: tracking.py From pi-tracking-telescope with MIT License | 6 votes |
def __init__(self, piscopeController): Thread.__init__(self) self.mutex = Lock() self.piscopeController = piscopeController self.setDaemon(True) # terminate on exit self.status = "Initial" self.reset() self.lk_params = dict( winSize = (15, 15), maxLevel = 2, criteria = (cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10, 0.03)) self.feature_params = dict( maxCorners = 5, qualityLevel = 0.3, minDistance = 7, blockSize = 7 )
Example #13
Source File: tracker.py From tracking_wo_bnw with GNU General Public License v3.0 | 6 votes |
def align(self, blob): """Aligns the positions of active and inactive tracks depending on camera motion.""" if self.im_index > 0: im1 = np.transpose(self.last_image.cpu().numpy(), (1, 2, 0)) im2 = np.transpose(blob['img'][0].cpu().numpy(), (1, 2, 0)) im1_gray = cv2.cvtColor(im1, cv2.COLOR_RGB2GRAY) im2_gray = cv2.cvtColor(im2, cv2.COLOR_RGB2GRAY) warp_matrix = np.eye(2, 3, dtype=np.float32) criteria = (cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, self.number_of_iterations, self.termination_eps) cc, warp_matrix = cv2.findTransformECC(im1_gray, im2_gray, warp_matrix, self.warp_mode, criteria) warp_matrix = torch.from_numpy(warp_matrix) for t in self.tracks: t.pos = warp_pos(t.pos, warp_matrix) # t.pos = clip_boxes(Variable(pos), blob['im_info'][0][:2]).data if self.do_reid: for t in self.inactive_tracks: t.pos = warp_pos(t.pos, warp_matrix) if self.motion_model_cfg['enabled']: for t in self.tracks: for i in range(len(t.last_pos)): t.last_pos[i] = warp_pos(t.last_pos[i], warp_matrix)
Example #14
Source File: vo.py From Monocular-Visual-Inertial-Odometry with MIT License | 6 votes |
def feature_tracking(img1,img2, points1,points2,status): #track matching features err = np.array([]) winSize = (15,15) maxLevel = 3 termcriteria = (cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 30, 0.01)) cv2.calcOpticalFlowPyrLK(img1, img2, points1, points2, status, err, winSize, maxLevel, termcriteria, 0, 0.001) indexcorrection = 0 #remove bad points for i in range(len(status)): pt = points2[i - indexcorrection] if (status[i]==0 or pt[0,0]<0 or pt[0,1]<0): if pt[0,0]<0 or pt[0,1]<0: status[i]=0 np.delete(points1, i-indexcorrection) np.delete(points2, i-indexcorrection) indexcorrection+=1
Example #15
Source File: models.py From rainymotion with MIT License | 6 votes |
def __init__(self): self.of_params = {'st_pars': dict(maxCorners=200, qualityLevel=0.2, minDistance=7, blockSize=21), 'lk_pars': dict(winSize=(20, 20), maxLevel=2, criteria=(cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10, 0))} self.extrapolation = "simple_delta" self.warper = "affine" self.input_data = None self.scaler = RYScaler self.inverse_scaler = inv_RYScaler self.lead_steps = 12
Example #16
Source File: ml.py From HUAWEIOCR-2019 with MIT License | 6 votes |
def kmeans(samples, k, criteria = None, attempts = 3, flags = None): import cv2 if flags == None: flags = cv2.KMEANS_RANDOM_CENTERS if criteria == None: criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0) samples = np.asarray(samples, dtype = np.float32) _,labels,centers = cv2.kmeans(samples, k, criteria, attempts, flags) labels = util.np.flatten(labels) clusters = [None]*k for idx, label in enumerate(labels): if clusters[label] is None: clusters[label] = [] clusters[label].append(idx) for idx, cluster in enumerate(clusters): if cluster == None: logging.warn('Empty cluster appeared.') clusters[idx] = [] return labels, clusters, centers
Example #17
Source File: ml.py From HUAWEIOCR-2019 with MIT License | 6 votes |
def kmeans(samples, k, criteria = None, attempts = 3, flags = None): import cv2 if flags == None: flags = cv2.KMEANS_RANDOM_CENTERS if criteria == None: criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0) samples = np.asarray(samples, dtype = np.float32) _,labels,centers = cv2.kmeans(samples, k, criteria, attempts, flags) labels = util.np.flatten(labels) clusters = [None]*k for idx, label in enumerate(labels): if clusters[label] is None: clusters[label] = [] clusters[label].append(idx) for idx, cluster in enumerate(clusters): if cluster == None: logging.warn('Empty cluster appeared.') clusters[idx] = [] return labels, clusters, centers
Example #18
Source File: k_means.py From Image-stitcher with MIT License | 5 votes |
def k_means(points: np.ndarray): """返回一个数组经kmeans分类后的k值以及标签,k值由计算拐点给出 Args: points (np.ndarray): 需分类数据 Returns: Tuple[int, np.ndarry]: k值以及标签数组 """ # Define criteria = ( type, max_iter = 10 , epsilon = 1.0 ) criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0) # Set flags (Just to avoid line break in the code) flags = cv2.KMEANS_RANDOM_CENTERS length = [] max_k = min(10, points.shape[0]) for k in range(2, max_k + 1): avg = 0 for i in range(5): compactness, _, _ = cv2.kmeans( points, k, None, criteria, 10, flags) avg += compactness avg /= 5 length.append(avg) peek_pos = find_peek(length) k = peek_pos + 2 # print(k) return k, cv2.kmeans(points, k, None, criteria, 10, flags)[1] # labels
Example #19
Source File: optical_flow.py From UE4PyServer with MIT License | 5 votes |
def __init__(self): # Parameters for lucas kanade optical flow self.lk_params = dict( winSize = (15,15), maxLevel = 1, criteria = (cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10, 0.08)) # Create some random colors self.color = np.random.randint(0,255,(2000,3)) self.old_gray=None self.old_frame=None self.p0=self.p1=None self.initial_state=None
Example #20
Source File: synthetic_util.py From SCCvSD with BSD 2-Clause "Simplified" License | 5 votes |
def find_transform(im_src, im_dst): warp = np.eye(3, dtype=np.float32) criteria = (cv.TERM_CRITERIA_EPS | cv.TERM_CRITERIA_COUNT, 50, 0.001) try: _, warp = cv.findTransformECC(im_src, im_dst, warp, cv.MOTION_HOMOGRAPHY, criteria) except: print('Warning: find transform failed. Set warp as identity') return warp
Example #21
Source File: camshift.py From PyCV-time with MIT License | 5 votes |
def run(self): while True: ret, self.frame = self.cam.read() vis = self.frame.copy() hsv = cv2.cvtColor(self.frame, cv2.COLOR_BGR2HSV) mask = cv2.inRange(hsv, np.array((0., 60., 32.)), np.array((180., 255., 255.))) if self.selection: x0, y0, x1, y1 = self.selection self.track_window = (x0, y0, x1-x0, y1-y0) hsv_roi = hsv[y0:y1, x0:x1] mask_roi = mask[y0:y1, x0:x1] hist = cv2.calcHist( [hsv_roi], [0], mask_roi, [16], [0, 180] ) cv2.normalize(hist, hist, 0, 255, cv2.NORM_MINMAX); self.hist = hist.reshape(-1) self.show_hist() vis_roi = vis[y0:y1, x0:x1] cv2.bitwise_not(vis_roi, vis_roi) vis[mask == 0] = 0 if self.tracking_state == 1: self.selection = None prob = cv2.calcBackProject([hsv], [0], self.hist, [0, 180], 1) prob &= mask term_crit = ( cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10, 1 ) track_box, self.track_window = cv2.CamShift(prob, self.track_window, term_crit) if self.show_backproj: vis[:] = prob[...,np.newaxis] try: cv2.ellipse(vis, track_box, (0, 0, 255), 2) except: print track_box cv2.imshow('camshift', vis) ch = 0xFF & cv2.waitKey(5) if ch == 27: break if ch == ord('b'): self.show_backproj = not self.show_backproj cv2.destroyAllWindows()
Example #22
Source File: calibration.py From StereoVision with GNU General Public License v3.0 | 5 votes |
def _get_corners(self, image): """Find subpixel chessboard corners in image.""" temp = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) ret, corners = cv2.findChessboardCorners(temp, (self.rows, self.columns)) if not ret: raise ChessboardNotFoundError("No chessboard could be found.") cv2.cornerSubPix(temp, corners, (11, 11), (-1, -1), (cv2.TERM_CRITERIA_MAX_ITER + cv2.TERM_CRITERIA_EPS, 30, 0.01)) return corners
Example #23
Source File: test_monkey.py From ATX with Apache License 2.0 | 5 votes |
def test_kmeans(img): ## K均值聚类 z = img.reshape((-1, 3)) z = np.float32(z) criteria = (cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0) ret, label, center = cv2.kmeans(z, 20, criteria, 10, cv2.KMEANS_RANDOM_CENTERS) center = np.uint8(center) res = center[label.flatten()] res2 = res.reshape((img.shape)) cv2.imshow('preview', res2) cv2.waitKey()
Example #24
Source File: test_monkey.py From ATX with Apache License 2.0 | 5 votes |
def test_features(): from atx.drivers.android_minicap import AndroidDeviceMinicap cv2.namedWindow("preview") d = AndroidDeviceMinicap() # r, h, c, w = 200, 100, 200, 100 # track_window = (c, r, w, h) # oldimg = cv2.imread('base1.png') # roi = oldimg[r:r+h, c:c+w] # hsv_roi = cv2.cvtColor(roi, cv2.COLOR_BGR2HSV) # mask = cv2.inRange(hsv_roi, 0, 255) # roi_hist = cv2.calcHist([hsv_roi], [0], mask, [180], [0,180]) # cv2.normalize(roi_hist, roi_hist, 0, 255, cv2.NORM_MINMAX) # term_cirt = (cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10, 1) while True: try: w, h = d._screen.shape[:2] img = cv2.resize(d._screen, (h/2, w/2)) cv2.imshow('preview', img) hist = cv2.calcHist([img], [0], None, [256], [0,256]) plt.plot(plt.hist(hist.ravel(), 256)) plt.show() # if img.shape == oldimg.shape: # # hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV) # # ret, track_window = cv2.meanShift(hsv, track_window, term_cirt) # # x, y, w, h = track_window # cv2.rectangle(img, (x, y), (x+w, y+h), 255, 2) # cv2.imshow('preview', img) # # cv2.imshow('preview', img) cv2.waitKey(1) except KeyboardInterrupt: break cv2.destroyWindow('preview')
Example #25
Source File: filter.py From Walk-Assistant with GNU General Public License v3.0 | 5 votes |
def color_quantization(img, n_cluster, iteration, epsilon=1.0): Z = img.reshape((-1, 3)) Z = np.float32(Z) criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, iteration, epsilon) ret, label, center = cv2.kmeans(Z, n_cluster, None, criteria, iteration, cv2.KMEANS_PP_CENTERS) labels = label.reshape((img.shape[0], img.shape[1], 1)) # center = np.uint(center) # visual = center[label.flatten()] # visual = visual.reshape(img.shape) # visual = np.uint8(visual) return labels
Example #26
Source File: 3D_Cube.py From PyCV-time with MIT License | 5 votes |
def cube(img): #img_in = cv2.imread("Picture 27.jpg") #img = cv2.resize(img_in,None,fx=0.5, fy=0.5, interpolation = cv2.INTER_CUBIC) #cv2.imshow('img',img) gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #cv2.imshow('gray',gray) ret, corners = cv2.findChessboardCorners(gray, (8,7),None) # print ret,corners criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001) objp = np.zeros((7*8,3), np.float32) objp[:,:2] = np.mgrid[0:8,0:7].T.reshape(-1,2) #axis = np.float32([[3,0,0], [0,3,0], [0,0,-3]]).reshape(-1,3) axis = np.float32([[0,0,0], [0,3,0], [3,3,0], [3,0,0], [0,0,-3],[0,3,-3],[3,3,-3],[3,0,-3] ]) if ret == True: cv2.cornerSubPix(gray,corners,(11,11),(-1,-1),criteria) # Find the rotation and translation vectors. rvecs, tvecs, inliers = cv2.solvePnPRansac(objp, corners, mtx, dist) # project 3D points to image plane imgpts, jac = cv2.projectPoints(axis, rvecs, tvecs, mtx, dist) #print imgpts img = draw2(img,corners,imgpts) return img
Example #27
Source File: coregistration.py From eo-learn with MIT License | 5 votes |
def register(self, src, trg, trg_mask=None, src_mask=None): """ Implementation of pair-wise registration and warping using Enhanced Correlation Coefficient This function estimates an Euclidean transformation (x,y translation + rotation) using the intensities of the pair of images to be registered. The similarity metric is a modification of the cross-correlation metric, which is invariant to distortions in contrast and brightness. :param src: 2D single channel source moving image :param trg: 2D single channel target reference image :param trg_mask: Mask of target image. Not used in this method. :param src_mask: Mask of source image. Not used in this method. :return: Estimated 2D transformation matrix of shape 2x3 """ # Parameters of registration warp_mode = cv2.MOTION_EUCLIDEAN # Specify the threshold of the increment # in the correlation coefficient between two iterations termination_eps = 1e-10 # Define termination criteria criteria = (cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, self.params['MaxIters'], termination_eps) # Initialise warp matrix warp_matrix = np.eye(2, 3, dtype=np.float32) # Run the ECC algorithm. The results are stored in warp_matrix. _, warp_matrix = cv2.findTransformECC(src.astype(np.float32), trg.astype(np.float32), warp_matrix, warp_mode, criteria, None, self.params['gaussFiltSize']) return warp_matrix
Example #28
Source File: feature_tracker.py From pyslam with GNU General Public License v3.0 | 5 votes |
def __init__(self, num_features=kMinNumFeatureDefault, num_levels = 3, # number of pyramid levels for detector scale_factor = 1.2, # detection scale factor (if it can be set, otherwise it is automatically computed) detector_type = FeatureDetectorTypes.FAST, descriptor_type = FeatureDescriptorTypes.NONE, match_ratio_test = kRatioTest, tracker_type = FeatureTrackerTypes.LK): super().__init__(num_features=num_features, num_levels=num_levels, scale_factor=scale_factor, detector_type=detector_type, descriptor_type=descriptor_type, tracker_type=tracker_type) self.feature_manager = feature_manager_factory(num_features=num_features, num_levels=num_levels, scale_factor=scale_factor, detector_type=detector_type, descriptor_type=descriptor_type) #if num_levels < 3: # Printer.green('LkFeatureTracker: forcing at least 3 levels on LK pyr optic flow') # num_levels = 3 optic_flow_num_levels = max(kLkPyrOpticFlowNumLevelsMin,num_levels) Printer.green('LkFeatureTracker: num levels on LK pyr optic flow: ', optic_flow_num_levels) # we use LK pyr optic flow for matching self.lk_params = dict(winSize = (21, 21), maxLevel = optic_flow_num_levels, criteria = (cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 30, 0.01)) # out: keypoints and empty descriptors
Example #29
Source File: img_util.py From CvStudio with MIT License | 5 votes |
def kmeans(array: np.ndarray, k: int = 3): n_channels = 3 if len(np.shape(array)) == 3 else 1 arr_values = array.reshape((-1, n_channels)) arr_values = np.float32(arr_values) criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 100, 0.2) _, labels, (centers) = cv2.kmeans(arr_values, k, None, criteria, 10, cv2.KMEANS_RANDOM_CENTERS) centers = np.uint8(centers) clustered_arr = centers[labels.flatten()] clustered_arr = clustered_arr.reshape(array.shape) return clustered_arr
Example #30
Source File: optical_flow_tracker.py From face_landmark_dnn with MIT License | 5 votes |
def __init__(self): self.track_len = 5 self.tracks = [] self.lk_params = dict(winSize=(15, 15), maxLevel=2, criteria=(cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10, 0.03)) self.feature_params = dict(maxCorners=500, qualityLevel=0.3, minDistance=7, blockSize=7)