Python cv2.Sobel() Examples
The following are 30
code examples of cv2.Sobel().
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: spfunctions.py From spfeas with MIT License | 6 votes |
def get_mag_ang(img): """ Gets image gradient (magnitude) and orientation (angle) Args: img Returns: Gradient, orientation """ img = np.sqrt(img) gx = cv2.Sobel(np.float32(img), cv2.CV_32F, 1, 0) gy = cv2.Sobel(np.float32(img), cv2.CV_32F, 0, 1) mag, ang = cv2.cartToPolar(gx, gy) return mag, ang, gx, gy
Example #3
Source File: image_process.py From Advanced_Lane_Lines with MIT License | 6 votes |
def color_grid_thresh(img, s_thresh=(170,255), sx_thresh=(20, 100)): img = np.copy(img) # Convert to HLS color space and separate the V channel hls = cv2.cvtColor(img, cv2.COLOR_RGB2HLS) l_channel = hls[:,:,1] s_channel = hls[:,:,2] # Sobel x sobelx = cv2.Sobel(l_channel, cv2.CV_64F, 1, 0) # Take the derivateive in x abs_sobelx = np.absolute(sobelx) # Absolute x derivateive to accentuate lines scaled_sobel = np.uint8(255*abs_sobelx/np.max(abs_sobelx)) # Threshold x gradient sxbinary = np.zeros_like(scaled_sobel) sxbinary[(scaled_sobel >= sx_thresh[0]) & (scaled_sobel <= sx_thresh[1])] = 1 # Threshold color channel s_binary = np.zeros_like(s_channel) s_binary[(s_channel >= s_thresh[0]) & (s_channel <= s_thresh[1])] = 1 # combine the two binary binary = sxbinary | s_binary # Stack each channel (for visual check the pixal sourse) # color_binary = np.dstack((np.zeros_like(sxbinary), sxbinary,s_binary)) * 255 return binary
Example #4
Source File: coherence.py From OpenCV-Python-Tutorial with MIT License | 6 votes |
def coherence_filter(img, sigma = 11, str_sigma = 11, blend = 0.5, iter_n = 4): h, w = img.shape[:2] for i in xrange(iter_n): print(i) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) eigen = cv2.cornerEigenValsAndVecs(gray, str_sigma, 3) eigen = eigen.reshape(h, w, 3, 2) # [[e1, e2], v1, v2] x, y = eigen[:,:,1,0], eigen[:,:,1,1] gxx = cv2.Sobel(gray, cv2.CV_32F, 2, 0, ksize=sigma) gxy = cv2.Sobel(gray, cv2.CV_32F, 1, 1, ksize=sigma) gyy = cv2.Sobel(gray, cv2.CV_32F, 0, 2, ksize=sigma) gvv = x*x*gxx + 2*x*y*gxy + y*y*gyy m = gvv < 0 ero = cv2.erode(img, None) dil = cv2.dilate(img, None) img1 = ero img1[m] = dil[m] img = np.uint8(img*(1.0 - blend) + img1*blend) print('done') return img
Example #5
Source File: digits.py From OpenCV-Python-Tutorial with MIT License | 6 votes |
def preprocess_hog(digits): samples = [] for img in digits: gx = cv2.Sobel(img, cv2.CV_32F, 1, 0) gy = cv2.Sobel(img, cv2.CV_32F, 0, 1) mag, ang = cv2.cartToPolar(gx, gy) bin_n = 16 bin = np.int32(bin_n*ang/(2*np.pi)) bin_cells = bin[:10,:10], bin[10:,:10], bin[:10,10:], bin[10:,10:] mag_cells = mag[:10,:10], mag[10:,:10], mag[:10,10:], mag[10:,10:] hists = [np.bincount(b.ravel(), m.ravel(), bin_n) for b, m in zip(bin_cells, mag_cells)] hist = np.hstack(hists) # transform to Hellinger kernel eps = 1e-7 hist /= hist.sum() + eps hist = np.sqrt(hist) hist /= norm(hist) + eps samples.append(hist) return np.float32(samples)
Example #6
Source File: swt.py From StrokeWidthTransform with MIT License | 6 votes |
def _create_derivative(cls, filepath): img = cv2.imread(filepath,0) edges = cv2.Canny(img, 175, 320, apertureSize=3) # Create gradient map using Sobel sobelx64f = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=-1) sobely64f = cv2.Sobel(img,cv2.CV_64F,0,1,ksize=-1) theta = np.arctan2(sobely64f, sobelx64f) if diagnostics: cv2.imwrite('edges.jpg',edges) cv2.imwrite('sobelx64f.jpg', np.absolute(sobelx64f)) cv2.imwrite('sobely64f.jpg', np.absolute(sobely64f)) # amplify theta for visual inspection theta_visible = (theta + np.pi)*255/(2*np.pi) cv2.imwrite('theta.jpg', theta_visible) return (edges, sobelx64f, sobely64f, theta)
Example #7
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 #8
Source File: reduce_image_by_seam_carving.py From OpenCV-3-x-with-Python-By-Example with MIT License | 6 votes |
def compute_energy_matrix(img): gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # Compute X derivative of the image sobel_x = cv2.Sobel(gray,cv2.CV_64F, 1, 0, ksize=3) # Compute Y derivative of the image sobel_y = cv2.Sobel(gray,cv2.CV_64F, 0, 1, ksize=3) abs_sobel_x = cv2.convertScaleAbs(sobel_x) abs_sobel_y = cv2.convertScaleAbs(sobel_y) # Return weighted summation of the two images i.e. 0.5*X + 0.5*Y return cv2.addWeighted(abs_sobel_x, 0.5, abs_sobel_y, 0.5, 0) # Find vertical seam in the input image
Example #9
Source File: lane.py From vehicle-detection with GNU General Public License v3.0 | 6 votes |
def abs_sobel_thresh(img, orient='x', sobel_kernel=3, thresh=(0, 255)): # Apply the following steps to img # 1) Convert to grayscale gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) # 2) Take the derivative in x or y given orient = 'x' or 'y' # 3) Take the absolute value of the derivative or gradient if orient == 'x': abs_sobel = np.absolute(cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=sobel_kernel)) if orient == 'y': abs_sobel = np.absolute(cv2.Sobel(gray, cv2.CV_64F, 0, 1, ksize=sobel_kernel)) # 4) Scale to 8-bit (0 - 255) then convert to type = np.uint8 scaled_sobel = np.uint8(255.*abs_sobel/np.max(abs_sobel)) # 5) Create a mask of 1's where the scaled gradient magnitude # is > thresh_min and < thresh_max binary_output = np.zeros_like(scaled_sobel) binary_output[(scaled_sobel >= thresh[0]) & (scaled_sobel <= thresh[1])] = 1 return binary_output
Example #10
Source File: lane.py From vehicle-detection with GNU General Public License v3.0 | 6 votes |
def mag_thresh(img, sobel_kernel=3, thresh=(0, 255)): # Apply the following steps to img # 1) Convert to grayscale gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) # 2) Take the gradient in x and y separately sobelx = cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=sobel_kernel) sobely = cv2.Sobel(gray, cv2.CV_64F, 0, 1, ksize=sobel_kernel) # 3) Calculate the magnitude gradmag = np.sqrt(sobelx**2 + sobely**2) # 4) Scale to 8-bit (0 - 255) and convert to type = np.uint8 scale_factor = np.max(gradmag)/255 gradmag = (gradmag/scale_factor).astype(np.uint8) # 5) Create a binary mask where mag thresholds are met binary_output = np.zeros_like(gradmag) binary_output[(gradmag >= thresh[0]) & (gradmag <= thresh[1])] = 1 return binary_output
Example #11
Source File: lane.py From vehicle-detection with GNU General Public License v3.0 | 6 votes |
def find_edges(img, s_thresh=s_thresh, sx_thresh=sx_thresh, dir_thresh=dir_thresh): img = np.copy(img) # Convert to HSV color space and threshold the s channel hls = cv2.cvtColor(img, cv2.COLOR_BGR2HLS).astype(np.float) s_channel = hls[:,:,2] s_binary = threshold_col_channel(s_channel, thresh=s_thresh) # Sobel x sxbinary = abs_sobel_thresh(img, orient='x', sobel_kernel=3, thresh=sx_thresh) # mag_binary = mag_thresh(img, sobel_kernel=3, thresh=m_thresh) # # gradient direction dir_binary = dir_threshold(img, sobel_kernel=3, thresh=dir_thresh) # # # output mask combined_binary = np.zeros_like(s_channel) combined_binary[(( (sxbinary == 1) & (dir_binary==1) ) | ( (s_binary == 1) & (dir_binary==1) ))] = 1 # add more weights for the s channel c_bi = np.zeros_like(s_channel) c_bi[( (sxbinary == 1) & (s_binary==1) )] = 2 ave_binary = (combined_binary + c_bi) return ave_binary
Example #12
Source File: barcodeD&D_zbar.py From Barcode-Detection-and-Decoding with Apache License 2.0 | 6 votes |
def preprocess(image): # load the image image = cv2.imread(args["image"]) #resize image image = cv2.resize(image,None,fx=0.7, fy=0.7, interpolation = cv2.INTER_CUBIC) #convert to grayscale gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) #calculate x & y gradient gradX = cv2.Sobel(gray, ddepth = cv2.CV_32F, dx = 1, dy = 0, ksize = -1) gradY = cv2.Sobel(gray, ddepth = cv2.CV_32F, dx = 0, dy = 1, ksize = -1) # subtract the y-gradient from the x-gradient gradient = cv2.subtract(gradX, gradY) gradient = cv2.convertScaleAbs(gradient) # blur the image blurred = cv2.blur(gradient, (3, 3)) # threshold the image (_, thresh) = cv2.threshold(blurred, 225, 255, cv2.THRESH_BINARY) thresh = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) return thresh
Example #13
Source File: predict.py From License-Plate-Recognition with MIT License | 6 votes |
def preprocess_hog(digits): samples = [] for img in digits: gx = cv2.Sobel(img, cv2.CV_32F, 1, 0) gy = cv2.Sobel(img, cv2.CV_32F, 0, 1) mag, ang = cv2.cartToPolar(gx, gy) bin_n = 16 bin = np.int32(bin_n*ang/(2*np.pi)) bin_cells = bin[:10,:10], bin[10:,:10], bin[:10,10:], bin[10:,10:] mag_cells = mag[:10,:10], mag[10:,:10], mag[:10,10:], mag[10:,10:] hists = [np.bincount(b.ravel(), m.ravel(), bin_n) for b, m in zip(bin_cells, mag_cells)] hist = np.hstack(hists) # transform to Hellinger kernel eps = 1e-7 hist /= hist.sum() + eps hist = np.sqrt(hist) hist /= norm(hist) + eps samples.append(hist) return np.float32(samples) #不能保证包括所有省份
Example #14
Source File: ImageMiniLab.py From ImageMiniLab with GNU General Public License v3.0 | 6 votes |
def canny_edge(self): src = self.cv_read_img(self.src_file) if src is None: return blurred = cv.GaussianBlur(src, (3, 3), 0) gray = cv.cvtColor(blurred, cv.COLOR_BGR2GRAY) grad_x = cv.Sobel(gray, cv.CV_16SC1, 1, 0) grad_y = cv.Sobel(gray, cv.CV_16SC1, 0, 1) dst = cv.Canny(grad_x, grad_y, 30, 150) # dst = cv.Canny(gray, 50, 150) self.decode_and_show_dst(dst) # 直线检测
Example #15
Source File: img2edges.py From artificio with Apache License 2.0 | 6 votes |
def img2edges(imgFile, outFile): img = skimage.io.imread(imgFile, as_gray=False) # Blur the image with a Gaussian kernel kernel_size = (5, 5) img_blurred = img.copy() if kernel_size == (0,0) else cv2.GaussianBlur(img.copy(), kernel_size, 0) # Find the edges from the blurred image edges = np.max(np.array([edgedetect(img_blurred[:, :, 0]), edgedetect(img_blurred[:, :, 1]), edgedetect(img_blurred[:, :, 2])]), axis=0) # Sobel edge detection # Process edges by zero-ing out pixels less than the mean edges_zeroed = edges.copy() edges_zeroed[edges.copy() <= np.mean(edges.copy())] = 0 # zero out pixels less than mean img_edges = edges_zeroed # Save skimage.io.imsave(outFile, img_edges) # edgedetect:
Example #16
Source File: svm_train.py From vehicle-license-plate-recognition with MIT License | 6 votes |
def preprocess_hog(digits): samples = [] for img in digits: gx = cv2.Sobel(img, cv2.CV_32F, 1, 0) gy = cv2.Sobel(img, cv2.CV_32F, 0, 1) mag, ang = cv2.cartToPolar(gx, gy) bin_n = 16 bin = np.int32(bin_n*ang/(2*np.pi)) bin_cells = bin[:10,:10], bin[10:,:10], bin[:10,10:], bin[10:,10:] mag_cells = mag[:10,:10], mag[10:,:10], mag[:10,10:], mag[10:,10:] hists = [np.bincount(b.ravel(), m.ravel(), bin_n) for b, m in zip(bin_cells, mag_cells)] hist = np.hstack(hists) # transform to Hellinger kernel eps = 1e-7 hist /= hist.sum() + eps hist = np.sqrt(hist) hist /= norm(hist) + eps samples.append(hist) return np.float32(samples)
Example #17
Source File: vis.py From OCHumanApi with MIT License | 6 votes |
def draw_mask(img, mask, thickness=3, color=(255, 0, 0)): def _get_edge(mask, thickness=3): dtype = mask.dtype x=cv2.Sobel(np.float32(mask),cv2.CV_16S,1,0, ksize=thickness) y=cv2.Sobel(np.float32(mask),cv2.CV_16S,0,1, ksize=thickness) absX=cv2.convertScaleAbs(x) absY=cv2.convertScaleAbs(y) edge = cv2.addWeighted(absX,0.5,absY,0.5,0) return edge.astype(dtype) img = img.copy() canvas = np.zeros(img.shape, img.dtype) + color img[mask > 0] = img[mask > 0] * 0.8 + canvas[mask > 0] * 0.2 edge = _get_edge(mask, thickness) img[edge > 0] = img[edge > 0] * 0.2 + canvas[edge > 0] * 0.8 return img
Example #18
Source File: ImageProcessing.py From PyDesignPattern with GNU General Public License v3.0 | 6 votes |
def differentialDerivativeOpenCv(): img = cv2.imread("E:\\TestImages\\person.jpg") # 转换成单通道灰度图 img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) x = cv2.Sobel(img, cv2.CV_16S, 1, 0) y = cv2.Sobel(img, cv2.CV_16S, 0, 1) # 进行微分计算后,可能会出现负值,将每个像素加上最小负数的绝对值 absX = cv2.convertScaleAbs(x) # 转回uint8 absY = cv2.convertScaleAbs(y) # img = cv2.addWeighted(absX, 0.5, absY, 0.5, 0) cv2.imshow("First order differential X", absX) cv2.imshow("First order differential Y", absY) cv2.waitKey(0) cv2.destroyAllWindows()
Example #19
Source File: utils.py From answer-sheet-scan with MIT License | 6 votes |
def get_init_process_img(roi_img): """ 对图片进行初始化处理,包括,梯度化,高斯模糊,二值化,腐蚀,膨胀和边缘检测 :param roi_img: ndarray :return: ndarray """ h = cv2.Sobel(roi_img, cv2.CV_32F, 0, 1, -1) v = cv2.Sobel(roi_img, cv2.CV_32F, 1, 0, -1) img = cv2.add(h, v) img = cv2.convertScaleAbs(img) img = cv2.GaussianBlur(img, (3, 3), 0) ret, img = cv2.threshold(img, 120, 255, cv2.THRESH_BINARY) kernel = np.ones((1, 1), np.uint8) img = cv2.erode(img, kernel, iterations=1) img = cv2.dilate(img, kernel, iterations=2) img = cv2.erode(img, kernel, iterations=1) img = cv2.dilate(img, kernel, iterations=2) img = auto_canny(img) return img
Example #20
Source File: lane.py From Vehicle-and-Speed-Identification with MIT License | 6 votes |
def abs_sobel_thresh(img, orient='x', sobel_kernel=3, thresh=(0, 255)): # Apply the following steps to img # 1) Convert to grayscale gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) # 2) Take the derivative in x or y given orient = 'x' or 'y' # 3) Take the absolute value of the derivative or gradient if orient == 'x': abs_sobel = np.absolute(cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=sobel_kernel)) if orient == 'y': abs_sobel = np.absolute(cv2.Sobel(gray, cv2.CV_64F, 0, 1, ksize=sobel_kernel)) # 4) Scale to 8-bit (0 - 255) then convert to type = np.uint8 scaled_sobel = np.uint8(255.*abs_sobel/np.max(abs_sobel)) # 5) Create a mask of 1's where the scaled gradient magnitude # is > thresh_min and < thresh_max binary_output = np.zeros_like(scaled_sobel) binary_output[(scaled_sobel >= thresh[0]) & (scaled_sobel <= thresh[1])] = 1 return binary_output
Example #21
Source File: lane.py From Vehicle-and-Speed-Identification with MIT License | 6 votes |
def mag_thresh(img, sobel_kernel=3, thresh=(0, 255)): # Apply the following steps to img # 1) Convert to grayscale gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) # 2) Take the gradient in x and y separately sobelx = cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=sobel_kernel) sobely = cv2.Sobel(gray, cv2.CV_64F, 0, 1, ksize=sobel_kernel) # 3) Calculate the magnitude gradmag = np.sqrt(sobelx**2 + sobely**2) # 4) Scale to 8-bit (0 - 255) and convert to type = np.uint8 scale_factor = np.max(gradmag)/255 gradmag = (gradmag/scale_factor).astype(np.uint8) # 5) Create a binary mask where mag thresholds are met binary_output = np.zeros_like(gradmag) binary_output[(gradmag >= thresh[0]) & (gradmag <= thresh[1])] = 1 return binary_output
Example #22
Source File: lane.py From Vehicle-and-Speed-Identification with MIT License | 6 votes |
def dir_threshold(img, sobel_kernel=3, thresh=(0, np.pi/2)): """ threshold according to the direction of the gradient :param img: :param sobel_kernel: :param thresh: :return: """ # Apply the following steps to img # 1) Convert to grayscale gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) # 2) Take the gradient in x and y separately sobelx = cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=sobel_kernel) sobely = cv2.Sobel(gray, cv2.CV_64F, 0, 1, ksize=sobel_kernel) # 3) Take the absolute value of the x and y gradients # 4) Use np.arctan2(abs_sobely, abs_sobelx) to calculate the direction of the gradient absgraddir = np.arctan2(np.absolute(sobely), np.absolute(sobelx)) # 5) Create a binary mask where direction thresholds are met binary_output = np.zeros_like(absgraddir) binary_output[(absgraddir >= thresh[0]) & (absgraddir <= thresh[1])] = 1 return binary_output
Example #23
Source File: lane.py From Vehicle-and-Speed-Identification with MIT License | 6 votes |
def find_edges(img, s_thresh=s_thresh, sx_thresh=sx_thresh, dir_thresh=dir_thresh): img = np.copy(img) # Convert to HSV color space and threshold the s channel hls = cv2.cvtColor(img, cv2.COLOR_BGR2HLS).astype(np.float) s_channel = hls[:,:,2] s_binary = threshold_col_channel(s_channel, thresh=s_thresh) # Sobel x sxbinary = abs_sobel_thresh(img, orient='x', sobel_kernel=3, thresh=sx_thresh) # mag_binary = mag_thresh(img, sobel_kernel=3, thresh=m_thresh) # # gradient direction dir_binary = dir_threshold(img, sobel_kernel=3, thresh=dir_thresh) # # # output mask combined_binary = np.zeros_like(s_channel) combined_binary[(( (sxbinary == 1) & (dir_binary==1) ) | ( (s_binary == 1) & (dir_binary==1) ))] = 1 # add more weights for the s channel c_bi = np.zeros_like(s_channel) c_bi[( (sxbinary == 1) & (s_binary==1) )] = 2 ave_binary = (combined_binary + c_bi) return ave_binary
Example #24
Source File: digits.py From PyCV-time with MIT License | 6 votes |
def preprocess_hog(digits): samples = [] for img in digits: gx = cv2.Sobel(img, cv2.CV_32F, 1, 0) gy = cv2.Sobel(img, cv2.CV_32F, 0, 1) mag, ang = cv2.cartToPolar(gx, gy) bin_n = 16 bin = np.int32(bin_n*ang/(2*np.pi)) bin_cells = bin[:10,:10], bin[10:,:10], bin[:10,10:], bin[10:,10:] mag_cells = mag[:10,:10], mag[10:,:10], mag[:10,10:], mag[10:,10:] hists = [np.bincount(b.ravel(), m.ravel(), bin_n) for b, m in zip(bin_cells, mag_cells)] hist = np.hstack(hists) # transform to Hellinger kernel eps = 1e-7 hist /= hist.sum() + eps hist = np.sqrt(hist) hist /= norm(hist) + eps samples.append(hist) return np.float32(samples)
Example #25
Source File: coherence.py From PyCV-time with MIT License | 6 votes |
def coherence_filter(img, sigma = 11, str_sigma = 11, blend = 0.5, iter_n = 4): h, w = img.shape[:2] for i in xrange(iter_n): print i, gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) eigen = cv2.cornerEigenValsAndVecs(gray, str_sigma, 3) eigen = eigen.reshape(h, w, 3, 2) # [[e1, e2], v1, v2] x, y = eigen[:,:,1,0], eigen[:,:,1,1] gxx = cv2.Sobel(gray, cv2.CV_32F, 2, 0, ksize=sigma) gxy = cv2.Sobel(gray, cv2.CV_32F, 1, 1, ksize=sigma) gyy = cv2.Sobel(gray, cv2.CV_32F, 0, 2, ksize=sigma) gvv = x*x*gxx + 2*x*y*gxy + y*y*gyy m = gvv < 0 ero = cv2.erode(img, None) dil = cv2.dilate(img, None) img1 = ero img1[m] = dil[m] img = np.uint8(img*(1.0 - blend) + img1*blend) print 'done' return img
Example #26
Source File: digits.py From PyCV-time with MIT License | 6 votes |
def preprocess_hog(digits): samples = [] for img in digits: gx = cv2.Sobel(img, cv2.CV_32F, 1, 0) gy = cv2.Sobel(img, cv2.CV_32F, 0, 1) mag, ang = cv2.cartToPolar(gx, gy) bin_n = 16 bin = np.int32(bin_n*ang/(2*np.pi)) bin_cells = bin[:10,:10], bin[10:,:10], bin[:10,10:], bin[10:,10:] mag_cells = mag[:10,:10], mag[10:,:10], mag[:10,10:], mag[10:,10:] hists = [np.bincount(b.ravel(), m.ravel(), bin_n) for b, m in zip(bin_cells, mag_cells)] hist = np.hstack(hists) # transform to Hellinger kernel eps = 1e-7 hist /= hist.sum() + eps hist = np.sqrt(hist) hist /= norm(hist) + eps samples.append(hist) return np.float32(samples)
Example #27
Source File: coherence.py From PyCV-time with MIT License | 6 votes |
def coherence_filter(img, sigma = 11, str_sigma = 11, blend = 0.5, iter_n = 4): h, w = img.shape[:2] for i in xrange(iter_n): print i, gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) eigen = cv2.cornerEigenValsAndVecs(gray, str_sigma, 3) eigen = eigen.reshape(h, w, 3, 2) # [[e1, e2], v1, v2] x, y = eigen[:,:,1,0], eigen[:,:,1,1] gxx = cv2.Sobel(gray, cv2.CV_32F, 2, 0, ksize=sigma) gxy = cv2.Sobel(gray, cv2.CV_32F, 1, 1, ksize=sigma) gyy = cv2.Sobel(gray, cv2.CV_32F, 0, 2, ksize=sigma) gvv = x*x*gxx + 2*x*y*gxy + y*y*gyy m = gvv < 0 ero = cv2.erode(img, None) dil = cv2.dilate(img, None) img1 = ero img1[m] = dil[m] img = np.uint8(img*(1.0 - blend) + img1*blend) print 'done' return img
Example #28
Source File: lane.py From driving-lane-departure-warning with GNU General Public License v3.0 | 6 votes |
def abs_sobel_thresh(img, orient='x', sobel_kernel=3, thresh=(0, 255)): # Apply the following steps to img # 1) Convert to grayscale gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) # 2) Take the derivative in x or y given orient = 'x' or 'y' # 3) Take the absolute value of the derivative or gradient if orient == 'x': abs_sobel = np.absolute(cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=sobel_kernel)) if orient == 'y': abs_sobel = np.absolute(cv2.Sobel(gray, cv2.CV_64F, 0, 1, ksize=sobel_kernel)) # 4) Scale to 8-bit (0 - 255) then convert to type = np.uint8 scaled_sobel = np.uint8(255.*abs_sobel/np.max(abs_sobel)) # 5) Create a mask of 1's where the scaled gradient magnitude # is > thresh_min and < thresh_max binary_output = np.zeros_like(scaled_sobel) binary_output[(scaled_sobel >= thresh[0]) & (scaled_sobel <= thresh[1])] = 1 return binary_output
Example #29
Source File: lane.py From driving-lane-departure-warning with GNU General Public License v3.0 | 6 votes |
def mag_thresh(img, sobel_kernel=3, thresh=(0, 255)): # Apply the following steps to img # 1) Convert to grayscale gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY) # 2) Take the gradient in x and y separately sobelx = cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=sobel_kernel) sobely = cv2.Sobel(gray, cv2.CV_64F, 0, 1, ksize=sobel_kernel) # 3) Calculate the magnitude gradmag = np.sqrt(sobelx**2 + sobely**2) # 4) Scale to 8-bit (0 - 255) and convert to type = np.uint8 scale_factor = np.max(gradmag)/255 gradmag = (gradmag/scale_factor).astype(np.uint8) # 5) Create a binary mask where mag thresholds are met binary_output = np.zeros_like(gradmag) binary_output[(gradmag >= thresh[0]) & (gradmag <= thresh[1])] = 1 return binary_output
Example #30
Source File: lane.py From driving-lane-departure-warning with GNU General Public License v3.0 | 6 votes |
def find_edges(img, s_thresh=s_thresh, sx_thresh=sx_thresh, dir_thresh=dir_thresh): img = np.copy(img) # Convert to HSV color space and threshold the s channel hls = cv2.cvtColor(img, cv2.COLOR_BGR2HLS).astype(np.float) s_channel = hls[:,:,2] s_binary = threshold_col_channel(s_channel, thresh=s_thresh) # Sobel x sxbinary = abs_sobel_thresh(img, orient='x', sobel_kernel=3, thresh=sx_thresh) # mag_binary = mag_thresh(img, sobel_kernel=3, thresh=m_thresh) # # gradient direction dir_binary = dir_threshold(img, sobel_kernel=3, thresh=dir_thresh) # # # output mask combined_binary = np.zeros_like(s_channel) combined_binary[(( (sxbinary == 1) & (dir_binary==1) ) | ( (s_binary == 1) & (dir_binary==1) ))] = 1 # add more weights for the s channel c_bi = np.zeros_like(s_channel) c_bi[( (sxbinary == 1) & (s_binary==1) )] = 2 ave_binary = (combined_binary + c_bi) return ave_binary