Skip to content
Snippets Groups Projects
Unverified Commit e8cfa982 authored by tilman's avatar tilman
Browse files

inbetween commit

parent 4eccdaaa
No related branches found
No related tags found
No related merge requests found
from shapely.geometry import Polygon
import numpy as np
import itertools
import cv2
from lib.bisection import *
def overlay_two_image_v2(image, overlay, ignore_color=[0,0,0]):
ignore_color = np.asarray(ignore_color)
mask = (overlay==ignore_color).all(-1,keepdims=True)
out = np.where(mask,image,(image * 0.2 + overlay * 0.2).astype(image.dtype))
return out
bisecCones = np.array([
Polygon([[-719, 1205],
[-952, 207],
[ 536, 386],
[-719, 1205]]),
Polygon([[-554, 1264],
[-824, 275],
[ 669, 397],
[-554, 1264]]),
Polygon([[-371, 1444],
[-738, 486],
[ 760, 460],
[-371, 1444]]),
Polygon([[1473, 1200],
[ 653, 1818],
[ 215, 384],
[1473, 1200]])
])
img_name = "/Users/Tilman/Documents/Programme/Python/forschungspraktikum/art-structures-env/src/images/images_imdahl/Judas_und_Christus.jpg"
img = cv2.imread(img_name)
orig = img.copy()
def overlay_two_image_v2(image, overlay, ignore_color=[0,0,0]):
ignore_color = np.asarray(ignore_color)
mask = (overlay==ignore_color).all(-1,keepdims=True)
out = np.where(mask,image,(image * 0.5 + overlay * 0.5).astype(image.dtype))
return out
intersections = coneIntersections(bisecCones)
maxlevel = max(map(lambda t: len(t), intersections.keys()))
for combi in intersections:
#overlay = orig.copy()
is_not_last_level = len(combi) < maxlevel
overlay = np.zeros((len(img),len(img[0]),3), np.uint8)
color = min(((len(combi)-2)*150,255))
cv2.drawContours(overlay, [polyToArr(intersections[combi])], 0, (color,0,255), -1)
if not is_not_last_level: #draw centroid of last polygon
xy = (int(intersections[combi].centroid.x),int(intersections[combi].centroid.y))
cv2.circle(overlay, xy, 10, (0,255,0), -1)
img = overlay_two_image_v2(img, overlay, [0,0,0])
cv2.namedWindow(img_name, cv2.WINDOW_NORMAL)
cv2.imshow(img_name, img)
cv2.waitKey(0)
cv2.destroyAllWindows()
\ No newline at end of file
...@@ -60,7 +60,7 @@ for img_name in images: ...@@ -60,7 +60,7 @@ for img_name in images:
img = datum.cvOutputData img = datum.cvOutputData
#overlay = img.copy() #overlay = img.copy()
#print("poses:"+str(len(datum.poseKeypoints))) print("poses:"+str(datum.poseKeypoints))
if TRIANGLES: if TRIANGLES:
triangles = [poseToTriangle(pose) for pose in datum.poseKeypoints] triangles = [poseToTriangle(pose) for pose in datum.poseKeypoints]
for triangle in triangles: for triangle in triangles:
......
...@@ -9,20 +9,20 @@ def polyToArr(poly): ...@@ -9,20 +9,20 @@ def polyToArr(poly):
else: else:
return None return None
def getAngle(a,b,c, CORRECTION_ANGLE): def getAngle(a,b,c, CORRECTION_ANGLE): #checked is correct
ba = a - b ba = a - b
bc = c - b bc = c - b
cosine_angle = np.dot(ba, bc) / (np.linalg.norm(ba) * np.linalg.norm(bc)) cosine_angle = np.dot(ba, bc) / (np.linalg.norm(ba) * np.linalg.norm(bc))
angle = np.arccos(cosine_angle) angle = np.arccos(cosine_angle)
print("angle",angle,np.rad2deg(angle),360-np.rad2deg(angle),180-np.rad2deg(angle)) #print("angle",angle,np.rad2deg(angle),360-np.rad2deg(angle),180-np.rad2deg(angle))
# TODO get the angle right.... # TODO get the angle right....
# angle = angle - np.deg2rad(CORRECTION_ANGLE) # angle = angle - np.deg2rad(CORRECTION_ANGLE)
if(a[0]-b[0]<0): #check wich direction (left/right) the vector should point # if(a[0]-b[0]<0): #check wich direction (left/right) the vector should point
print("left angle",angle,np.rad2deg(angle)) # print("left angle",angle,np.rad2deg(angle))
angle = 360 - angle #- np.deg2rad(CORRECTION_ANGLE) # angle = 360 - angle #- np.deg2rad(CORRECTION_ANGLE)
else: # else:
print("right angle",angle,np.rad2deg(angle)) # print("right angle",angle,np.rad2deg(angle))
angle = 180 - angle #+ np.deg2rad(CORRECTION_ANGLE) # angle = 180 - angle #+ np.deg2rad(CORRECTION_ANGLE)
return angle return angle
def getGlobalLineAngle(poses, CORRECTION_ANGLE): def getGlobalLineAngle(poses, CORRECTION_ANGLE):
...@@ -30,7 +30,9 @@ def getGlobalLineAngle(poses, CORRECTION_ANGLE): ...@@ -30,7 +30,9 @@ def getGlobalLineAngle(poses, CORRECTION_ANGLE):
def getBisecPoint(a,b,c, CORRECTION_ANGLE): def getBisecPoint(a,b,c, CORRECTION_ANGLE):
angle = getAngle(a,b,c, CORRECTION_ANGLE) angle = getAngle(a,b,c, CORRECTION_ANGLE)
print("getBisecPoint-getAngle full",angle,np.rad2deg(angle))
angle = angle / 2 angle = angle / 2
print("getBisecPoint-getAngle half",angle,np.rad2deg(angle))
dist = la.norm(a-b) dist = la.norm(a-b)
# dist = 100 # dist = 100
d = (int(dist * np.cos(angle)), int(dist * np.sin(angle))) #with origin zero d = (int(dist * np.cos(angle)), int(dist * np.sin(angle))) #with origin zero
......
...@@ -7,6 +7,8 @@ from shapely.geometry import Polygon ...@@ -7,6 +7,8 @@ from shapely.geometry import Polygon
from lib.bisection import * from lib.bisection import *
CORRECTION_ANGLE=20
def trp(point): #trimPoint def trp(point): #trimPoint
return (int(point[0]),int(point[1])) return (int(point[0]),int(point[1]))
...@@ -37,11 +39,11 @@ dist1 = la.norm(a-b) ...@@ -37,11 +39,11 @@ dist1 = la.norm(a-b)
dist2 = la.norm(b-c) dist2 = la.norm(b-c)
print("distance",dist1,dist2) print("distance",dist1,dist2)
angle = getAngle(a,b,c) angle = getAngle(a,b,c, CORRECTION_ANGLE)
print(np.degrees(angle)) #degress print(np.degrees(angle)) #degress
print(angle) #radians print(angle) #radians
#pd = getBisecPoint(a,b,c) #pd = getBisecPoint(a,b,c)
pd1, pd2 = getBisecCone(a,b,c,np.deg2rad(30)) pd1, pd2 = getBisecCone(a,b,c,np.deg2rad(30),CORRECTION_ANGLE)
#cone = np.array([pd1, pd2, b]) #cone = np.array([pd1, pd2, b])
conePoly = Polygon([pd1, pd2, b]) conePoly = Polygon([pd1, pd2, b])
...@@ -54,11 +56,11 @@ cv2.line(img, pa, pb, (0,255,0)); ...@@ -54,11 +56,11 @@ cv2.line(img, pa, pb, (0,255,0));
cv2.line(img, pb, pc, (0,255,0)); cv2.line(img, pb, pc, (0,255,0));
cv2.line(img, pb, pd1, (0,0,255)); cv2.line(img, pb, pd1, (0,0,255));
cv2.line(img, pb, pd2, (0,0,255)); cv2.line(img, pb, pd2, (0,0,255));
print(len(img)) # print(len(img))
print(len(img[0])) # print(len(img[0]))
mainCanvas = Polygon(((0,len(img)), (0,0), (len(img[0]),0), (len(img[0]),len(img)))) # mainCanvas = Polygon(((0,len(img)), (0,0), (len(img[0]),0), (len(img[0]),len(img))))
cv2.drawContours(img, [polyToArr(conePoly)], 0, 255, -1) # cv2.drawContours(img, [polyToArr(conePoly)], 0, 255, -1)
cv2.drawContours(img, [polyToArr(mainCanvas)], 0, 255, -1) # cv2.drawContours(img, [polyToArr(mainCanvas)], 0, 255, -1)
cv2.imshow("test", img) cv2.imshow("test", img)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment