0

问题摘要

我试图通过在这些关键点的热图上运行一个循环并将阈值设置为 200 来运行一个用于获取鼻子和颈部关键点的 python 脚本。它适用于单个图像。但是,我尝试修改我的脚本以适用于网络摄像头,而我用于热图的完全相同的循环引发了“列表索引超出范围”错误。我很难理解为什么会这样以及如何调试它。

另外,如果其他人已经实现了类似的东西,请告诉我你是如何做到的。

这是引发错误的代码部分的片段:

opWrapper = op.WrapperPython()
opWrapper.configure(params)
opWrapper.start()
start = time.time()
Process Image

print("[INFO] starting video stream...")
#vs = VideoStream(src=0).start()

video = cv2.VideoCapture(0)
while True:
    
    ret, imageToProcess = video.read()
    datum = op.Datum()
    datum.cvInputData = imageToProcess
    opWrapper.emplaceAndPop([datum])


    # Process outputs
    outputImageF = (datum.inputNetData[0].copy())[0,:,:,:] + 0.5
    outputImageF = cv2.merge([outputImageF[0,:,:], outputImageF[1,:,:], outputImageF[2,:,:]])
    outputImageF = (outputImageF*255.).astype(dtype='uint8')
    heatmaps = datum.poseHeatMaps.copy()
    heatmaps = (heatmaps).astype(dtype='uint8')
    print(heatmaps.shape)
    print(imageToProcess.shape)
    coord_nose=[]
    coord_neck=[]
    for i, j in itertools.product(range(heatmaps.shape[1]), range(heatmaps.shape[2])):
            if heatmaps[0][i][j]>200:
                print(i,j)
                coord_nose.append([j,i])
            if heatmaps[1][i][j]>200:
                coord_neck.append([j,i])
        
        

    circle = cv2.circle(outputImageF,tuple(coord_nose[0]),5,(0,0,255),-1)
    circle1 = cv2.circle(outputImageF,tuple(coord_neck[0]),5,(0,255,0),-1)
    cv2.imshow("OpenPose 1.6.0 - Tutorial Python API", outputImageF)
    end=time.time()
    print(end-start)
    
    if cv2.waitKey(1) & 0xFF == ord('q'): # press q to quit program
        video.release()
        cv2.destroyAllWindows()

引发错误的循环:

    for i, j in itertools.product(range(heatmaps.shape[1]), range(heatmaps.shape[2])):
            if heatmaps[0][i][j]>200:
                print(i,j)
                coord_nose.append([j,i])
            if heatmaps[1][i][j]>200:
                coord_neck.append([j,i])

控制台输出(有错误):

(25, 176, 320) <-- shape of heatmaps 
(720, 1280, 3) <--- shape of my input image
list index out of range
4

0 回答 0