diff --git a/detect_structures.py b/detect_structures.py index 46f79854e8095dcf64662c18909d052b85f3361b..3419c4abb85d51959b4ae80d54c6136a5df80ee6 100644 --- a/detect_structures.py +++ b/detect_structures.py @@ -14,26 +14,28 @@ from lib.triangles import * from lib.bisection import * from lib.misc import * -SHOW_WINDOW = False +SHOW_WINDOW = True SAVE_FILE = not SHOW_WINDOW -SAVE_BDCN = True +SAVE_BDCN = False +BDCN_EDGES = True +WHITE_OUTPUT_CANVAS = True TRIANGLES = False BODY_LINES = True BISEC_VECTORS = False BISEC_CONES = True GLOBAL_LINE = True +DRAW_FIRST_CONE_LAYER_BRIGTHER = True BISEC_CONE_ANGLE = 50 CORRECTION_ANGLE = 23 OVERLAY_ALPHA = 0.2 -BISEC_SKIP_LOWER_LEVELS = True +BISEC_SKIP_LOWER_LEVELS = False DISPLAY_RASTER_ELEMENTS = 500 -BDCN_EDGES = True OUT_DIR = 'images/out/images_imdahl/main_structure_final_canvas' #IN_DIR = "images/first_email/" # images from first email IN_DIR = "images/images_imdahl/" # images from imdahl IN_DIR_BDCN = "images/out/images_imdahl/bdcn_output/" -SKIP_OPENPOSE = False +SKIP_OPENPOSE = True OPENPOSE_DEMO_KEYPOINTS = np.array([[[4.7613028e+02, 3.3695804e+02, 9.0203685e-01],[5.3667474e+02, 3.8633786e+02, 6.6615295e-01],[5.1645105e+02, 3.8405157e+02, 5.1514143e-01],[0.0000000e+00, 0.0000000e+00, 0.0000000e+00],[0.0000000e+00, 0.0000000e+00, 0.0000000e+00],[5.5459924e+02, 3.8859457e+02, 6.4240879e-01],[5.6353766e+02, 4.7384988e+02, 1.8810490e-01],[5.3886292e+02, 5.2543573e+02, 9.0144195e-02],[5.4566248e+02, 5.3215259e+02, 3.6083767e-01],[5.2768524e+02, 5.3213129e+02, 3.1196830e-01],[5.4556714e+02, 6.3534674e+02, 1.8182488e-01],[5.8149310e+02, 7.2958716e+02, 1.3625422e-01],[5.6579541e+02, 5.3216382e+02, 3.6866242e-01],[5.8822272e+02, 6.2862476e+02, 1.7708556e-01],[6.0843213e+02, 7.2955762e+02, 2.2736737e-01],[4.7597812e+02, 3.2798129e+02, 5.7176876e-01],[4.8729745e+02, 3.3027243e+02, 9.1296065e-01],[0.0000000e+00, 0.0000000e+00, 0.0000000e+00],[5.2090784e+02, 3.3472034e+02, 7.7942842e-01],[5.7928674e+02, 7.5646222e+02, 2.0351715e-01],[5.9049512e+02, 7.5648248e+02, 2.0819387e-01],[6.2183606e+02, 7.3853394e+02, 1.7312977e-01],[5.8145673e+02, 7.5420642e+02, 1.2660497e-01],[5.7701074e+02, 7.5417773e+02, 1.2881383e-01],[5.8374255e+02, 7.3627380e+02, 9.4869599e-02]] ,[[6.4435681e+02, 3.6383255e+02, 8.9096022e-01],[6.6903070e+02, 3.9760306e+02, 8.7681645e-01],[6.4430103e+02, 3.9525812e+02, 7.9584122e-01],[6.3310535e+02, 4.5589160e+02, 3.7108111e-01],[5.9046979e+02, 4.2451276e+02, 4.0277350e-01],[6.9366602e+02, 4.0197583e+02, 8.9528430e-01],[6.8247137e+02, 4.6042902e+02, 5.5132395e-01],[6.0616620e+02, 4.3569894e+02, 3.4303352e-01],[6.5551196e+02, 5.1196445e+02, 2.9572365e-01],[6.3529651e+02, 5.0747903e+02, 2.8629595e-01],[0.0000000e+00, 0.0000000e+00, 0.0000000e+00],[0.0000000e+00, 0.0000000e+00, 0.0000000e+00],[6.7573169e+02, 5.1421967e+02, 3.0180413e-01],[0.0000000e+00, 0.0000000e+00, 0.0000000e+00],[0.0000000e+00, 0.0000000e+00, 0.0000000e+00],[6.4206000e+02, 3.5276721e+02, 7.2430253e-01],[6.5327673e+02, 3.5271103e+02, 9.4265050e-01],[0.0000000e+00, 0.0000000e+00, 0.0000000e+00],[6.7577380e+02, 3.5269864e+02, 8.9672232e-01],[0.0000000e+00, 0.0000000e+00, 0.0000000e+00],[0.0000000e+00, 0.0000000e+00, 0.0000000e+00],[0.0000000e+00, 0.0000000e+00, 0.0000000e+00],[0.0000000e+00, 0.0000000e+00, 0.0000000e+00],[0.0000000e+00, 0.0000000e+00, 0.0000000e+00],[0.0000000e+00, 0.0000000e+00, 0.0000000e+00]] ,[[7.2723553e+02, 4.0875150e+02, 8.3982950e-01],[7.6091986e+02, 4.6032086e+02, 5.0676465e-01],[7.3178253e+02, 4.5359366e+02, 3.5797939e-01],[0.0000000e+00, 0.0000000e+00, 0.0000000e+00],[0.0000000e+00, 0.0000000e+00, 0.0000000e+00],[7.8784674e+02, 4.6483188e+02, 5.6356871e-01],[7.6320721e+02, 5.6802844e+02, 3.7939239e-01],[7.2953772e+02, 5.4564911e+02, 1.5424372e-01],[7.6546356e+02, 6.1964557e+02, 1.7308682e-01],[7.3854327e+02, 6.1513757e+02, 1.5351829e-01],[7.3855487e+02, 7.3405249e+02, 5.6986582e-02],[0.0000000e+00, 0.0000000e+00, 0.0000000e+00],[7.8789227e+02, 6.2636108e+02, 1.8666090e-01],[7.9010718e+02, 7.5197815e+02, 9.0752751e-02],[0.0000000e+00, 0.0000000e+00, 0.0000000e+00],[7.2722571e+02, 3.9980579e+02, 4.9854943e-01],[7.4074554e+02, 4.0420221e+02, 8.2562774e-01],[0.0000000e+00, 0.0000000e+00, 0.0000000e+00],[7.6537799e+02, 4.0880304e+02, 6.8228495e-01],[0.0000000e+00, 0.0000000e+00, 0.0000000e+00],[0.0000000e+00, 0.0000000e+00, 0.0000000e+00],[0.0000000e+00, 0.0000000e+00, 0.0000000e+00],[0.0000000e+00, 0.0000000e+00, 0.0000000e+00],[0.0000000e+00, 0.0000000e+00, 0.0000000e+00],[0.0000000e+00, 0.0000000e+00, 0.0000000e+00]] @@ -55,6 +57,7 @@ def overlay_two_image_v2(image, overlay, ignore_color=[0,0,0], alpha=0.1): params = dict() #params["model_folder"] = "/Users/Tilman/Documents/Programme/Python/forschungspraktikum/openpose/models/" params["model_folder"] = os.environ['OPENPOSE_MODELS'] +#https://github.com/CMU-Perceptual-Computing-Lab/openpose/blob/master/doc/output.md#pose-output-format-body_25 # Starting OpenPose if not SKIP_OPENPOSE: @@ -69,11 +72,14 @@ images_bdcn.sort() os.chdir(OUT_DIR) #save images in this dir #for img_name in images: -for img_name, img_bdcn in list(zip(images, images_bdcn)): +# for img_name, img_bdcn in list(zip(images, images_bdcn)): +# for img_name, img_bdcn in list(zip(images, images_bdcn)): +for img_name, img_bdcn in list(zip(images, images_bdcn))[15:16]: #jesus +# for img_name, img_bdcn in list(zip(images, images_bdcn))[6:7]: #fusswaschung # Process Image print("calculating: "+img_name) img = cv2.imread(img_name) - bdcn = cv2.imread(img_bdcn) + img_output_canvas = np.array([[[255,255,255]]*len(img[0])]*len(img),np.uint8) if WHITE_OUTPUT_CANVAS else cv2.imread(img_bdcn) max_lw = max(len(img),len(img[0])) esz = max_lw / DISPLAY_RASTER_ELEMENTS if SKIP_OPENPOSE: @@ -87,8 +93,8 @@ for img_name, img_bdcn in list(zip(images, images_bdcn)): img = datum.cvOutputData if BDCN_EDGES: - overlay = np.array([[[255,255,255]]*len(img[0])]*len(img)) #white image canvas - bdcn = overlay_two_image_v2(bdcn, overlay, [0,0,0], 0.2) + overlay = np.array([[[255,255,255]]*len(img[0])]*len(img),np.uint8) #white image canvas + output_canvas = overlay_two_image_v2(img_output_canvas, overlay, [0,0,0], 0.2) fposes = np.array([np.array([line[:2] for line in pose if line[2] > 0]) for pose in datum.poseKeypoints]) #filtered poses without zero lines for pose in fposes: convexhull = Polygon(pose).convex_hull @@ -97,11 +103,23 @@ for img_name, img_bdcn in list(zip(images, images_bdcn)): #cv2.line(img, (int(pose[0][0]),int(pose[0][1])), (int(pose[1][0]),int(pose[1][1])), (0,255,0), int(6*esz)) # cv2.drawContours(img, [polyToArr(sconvexhull)], 0, 255, int(10*esz)) # cv2.drawContours(img, [polyToArr(sconvexhull)], 0, 255, -1) - cv2.drawContours(bdcn, [polyToArr(sconvexhull)], 0, (255,255,255), int(10*esz)) - cv2.drawContours(bdcn, [polyToArr(sconvexhull)], 0, (255,255,255), -1) + cv2.drawContours(output_canvas, [polyToArr(sconvexhull)], 0, (255,255,255), int(10*esz)) + cv2.drawContours(output_canvas, [polyToArr(sconvexhull)], 0, (255,255,255), -1) #draw rectangle # cv2.rectangle(img, (0,0), (len(img[0]),len(img)), (255,0,0), int(40*esz)) - cv2.rectangle(bdcn, (0,0), (len(img[0]),len(img)), (255,255,255), int(40*esz)) + cv2.rectangle(output_canvas, (0,0), (len(img[0]),len(img)), (255,255,255), int(40*esz)) + + if TRIANGLES or BODY_LINES: + triangles = [poseToTriangle(pose) for pose in datum.poseKeypoints] + for triangle in triangles: + if triangle is not None: + if TRIANGLES: + cv2.drawContours(img, [triangle], 0, 255, -1) + cv2.drawContours(output_canvas, [triangle], 0, 255, -1) + if BODY_LINES: + linePoints = triangleToBodyLine(triangle) + cv2.line(img, trp(linePoints[0]), trp(linePoints[1]), (0,255,0), int(6*esz)) + cv2.line(output_canvas, trp(linePoints[0]), trp(linePoints[1]), (0,255,0), int(6*esz)) if BISEC_CONES or GLOBAL_LINE: bisecCones = [poseToBisectCone(pose, max_lw, BISEC_CONE_ANGLE, CORRECTION_ANGLE) for pose in datum.poseKeypoints] #use max(img.height,width) as cone length @@ -115,10 +133,14 @@ for img_name, img_bdcn in list(zip(images, images_bdcn)): continue; else: overlay = np.zeros((len(img),len(img[0]),3), np.uint8) - color = min(((len(combi)-1)*150,255)) + color = min(((len(combi)-1)*100,255)) + alpha = OVERLAY_ALPHA + if DRAW_FIRST_CONE_LAYER_BRIGTHER and len(combi) == 1: + cv2.drawContours(overlay, [polyToArr(intersections[combi])], 0, (0,255,0), -1) + img = overlay_two_image_v2(img, overlay, [0,0,0], (0.25)) if BISEC_CONES: cv2.drawContours(overlay, [polyToArr(intersections[combi])], 0, (color,0,(0 if is_not_last_level else 255)), -1) - img = overlay_two_image_v2(img, overlay, [0,0,0], (OVERLAY_ALPHA if is_not_last_level else 0.6)) + img = overlay_two_image_v2(img, overlay, [0,0,0], (alpha if is_not_last_level else 0.6)) if not is_not_last_level and GLOBAL_LINE: #draw centroid of last polygon xy = (int(intersections[combi].centroid.x),int(intersections[combi].centroid.y)) global_angle = getGlobalLineAngle(datum.poseKeypoints, CORRECTION_ANGLE) @@ -128,42 +150,30 @@ for img_name, img_bdcn in list(zip(images, images_bdcn)): d_l = (int(-dist * np.cos(global_angle)), int(-dist * np.sin(global_angle))) #with origin zero # draw line with global gaze angle (special mean of all gaze angles) and through center of last intersection cv2.line(img, xy, (xy[0]+d[0],xy[1]-d[1]), (0,255,255), int(10*esz)) - cv2.line(bdcn, xy, (xy[0]+d[0],xy[1]-d[1]), (0,255,255), int(10*esz)) + cv2.line(output_canvas, xy, (xy[0]+d[0],xy[1]-d[1]), (0,255,255), int(10*esz)) cv2.line(img, xy, (xy[0]+d_l[0],xy[1]-d_l[1]), (0,255,255), int(10*esz)) - cv2.line(bdcn, xy, (xy[0]+d_l[0],xy[1]-d_l[1]), (0,255,255), int(10*esz)) + cv2.line(output_canvas, xy, (xy[0]+d_l[0],xy[1]-d_l[1]), (0,255,255), int(10*esz)) cv2.circle(img, xy, int(13*esz), (255,255,0), -1) - cv2.circle(bdcn, xy, int(13*esz), (255,255,0), -1) - - if TRIANGLES or BODY_LINES: - triangles = [poseToTriangle(pose) for pose in datum.poseKeypoints] - for triangle in triangles: - if triangle is not None: - if TRIANGLES: - cv2.drawContours(img, [triangle], 0, 255, -1) - cv2.drawContours(bdcn, [triangle], 0, 255, -1) - if BODY_LINES: - linePoints = triangleToBodyLine(triangle) - cv2.line(img, trp(linePoints[0]), trp(linePoints[1]), (0,255,0), int(6*esz)) - cv2.line(bdcn, trp(linePoints[0]), trp(linePoints[1]), (0,255,0), int(6*esz)) + cv2.circle(output_canvas, xy, int(13*esz), (255,255,0), -1) if BISEC_VECTORS: bisecVectors = [poseToBisectVector(pose, CORRECTION_ANGLE) for pose in datum.poseKeypoints] for bisecVector in bisecVectors: if bisecVector is not None: cv2.arrowedLine(img, trp(bisecVector[1]), trp(bisecVector[0]), (0,0,255), int(4*esz)) - cv2.arrowedLine(bdcn, trp(bisecVector[1]), trp(bisecVector[0]), (0,0,255), int(4*esz)) + cv2.arrowedLine(output_canvas, trp(bisecVector[1]), trp(bisecVector[0]), (0,0,255), int(4*esz)) if SAVE_FILE: cv2.imwrite(os.path.basename(img_name),img) if BDCN_EDGES: - cv2.imwrite('CANVAS_'+os.path.basename(img_bdcn),bdcn) + cv2.imwrite('CANVAS_'+os.path.basename(img_output_canvas),output_canvas) if SHOW_WINDOW: cv2.namedWindow(img_name, cv2.WINDOW_NORMAL) cv2.imshow(img_name, img) if BDCN_EDGES: cv2.namedWindow(img_bdcn, cv2.WINDOW_NORMAL) - cv2.imshow(img_bdcn, bdcn) - cv2.waitKey(0) + cv2.imshow(img_bdcn, output_canvas) + # cv2.waitKey(0) if SHOW_WINDOW: cv2.waitKey(0) cv2.destroyAllWindows() \ No newline at end of file diff --git a/lib/bisection.py b/lib/bisection.py index 0b67e40a076d976db8e20966dc6bb3b6c67d8595..c82302344d7d9d34c15214961b612a83804ec00d 100644 --- a/lib/bisection.py +++ b/lib/bisection.py @@ -48,15 +48,15 @@ def getGlobalLineAngle(poses, CORRECTION_ANGLE): def getBisecPoint(a,b,c, CORRECTION_ANGLE): angle = getAngleGroundNormed(a,b,c, CORRECTION_ANGLE) - dist = la.norm(a-b) + dist = la.norm(a-b)*2 d = (int(dist * np.cos(angle)), int(dist * np.sin(angle))) #with origin zero out = (b[0]+d[0],b[1]-d[1]) return out #with origin b -def getBisecCone(a,b,c, length, width, CORRECTION_ANGLE): +def getBisecCone(a,b,c, length, BISEC_CONE_ANGLE, CORRECTION_ANGLE): angle = getAngleGroundNormed(a,b,c, CORRECTION_ANGLE) - conePoint1 = (int(length * np.cos(angle-(width/2))), int(length * np.sin(angle-(width/2)))) #with origin zero - conePoint2 = (int(length * np.cos(angle+(width/2))), int(length * np.sin(angle+(width/2)))) #with origin zero + conePoint1 = (int(length * np.cos(angle-(BISEC_CONE_ANGLE/2))), int(length * np.sin(angle-(BISEC_CONE_ANGLE/2)))) #with origin zero + conePoint2 = (int(length * np.cos(angle+(BISEC_CONE_ANGLE/2))), int(length * np.sin(angle+(BISEC_CONE_ANGLE/2)))) #with origin zero return ((b[0]+conePoint1[0],b[1]-conePoint1[1]),(b[0]+conePoint2[0],b[1]-conePoint2[1])) def poseToBisectVector(pose, CORRECTION_ANGLE): diff --git a/lib/triangles.py b/lib/triangles.py index e98bea4908dc05b3999b6abae7a90e74fa9776e6..036ac0e887230799ec3cce4a2fca669ed8aac7e3 100644 --- a/lib/triangles.py +++ b/lib/triangles.py @@ -1,13 +1,10 @@ import numpy as np -triangleTopSortedIndices = [1,0,2,5,15,16,17,18] -triangleLeftSortedIndices = [11,24,13,22,10,9] -triangleRightSortedIndices = [14,21,19,20,13,12] def reduceToTrianglePoint(indices,pose): points = pose[indices] #filter out poses wich are not part of the points points indices if len(points) <= 0: return None #no relevant indices exist - pointsFiltered = points[np.where(points[:,2] > 0.1)[0]] #filter out points bellow openpose confidence value of 0.5 + pointsFiltered = points[np.where(points[:,2] > 0.1)[0]] #filter out points bellow openpose confidence value of 0.1 if len(pointsFiltered) <= 0 or pointsFiltered is None: bestPoint = points[np.argsort(points[:,2])[::-1]][0] #points with best openpose confidence if bestPoint[2]>0.0: @@ -19,6 +16,9 @@ def reduceToTrianglePoint(indices,pose): return pointsFiltered[0] #take first point if filterd has values def poseToTriangle(pose): + triangleTopSortedIndices = [1,0,2,5,15,16,17,18] + triangleLeftSortedIndices = [11,24,13,22,10,9] + triangleRightSortedIndices = [14,21,19,20,13,12] top = reduceToTrianglePoint(triangleTopSortedIndices,pose) left = reduceToTrianglePoint(triangleLeftSortedIndices,pose) right = reduceToTrianglePoint(triangleRightSortedIndices,pose) diff --git a/playground/basic_cv2_kmeans.py b/playground/basic_cv2_kmeans.py index 87c338e0bf4673a69625e8012700f9e92fc136e3..589af58c8e0beef818fdb5143a50096921f0eb78 100644 --- a/playground/basic_cv2_kmeans.py +++ b/playground/basic_cv2_kmeans.py @@ -3,9 +3,12 @@ import cv2 import os -IN_DIR = "../images/images_imdahl/" +# IN_DIR = "../images/images_imdahl/" +IN_DIR = "../images/out/fuse_1_bsds500/" +DISPLAY_RASTER_ELEMENTS=500 + images = [os.path.join(os.getcwd(), IN_DIR, f) for f in os.listdir(IN_DIR)] -os.chdir('../images/out/images_imdahl/filtered_median/') #save images in this dir +os.chdir('../images/out/images_imdahl/bdcn_filtering/test1') #save images in this dir for img_name in images: # img_name=images[0] print(img_name) @@ -13,19 +16,47 @@ for img_name in images: # cv2.imshow('res2'+img_name,img) # cv2.waitKey(0) + # image = cv2.imread('../images/out/fuse_1_bsds500/0.png') + max_lw = max(len(img),len(img[0])) + esz = max_lw / DISPLAY_RASTER_ELEMENTS + print("max_lw,esz",max_lw,esz) + # img = cv2.bitwise_not(img) + + cv2.imshow('res2'+img_name,img) + blurred = cv2.medianBlur(img,int(esz*5)+1 if int(esz*5)%2==0 else int(esz*5)) + print("med1") + cv2.waitKey(0) + cv2.imshow('res2'+img_name,blurred) + blurred = cv2.bilateralFilter(blurred,30,60,60) + print("bil1") + cv2.waitKey(0) + cv2.imshow('res2'+img_name,blurred) + blurred = cv2.bilateralFilter(blurred,30,60,60) + print("bil2") + cv2.waitKey(0) + cv2.imshow('res2'+img_name,blurred) + blurred = cv2.bilateralFilter(blurred,30,60,60) + print("bil3") + cv2.waitKey(0) + cv2.imshow('res2'+img_name,blurred) + blurred = cv2.bilateralFilter(blurred,30,60,60) + print("bil4") + cv2.waitKey(0) + cv2.imshow('res2'+img_name,blurred) + #applying filters - bil = cv2.bilateralFilter(img,50,30,30) - # cv2.imshow('res2'+img_name,bil) - # cv2.waitKey(0) - #applying filters - bil = cv2.bilateralFilter(bil,15,60,60) - # cv2.imshow('res2'+img_name,bil) - # cv2.waitKey(0) - #applying filters - median = cv2.medianBlur(bil,5) - # cv2.imshow('res2'+img_name,median) - # cv2.waitKey(0) - median = cv2.medianBlur(median,5) + # bil = cv2.bilateralFilter(img,50,30,30) + # # cv2.imshow('res2'+img_name,bil) + # # cv2.waitKey(0) + # #applying filters + # bil = cv2.bilateralFilter(bil,15,60,60) + # # cv2.imshow('res2'+img_name,bil) + # # cv2.waitKey(0) + # #applying filters + # median = cv2.medianBlur(bil,5) + # # cv2.imshow('res2'+img_name,median) + # # cv2.waitKey(0) + # median = cv2.medianBlur(median,5) # cv2.imshow('res2'+img_name,median) # cv2.waitKey(0) @@ -44,9 +75,10 @@ for img_name in images: # res = center[label.flatten()] # res2 = res.reshape((img.shape)) - cv2.imwrite(os.path.basename(img_name),median) - # cv2.imshow('res2'+img_name,res2) - # cv2.waitKey(0) + cv2.imwrite(os.path.basename(img_name)+"_med5esz_30_60_60.png",blurred) + + cv2.imshow('res2'+img_name,blurred) + cv2.waitKey(0) #cv2.imwrite('/Users/Tilman/Documents/Programme/Python/forschungspraktikum/images/out/images_imdahl/kmean/'+img_name,res2) # cv2.waitKey(0) cv2.destroyAllWindows() \ No newline at end of file diff --git a/playground/threshold_slider.py b/playground/threshold_slider.py index 480eedef9c2229a00b2ab961cf6d98dfe40022ef..3d4333b23f0c760600179b1c64d2f72749bac730 100644 --- a/playground/threshold_slider.py +++ b/playground/threshold_slider.py @@ -64,12 +64,26 @@ def on_gauss(val): gauss=val update() +DISPLAY_RASTER_ELEMENTS=500 def update(): - image = cv.imread('../images/out/fuse_1_bsds500/1.png') - image = cv.bitwise_not(image) - blurred = cv.bilateralFilter(image,50,100,100) - blurred = cv.medianBlur(blurred,gauss) - blurred = cv.GaussianBlur(blurred, (gauss, gauss), 0) + image = cv.imread('../images/out/fuse_1_bsds500/0.png') + max_lw = max(len(image),len(image[0])) + esz = max_lw / DISPLAY_RASTER_ELEMENTS + + # image = cv.bitwise_not(image) + blurred = cv.medianBlur(image,int(int(10*esz)/2)) + #blurred = cv.bilateralFilter(blurred,int(70*esz),int(120*esz),int(120*esz)) + if(gauss > 10): + blurred = cv.bilateralFilter(blurred,int(70*esz),int(120*esz),int(120*esz)) + if(gauss > 20): + blurred = cv.bilateralFilter(blurred,int(70*esz),int(120*esz),int(120*esz)) + if(gauss > 30): + blurred = cv.bilateralFilter(blurred,int(70*esz),int(120*esz),int(120*esz)) + if(gauss > 40): + blurred = cv.bilateralFilter(blurred,int(70*esz),int(120*esz),int(120*esz)) + + # blurred = cv.medianBlur(image,gauss) + # blurred = cv.GaussianBlur(blurred, (gauss, gauss), 0) gray = cv.cvtColor(blurred, cv.COLOR_BGR2GRAY) # auto = auto_canny(blurred) @@ -83,20 +97,20 @@ def update(): # else: # print("dont show") # cv.imshow("Original", blurred) - print(rho,np.pi/theta,threshold) - lines = cv.HoughLines(gray,rho,np.pi/theta,threshold) - if lines is not None: - for rho2,theta2 in lines[:,0]: - a = np.cos(theta2) - b = np.sin(theta2) - x0 = a*rho2 - y0 = b*rho2 - x1 = int(x0 + 1000*(-b)) - y1 = int(y0 + 1000*(a)) - x2 = int(x0 - 1000*(-b)) - y2 = int(y0 - 1000*(a)) + # print(rho,np.pi/theta,threshold) + # lines = cv.HoughLines(gray,rho,np.pi/theta,threshold) + # if lines is not None: + # for rho2,theta2 in lines[:,0]: + # a = np.cos(theta2) + # b = np.sin(theta2) + # x0 = a*rho2 + # y0 = b*rho2 + # x1 = int(x0 + 1000*(-b)) + # y1 = int(y0 + 1000*(a)) + # x2 = int(x0 - 1000*(-b)) + # y2 = int(y0 - 1000*(a)) - cv.line(blurred,(x1,y1),(x2,y2),(0,0,255),2) + # cv.line(blurred,(x1,y1),(x2,y2),(0,0,255),2) cv.imshow("Original", blurred) @@ -107,7 +121,7 @@ cv.createTrackbar("theta", "Original" , 0, 360, on_theta) cv.createTrackbar("threshold", "Original" , 0, 9000, on_threshold) cv.createTrackbar("minline", "Original" , 0, 500, on_minline) cv.createTrackbar("maxgap", "Original" , 0, 100, on_maxgap) -cv.createTrackbar("gauss", "Original" , 0, 100, on_gauss) +cv.createTrackbar("gauss", "Original" , 0, 500, on_gauss) update() cv.waitKey(0)