本文整理匯總了Python中cv2.ADAPTIVE_THRESH_GAUSSIAN_C屬性的典型用法代碼示例。如果您正苦於以下問題:Python cv2.ADAPTIVE_THRESH_GAUSSIAN_C屬性的具體用法?Python cv2.ADAPTIVE_THRESH_GAUSSIAN_C怎麽用?Python cv2.ADAPTIVE_THRESH_GAUSSIAN_C使用的例子?那麽, 這裏精選的屬性代碼示例或許可以為您提供幫助。您也可以進一步了解該屬性所在類cv2
的用法示例。
在下文中一共展示了cv2.ADAPTIVE_THRESH_GAUSSIAN_C屬性的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: pre_process_image
# 需要導入模塊: import cv2 [as 別名]
# 或者: from cv2 import ADAPTIVE_THRESH_GAUSSIAN_C [as 別名]
def pre_process_image(img, skip_dilate=False):
"""Uses a blurring function, adaptive thresholding and dilation to expose the main features of an image."""
# Gaussian blur with a kernal size (height, width) of 9.
# Note that kernal sizes must be positive and odd and the kernel must be square.
proc = cv2.GaussianBlur(img.copy(), (9, 9), 0)
# Adaptive threshold using 11 nearest neighbour pixels
proc = cv2.adaptiveThreshold(proc, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)
# Invert colours, so gridlines have non-zero pixel values.
# Necessary to dilate the image, otherwise will look like erosion instead.
proc = cv2.bitwise_not(proc, proc)
if not skip_dilate:
# Dilate the image to increase the size of the grid lines.
kernel = np.array([[0., 1., 0.], [1., 1., 1.], [0., 1., 0.]],np.uint8)
proc = cv2.dilate(proc, kernel)
return proc
示例2: processImageForNeuralNet
# 需要導入模塊: import cv2 [as 別名]
# 或者: from cv2 import ADAPTIVE_THRESH_GAUSSIAN_C [as 別名]
def processImageForNeuralNet(arg1, image=False):
"""
Receives as parameter arg1 the path of the image to be converted or the image already captured with
cv2 (in that case, pass image=True as a parameter). The return of this function (x) should be passed as
input to a Network object by network.feedforward(x)
"""
SIDE_SIZE = 10
TOTAL_SIZE = 100
img = arg1
if(not image):
img = cv2.imread(arg1,0)
img = cv2.resize(img,(SIDE_SIZE,SIDE_SIZE))
img = cv2.adaptiveThreshold(img,1,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,11,2)
img = np.reshape(img, (TOTAL_SIZE, 1))
return np.array(img, dtype='f')
示例3: normalize
# 需要導入模塊: import cv2 [as 別名]
# 或者: from cv2 import ADAPTIVE_THRESH_GAUSSIAN_C [as 別名]
def normalize(im):
"""Converts `im` to black and white.
Applying a threshold to a grayscale image will make every pixel either
fully black or fully white. Before doing so, a common technique is to
get rid of noise (or super high frequency color change) by blurring the
grayscale image with a Gaussian filter."""
im_gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
# Filter the grayscale image with a 3x3 kernel
blurred = cv2.GaussianBlur(im_gray, (3, 3), 0)
# Applies a Gaussian adaptive thresholding. In practice, adaptive thresholding
# seems to work better than appling a single, global threshold to the image.
# This is particularly important if there could be shadows or non-uniform
# lighting on the answer sheet. In those scenarios, using a global thresholding
# technique might yield paricularly bad results.
# The choice of the parameters blockSize = 77 and C = 10 is as much as an art
# as a science and domain-dependand.
# In practice, you might want to try different values for your specific answer
# sheet.
return cv2.adaptiveThreshold(
blurred, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 77, 10)
示例4: clean_plate
# 需要導入模塊: import cv2 [as 別名]
# 或者: from cv2 import ADAPTIVE_THRESH_GAUSSIAN_C [as 別名]
def clean_plate(self, plate):
gray = cv2.cvtColor(plate, cv2.COLOR_BGR2GRAY)
thresh = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)
_, contours, _ = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
if contours:
areas = [cv2.contourArea(c) for c in contours]
max_index = np.argmax(areas) # index of the largest contour in the area array
max_cnt = contours[max_index]
max_cntArea = areas[max_index]
x,y,w,h = cv2.boundingRect(max_cnt)
rect = cv2.minAreaRect(max_cnt)
rotatedPlate = self.crop_rotated_contour(plate, rect)
if not self.ratioCheck(max_cntArea, rotatedPlate.shape[1], rotatedPlate.shape[0]):
return plate, False, None
return rotatedPlate, True, [x, y, w, h]
else:
return plate, False, None
示例5: read_file
# 需要導入模塊: import cv2 [as 別名]
# 或者: from cv2 import ADAPTIVE_THRESH_GAUSSIAN_C [as 別名]
def read_file(fname):
image = cv2.imread(fname,0)
image = cv2.adaptiveThreshold(image,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,11,2)
# cv2.namedWindow('image', cv2.WINDOW_NORMAL)
# cv2.imshow('image',image)
# cv2.waitKey(0)
# cv2.destroyAllWindows()
# image = cv2.adaptiveThreshold(image,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,11,2)
# cv2.imwrite("/home/ggdhines/temp.jpg",image)
# assert False
# _,image = cv2.threshold(image,200,255,cv2.THRESH_BINARY)
# image = 255 - image
# image = image > 0
image = image.astype(np.float)
return image
示例6: adaptiveThreshold
# 需要導入模塊: import cv2 [as 別名]
# 或者: from cv2 import ADAPTIVE_THRESH_GAUSSIAN_C [as 別名]
def adaptiveThreshold(plates):
for i, plate in enumerate(plates):
img = cv2.imread(plate)
gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
cv2.imshow('gray', gray)
ret, thresh = cv2.threshold(gray, 50, 255, cv2.THRESH_BINARY)
# cv2.imshow('thresh', thresh)
threshMean = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 5, 10)
# cv2.imshow('threshMean', threshMean)
threshGauss = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 51, 27)
cv2.imshow('threshGauss', threshGauss)
cv2.imwrite("processed\\plate{}.png".format(i), threshGauss)
cv2.waitKey(0)
示例7: locate_text_area
# 需要導入模塊: import cv2 [as 別名]
# 或者: from cv2 import ADAPTIVE_THRESH_GAUSSIAN_C [as 別名]
def locate_text_area(pdf_image_row_block):
"""
locate the text area of the image row block
:param pdf_image_row_block: color pdf image block
:return:
"""
gray_image = cv2.cvtColor(pdf_image_row_block, cv2.COLOR_BGR2GRAY)
binarized_image = cv2.adaptiveThreshold(
src=gray_image,
maxValue=255,
adaptiveMethod=cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
thresholdType=cv2.THRESH_BINARY,
blockSize=11,
C=2
)
# sum along the col axis
col_sum = np.sum(binarized_image, axis=0)
idx_col_sum = np.argwhere(col_sum < col_sum.max())[:, 0]
start_col = idx_col_sum[0] if idx_col_sum[0] > 0 else 0
end_col = idx_col_sum[-1]
end_col = end_col if end_col < pdf_image_row_block.shape[1] else pdf_image_row_block.shape[1] - 1
return pdf_image_row_block[:, start_col:end_col, :]
示例8: cartoonise
# 需要導入模塊: import cv2 [as 別名]
# 或者: from cv2 import ADAPTIVE_THRESH_GAUSSIAN_C [as 別名]
def cartoonise(self, img_rgb, num_down, num_bilateral, medianBlur, D, sigmaColor, sigmaSpace):
# 用高斯金字塔降低取樣
img_color = cv2.cvtColor(img_rgb, cv2.COLOR_RGB2BGR)
for _ in range(num_down):
img_color = cv2.pyrDown(img_color)
# 重複使用小的雙邊濾波代替一個大的濾波
for _ in range(num_bilateral):
img_color = cv2.bilateralFilter(img_color, d=D, sigmaColor=sigmaColor, sigmaSpace=sigmaSpace)
# 升采樣圖片到原始大小
for _ in range(num_down):
img_color = cv2.pyrUp(img_color)
if not self.Save_Edge:
img_cartoon = img_color
else:
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_RGB2GRAY)
img_blur = cv2.medianBlur(img_gray, medianBlur)
img_edge = cv2.adaptiveThreshold(img_blur, 255,
cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY,
blockSize=self.Adaptive_Threshold_Block_Size,
C=self.C)
img_edge = cv2.cvtColor(img_edge, cv2.COLOR_GRAY2RGB)
img_edge = cv2.resize(img_edge, img_color.shape[:2][::-1])
img_cartoon = cv2.bitwise_and(img_color, img_edge)
return cv2.cvtColor(img_cartoon, cv2.COLOR_RGB2BGR)
示例9: processFile
# 需要導入模塊: import cv2 [as 別名]
# 或者: from cv2 import ADAPTIVE_THRESH_GAUSSIAN_C [as 別名]
def processFile(self, img, debug=False):
"""
Converts input image to grayscale & applies adaptive thresholding.
"""
img = cv2.GaussianBlur(img,(5,5),0)
# Convert to HSV
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# Convert to grayscale
gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
# HSV Thresholding
res,hsvThresh = cv2.threshold(hsv[:,:,0], 25, 250, cv2.THRESH_BINARY_INV)
# Show adaptively thresholded image
adaptiveThresh = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 115, 1)
# Show both thresholded images
# cv2.imshow("HSV Thresholded",hsvThresh)
if debug:
cv2.imshow("Adaptive Thresholding", adaptiveThresh)
return img, adaptiveThresh
示例10: _get_image_segments
# 需要導入模塊: import cv2 [as 別名]
# 或者: from cv2 import ADAPTIVE_THRESH_GAUSSIAN_C [as 別名]
def _get_image_segments(image, kernel, block_size, c):
binarized_image = cv2.adaptiveThreshold(image, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY_INV, block_size, c)
labeled, nr_objects = ndimage.label(binarized_image, structure=kernel)
slices = ndimage.find_objects(labeled)
image_segments = {}
for idx, slice_ in enumerate(slices):
offset = instantiators['point'](slice_[1].start, slice_[0].start)
sliced_image = image[slice_]
boolean_array = labeled[slice_] == (idx+1)
segmented_image = 255- (255-sliced_image) * boolean_array
pixels = set(instantiators['point'](x, y) for x, y in np.transpose(np.nonzero(np.transpose(boolean_array))))
binarized_segmented_image = cv2.adaptiveThreshold(segmented_image, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY_INV, block_size, c)
image_segment = ImageSegment(segmented_image, sliced_image, binarized_segmented_image, pixels, offset, idx)
image_segments[idx] = image_segment
return image_segments
示例11: PrepareImage
# 需要導入模塊: import cv2 [as 別名]
# 或者: from cv2 import ADAPTIVE_THRESH_GAUSSIAN_C [as 別名]
def PrepareImage(image):
"""Converts color image to black and white"""
# work on gray scale
bw = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)
# remove noise, preserve edges
bw = cv2.bilateralFilter(bw, 9, 75, 75)
# binary threshold
bw = cv2.adaptiveThreshold(bw, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
cv2.THRESH_BINARY, 11, 2)
return bw
示例12: turn_binary
# 需要導入模塊: import cv2 [as 別名]
# 或者: from cv2 import ADAPTIVE_THRESH_GAUSSIAN_C [as 別名]
def turn_binary(old: np.ndarray) -> np.ndarray:
grey = turn_grey(old).astype("uint8")
return cv2.adaptiveThreshold(
grey, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2
)
示例13: find_items
# 需要導入模塊: import cv2 [as 別名]
# 或者: from cv2 import ADAPTIVE_THRESH_GAUSSIAN_C [as 別名]
def find_items(maze_image):
# Preprocessing to find the contour of the shapes
h, w = maze_image.shape[0], maze_image.shape[1]
dim = (h+w)//2
b_and_w = cv2.cvtColor(maze_image, cv2.COLOR_BGR2GRAY)
edges = cv2.GaussianBlur(b_and_w, (11, 11), 0)
edges = cv2.adaptiveThreshold(edges, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 9, 2)
cv2.rectangle(edges,(0, 0),(w-1,h-1),(255,255,255),16)
contours, _ = cv2.findContours(edges, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
# cv2.imshow('d', edges)
items = []
if contours:
item_mask = np.zeros(edges.shape, np.uint8)
conts = sorted(contours, key=lambda x: cv2.contourArea(x), reverse=False)
for cnt in conts:
if cv2.contourArea(cnt) > 0.35*dim:
return items, item_mask
elif cv2.contourArea(cnt) > 0.05*dim:
d = np.mean(cnt, axis=0)
d[0][0], d[0][1] = int(round(d[0][0])), int(round(d[0][1]))
# TODO adjust the size here?
if cv2.contourArea(cnt) < 0.1*dim:
items.append((d, 'smol'))
cv2.drawContours(item_mask, [cnt], -1, (255,255,255), -1)
else:
items.append((d, 'big'))
cv2.drawContours(item_mask, [cnt], -1, (255,255,255), -1)
return items, item_mask
示例14: main
# 需要導入模塊: import cv2 [as 別名]
# 或者: from cv2 import ADAPTIVE_THRESH_GAUSSIAN_C [as 別名]
def main():
ap = argparse.ArgumentParser()
ap.add_argument("-d", "--image_train",
help = "path for the images that you're going to invert")
args = vars(ap.parse_args())
if args.get("image", True):
imgTrainingNumbers = cv2.imread(args["image_train"]) # read in training numbers image
if imgTrainingNumbers is None:
print "error: image not read from file \n\n" # print error message to std out
os.system("pause") # pause so user can see error message
return
else:
print("Please add -d or --image_train argument")
imgGray = cv2.cvtColor(imgTrainingNumbers, cv2.COLOR_BGR2GRAY) # get grayscale image
imgBlurred = cv2.GaussianBlur(imgGray, (5,5), 0) # blur
# filter image from grayscale to black and white
imgThresh = cv2.adaptiveThreshold(imgBlurred, # input image
0, # make pixels that pass the threshold full white
cv2.ADAPTIVE_THRESH_GAUSSIAN_C, # use gaussian rather than mean, seems to give better results
cv2.THRESH_BINARY_INV, # invert so foreground will be white, background will be black
11, # size of a pixel neighborhood used to calculate threshold value
2) # constant subtracted from the mean or weighted mean
imgTrainingNumbers = np.invert(imgTrainingNumbers)
cv2.imwrite("invert_"+args["image_train"],imgTrainingNumbers)
cv2.imwrite("imgThresh_"+args["image_train"],imgThresh)
return
###################################################################################################
示例15: preprocess
# 需要導入模塊: import cv2 [as 別名]
# 或者: from cv2 import ADAPTIVE_THRESH_GAUSSIAN_C [as 別名]
def preprocess(imgOriginal):
#coba = cv2.cvtColor(imgOriginal, cv2.COLOR_BGR2HSV)
#cv2.imshow("hsv", coba )
imgGrayscale = extractValue(imgOriginal)
#cv2.imshow("imgGrayscale", imgGrayscale )
imgGrayscale = np.invert(imgGrayscale) # last best use this
#cv2.imshow("invert", imgGrayscale )
imgMaxContrastGrayscale = maximizeContrast(imgGrayscale)
#cv2.imshow("imgMaxContrastGrayscale", imgMaxContrastGrayscale )
#imgMaxContrastGrayscale = np.invert(imgMaxContrastGrayscale)
height, width = imgGrayscale.shape
imgBlurred = np.zeros((height, width, 1), np.uint8)
#cv2.imshow("c_3", imgBlurred )
imgBlurred = cv2.GaussianBlur(imgMaxContrastGrayscale, GAUSSIAN_SMOOTH_FILTER_SIZE, 0)
#cv2.imshow("imgBlurred", imgBlurred )
#imgBlurred = np.invert(imgBlurred)
imgThresh = cv2.adaptiveThreshold(imgBlurred, THRESHOLD_VALUE , cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, ADAPTIVE_THRESH_BLOCK_SIZE, ADAPTIVE_THRESH_WEIGHT)
#imgThresh = np.invert(imgThresh)
#cv2.imshow("cobaaa", imgThresh)
return imgGrayscale, imgThresh
# end function
###################################################################################################