Unverified Commit c9206758 authored by tilman's avatar tilman
Browse files

make some test with filters on bdcn image

parent 961ab0b2
......@@ -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
......@@ -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):
......
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)
......
......@@ -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
......@@ -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))
cv.line(blurred,(x1,y1),(x2,y2),(0,0,255),2)
# 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.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)
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment