def main(filter, kernel_size, image, sigma): """ main function reads the image coming from the image path cli arg handles the switch of argument/ perams for the PA1 program. accepts two arguments, filter and kernel_size :argument filter[dict], kernel_size[integer value] :returns success or failure value from dict filter """ image = cv2.imread(image, cv2.IMREAD_GRAYSCALE) # my_dict = { # 'box': filters.box(kernel_size, image), # 'median': filters.median(kernel_size, image), # 'guassian': filters.gaussian(kernel_size, image), # 'gradient': filters.gradient(kernel_size, image), # 'sobel': filters.sobel(image), # 'fast_gaussian': filters.fast_gaussian(kernel_size, image), # 'histogram': filters.histogram(kernel_size, image), # 'thresholding': filters.thesholding(kernel_size, image) # } # return my_dict[filter](kernel_size, image) if filter == 'box': return filters.box(kernel_size, image) elif filter == 'median': return filters.median(image) elif filter == 'gaussian': return filters.gaussian(kernel_size, sigma, image) elif filter == 'gradient': return filters.gradient(image) elif filter == 'sobel': return filters.sobel(image) elif filter == 'fast_gaussian': return filters.fast_gaussian(kernel_size, image, sigma) elif filter == 'histogram': return filters.histogram(kernel_size, image) elif filter == 'thresholding': return filters.thresholding(kernel_size, image) else: print("function not recognized") return 0
def preprocessing(pixels): print "-------------Preprocessing phase--------------" #Gaussian filter print "Passing gaussian filter." pixels = filters.gaussian(pixels) #define threshold to binarization of image k = util.otsu_thresholding(pixels) print "Threshold used in the binarization: %d" % (k) #binarize image using the threshold k print "Getting binarized image." pixels = util.binarization(pixels, k) print "Closing operator." pixels = morphology.binary_closing(pixels) print "Opening operator." pixels = morphology.binary_opening(pixels) return pixels
def all_filters(frame,scale_percent = 20, threshVal1 = 120, threshVal2 = 255,thresholdVal1_inv = 70,thresholdVal2_inv = 255, thresholdVal3 = 0, thresholdVal4 = 100,median_filter_size = 5,blackign =3): # ret, frame = cap.read() # print (frame.shape) width = int(frame.shape[1] * scale_percent / 100) height = int(frame.shape[0] * scale_percent / 100) dsize = (width, height) frame = cv2.resize(frame, dsize) H = cv2.cvtColor(frame,cv2.COLOR_RGB2HSV_FULL) # H = cv2.cvtColor(frame,cv2.COLOR_RGB2GRAY) # print (frame.shape) frame2 = threshold(H[:,:,1].copy(),threshVal1,threshVal2) frame3 = threshold_inv(frame[:,:,1].copy(),thresholdVal1_inv,thresholdVal2_inv) frame4 = threshold(frame[:,:,0].copy(),thresholdVal3,thresholdVal4) frame2 = np.array(frame2,np.uint8) frame3 = np.array(frame3,np.uint8) frame4 = np.array(frame4,np.uint8) # print (frame4.shape) frame2 = median_filter(frame2,filter_size = median_filter_size,plot=False) frame3 = median_filter(frame3,filter_size = median_filter_size,plot=False) frame4 = median_filter(frame4,filter_size = median_filter_size,plot=False) # print (frame4.shape) frame3 = blacker(frame3,blackign) # frame3,a = sobel(frame3,True) frame3 = gaussian(frame3.copy(),9,plot=False) # frame4 = laplacian(frame2) a = pixel_count(frame3) b = pixel_count(frame4) if b !=0: ratio_full = (a/b+1)*100 # print ('ammatasiri methnata wenakan enawa') return frame2, frame3, frame4, a,b, ratio_full
# H = cv2.cvtColor(frame,cv2.COLOR_RGB2GRAY) frame2 = threshold(H[:, :, 1].copy(), 120, 255) frame3 = threshold_inv(frame[:, :, 1].copy(), 70, 255) frame4 = threshold(frame[:, :, 0].copy(), 0, 100) frame2 = np.array(frame2, np.uint8) frame3 = np.array(frame3, np.uint8) frame4 = np.array(frame4, np.uint8) frame2 = median_filter(frame2, filter_size=3, plot=False) frame3 = median_filter(frame3, filter_size=3, plot=False) frame4 = median_filter(frame4, filter_size=5, plot=False) frame3 = blacker(frame3, 300) # frame3,a = sobel(frame3,True) frame3 = gaussian(frame3.copy(), 9, plot=False) # frame4 = laplacian(frame2) a = pixel_count(frame3) b = pixel_count(frame4) # print('a',a,'\nb',b) ratio_full = (a / b) * 100 if ratio_full >= 80: print('ratio_full', ratio_full, '%') drawer(frame4) # frame3 = np.array(frame3,np.uint8) cv2.imshow('frame2', frame2) cv2.imshow('frame3', frame3) # cv2.imshow('HSV',H[:,:,0])