Unverified Commit 089641fd authored by tilman's avatar tilman
Browse files

fixed all angle bugs and added CORRECTION_ANGLE to define a offset for gaze angle

parent 38b17f7b
...@@ -4,17 +4,26 @@ import cv2 ...@@ -4,17 +4,26 @@ import cv2
import numpy as np import numpy as np
import os import os
from sys import platform from sys import platform
from openpose import pyopenpose as op
from lib.triangles import * from lib.triangles import *
from lib.bisection import * from lib.bisection import *
from lib.misc import * from lib.misc import *
BISEC_VECTORS = True BISEC_VECTORS = True
CORRECTION_ANGLE = 0 CORRECTION_ANGLE = 10
img_name = "/Users/Tilman/Documents/Programme/Python/forschungspraktikum/art-structures-env/src/images/images_imdahl/Judas_und_Christus.jpg" img_name = "/Users/Tilman/Documents/Programme/Python/forschungspraktikum/art-structures-env/src/images/images_imdahl/Judas_und_Christus.jpg"
# pose = 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]]) # pose = 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]])
pose = np.array([[5.9406028e+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]]) pose = np.array([
[5.9406028e+02,3.3695804e+02,9.0203685e-01], #a
[5.3667474e+02,3.8633786e+02,6.6615295e-01], #b
[1.1645105e+02,4.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],
[3.3886292e+02,5.2543573e+02,9.0144195e-02],
[5.4566248e+02,7.3215259e+02,3.6083767e-01], #c
[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]])
img = cv2.imread(img_name) img = cv2.imread(img_name)
bisecVector = poseToBisectVector(pose, CORRECTION_ANGLE) bisecVector = poseToBisectVector(pose, CORRECTION_ANGLE)
......
...@@ -89,6 +89,7 @@ for img_name in images: ...@@ -89,6 +89,7 @@ for img_name in images:
xy = (int(intersections[combi].centroid.x),int(intersections[combi].centroid.y)) xy = (int(intersections[combi].centroid.x),int(intersections[combi].centroid.y))
cv2.circle(overlay, xy, 10, (0,255,0), -1) cv2.circle(overlay, xy, 10, (0,255,0), -1)
global_angle = getGlobalLineAngle(datum.poseKeypoints, CORRECTION_ANGLE) global_angle = getGlobalLineAngle(datum.poseKeypoints, CORRECTION_ANGLE)
print("global_angle",global_angle)
dist = 1000 dist = 1000
d = (int(dist * np.cos(global_angle)), int(dist * np.sin(global_angle))) #with origin zero d = (int(dist * np.cos(global_angle)), int(dist * np.sin(global_angle))) #with origin zero
cv2.line(overlay, xy, (xy[0]+d[0],xy[1]+d[1]), (0,0,255), 2) cv2.line(overlay, xy, (xy[0]+d[0],xy[1]+d[1]), (0,0,255), 2)
......
...@@ -27,9 +27,9 @@ def getAngleGroundNormed(a,b,c, CORRECTION_ANGLE): ...@@ -27,9 +27,9 @@ def getAngleGroundNormed(a,b,c, CORRECTION_ANGLE):
# print("angles",np.rad2deg(vector_angle),np.rad2deg(ground_angle),np.rad2deg(normed_angle)) # print("angles",np.rad2deg(vector_angle),np.rad2deg(ground_angle),np.rad2deg(normed_angle))
if(a[0]-b[0]<0): if(a[0]-b[0]<0):
return (normed_angle+np.deg2rad(180)) return (normed_angle+np.deg2rad(180-CORRECTION_ANGLE))
else: else:
return (np.deg2rad(360)-normed_angle) return (np.deg2rad(360+CORRECTION_ANGLE)-normed_angle)
def getGlobalLineAngle(poses, CORRECTION_ANGLE): def getGlobalLineAngle(poses, CORRECTION_ANGLE):
return np.mean([getAngleGroundNormed(*pose[[0,1,8]][:,:2], CORRECTION_ANGLE) for pose in poses if not 0.0 in pose[[0,1,8]][:,2:]]) return np.mean([getAngleGroundNormed(*pose[[0,1,8]][:,:2], CORRECTION_ANGLE) for pose in poses if not 0.0 in pose[[0,1,8]][:,2:]])
...@@ -43,13 +43,10 @@ def getBisecPoint(a,b,c, CORRECTION_ANGLE): ...@@ -43,13 +43,10 @@ def getBisecPoint(a,b,c, CORRECTION_ANGLE):
def getBisecCone(a,b,c,width, CORRECTION_ANGLE): def getBisecCone(a,b,c,width, CORRECTION_ANGLE):
angle = getAngleGroundNormed(a,b,c, CORRECTION_ANGLE) angle = getAngleGroundNormed(a,b,c, CORRECTION_ANGLE)
angle = angle / 2
#dist = la.norm(a-b)
dist = 1500 dist = 1500
# dist = 100
conePoint1 = (int(dist * np.cos(angle-(width/2))), int(dist * np.sin(angle-(width/2)))) #with origin zero conePoint1 = (int(dist * np.cos(angle-(width/2))), int(dist * np.sin(angle-(width/2)))) #with origin zero
conePoint2 = (int(dist * np.cos(angle+(width/2))), int(dist * np.sin(angle+(width/2)))) #with origin zero conePoint2 = (int(dist * np.cos(angle+(width/2))), int(dist * np.sin(angle+(width/2)))) #with origin zero
return ((conePoint1[0]+b[0],conePoint1[1]+b[1]),(conePoint2[0]+b[0],conePoint2[1]+b[1])) return ((b[0]+conePoint1[0],b[1]-conePoint1[1]),(b[0]+conePoint2[0],b[1]-conePoint2[1]))
def poseToBisectVector(pose, CORRECTION_ANGLE): def poseToBisectVector(pose, CORRECTION_ANGLE):
points = pose[[0,1,8]] points = pose[[0,1,8]]
......
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