Python 2.7 我想用python openCV找到肘部的角(度)(黑色背景,白色空手道T恤)

Python 2.7 我想用python openCV找到肘部的角(度)(黑色背景,白色空手道T恤),python-2.7,opencv,corner-detection,Python 2.7,Opencv,Corner Detection,我想申请测量某人在空手道(运动)射击的最后位置时肘部的度数。为此,我使用了算法 tan(teata)=(m1+m2)/(1+m1*m2)。但我认为它不能正常工作,或者我在建造它时犯了错误。如果有人能帮助我,我真的很感激我会把代码放在这里。 我编写了python代码,使用了openCV、harris角点检测和简单算法 import numpy as np import cv2 import math p=1000 a=0 t=0 img = cv2.imread('image 1.jpg')

我想申请测量某人在空手道(运动)射击的最后位置时肘部的度数。为此,我使用了算法 tan(teata)=(m1+m2)/(1+m1*m2)。但我认为它不能正常工作,或者我在建造它时犯了错误。如果有人能帮助我,我真的很感激我会把代码放在这里。

我编写了python代码,使用了openCV、harris角点检测和简单算法

import numpy as np
import cv2
import math

p=1000
a=0
t=0
img = cv2.imread('image 1.jpg')
(width,height)=img.shape[:2]
img=cv2.resize(img,(int(height/10),int(width/10)))
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
ret,thr=cv2.threshold(gray,100,255,cv2.THRESH_BINARY)
gray2 = np.float32(gray)

corners = cv2.goodFeaturesToTrack(gray2, 10, 0.1, 10)
corners = np.int0(corners)

for corner in corners:
    x,y = corner.ravel()
    cv2.circle(img,(x,y),3,255,-1)
    if(x > 140 and x < 300):
        cv2.circle(img,(x,y),3,(0,0,255),-1)
        print(x,y)

    if(x > 140 and x < 300):
        if(p > x):
            p=x
            q=y

    if(x > 140 and x < 300):
        if(t < y):
            s = x
            t = y

    if(x > 140 and x < 300):
        if(a < x):
            a=x
            b=y   

def line1m(p,q,s,t,a,b):
    m1=(q - t)/(p - s)
    m2=(b - t)/(a - s)
    print(m1,m2)
    o = (m1 -m2)/(1 + (m1*m2))
    print (o)
    print(math.tan(o))
    return o

def checkconer(o):
    if(o == math.tan(math.pi/2)):
        print ("perfect shot. \n")
    elif(o < math.tan(math.pi/2)):
        print ("Try Again! \nYour elbow angel is greater than 90 degrees.")
    elif(o > math.tan(math.pi/2)):
        print ("Try Again! \nYour elbow angel is less than 90 degrees.")
print(p,q) #(left point)wam patte tiynwa point eka
print(s,t) #(cross point)kapena point eka
cv2.line(img,(p,q),(s,t),(50,249,222),2)
cv2.line(img,(a,b),(s,t),(50,249,222),2)
o = line1m(p,q,s,t,a,b)
checkconer(o)
cv2.imshow('normalCorner',img)

print(corners)
将numpy导入为np
进口cv2
输入数学
p=1000
a=0
t=0
img=cv2.imread('image 1.jpg')
(宽度、高度)=图像形状[:2]
img=cv2。调整大小(img,(int(高度/10),int(宽度/10)))
灰色=cv2.CVT颜色(img,cv2.COLOR\U BGR2GRAY)
ret,thr=cv2.阈值(灰色,100255,cv2.阈值_二进制)
灰色2=np.32(灰色)
角点=cv2。良好特性跟踪(灰色2,10,0.1,10)
角点=np.int0(角点)
对于角落中的角落:
x、 y=角点。拉威尔()
cv2.圆(img,(x,y),3255,-1)
如果(x>140和x<300):
cv2.圆(img,(x,y),3,(0,0255),-1)
打印(x,y)
如果(x>140和x<300):
如果(p>x):
p=x
q=y
如果(x>140和x<300):
如果(t140和x<300):
如果(amath.tan(math.pi/2)):
打印(“重试!\n肘部角度小于90度。”)
打印(p,q)35;(左点)wam patte tiynwa point eka
打印(s,t)35;(交叉点)kapena点eka
cv2.线(img,(p,q),(s,t),(50249222),2)
cv2.线(img,(a,b),(s,t),(50249222),2)
o=线1M(p、q、s、t、a、b)
棋盘格(o)
cv2.imshow('normalCorner',img)
印刷品(角落)
没有错误,但它给出了错误的结果。 有时我的算法会出错,用于查找角点(仅角点检测部分)