ValueError: невозможно преобразовать число с плавающей запятой в целое при использовании cv2.DualTVL1OpticalFlow - PullRequest
0 голосов
/ 27 января 2019

Я пытаюсь прочитать изображения из папки и получить cv2.DualTVL1OpticalFlow.

Когда я пытаюсь сделать раскраску после расчета оптической плотности, эта ошибка показывает, в чем может быть причина? Почему раскраска flow2bgr_middlebury работает при указании пути для текущего и следующего изображений, а не для пути к папке?

import flow_process
import  flow_io
import flow_eval
import os
import pandas as pd
import numpy as np
import random
import cv2
import glob
import sys



packpath = 'C:/Users/Documents/deep_L_projects/optical_flow/'

if not(packpath in sys.path):
     sys.path.append(packpath)


 from utils.flow_process import flow2bgr_middlebury
 from utils.flow_io import read_flo, read_flow_kitti, write_flo
 from utils.flow_eval import epe_rate, epe_average

 input_path = 'C:/Users/Documents/dev/dev_02/in'
 output_path = 'C:/Users/Documents/dev/dev_02/out/'

video_dir = os.listdir(input_path)
for ind in video_dir: 
    vid_dir = os.path.join(input_path, ind)
    save_dir = os.path.join(output_path, ind)
    print(vid_dir)
    images = glob.glob(os.path.join(vid_dir,'*'))
    print ("Processing {}: {} files... ".format(vid_dir, len(images))),
    sys.stdout.flush()
    img_curr = cv2.cvtColor(cv2.imread(images[0]),cv2.COLOR_BGR2GRAY)

    for ret, frames2 in enumerate(images):
            img_next = cv2.cvtColor(cv2.imread(frames2),cv2.COLOR_BGR2GRAY)



            if len(img_curr.shape) != 2:
                img_curr = cv2.cvtColor(img_curr, cv2.COLOR_BGR2GRAY)
                img_next = cv2.cvtColor(img_next, cv2.COLOR_BGR2GRAY)

            optical_flow = cv2.DualTVL1OpticalFlow_create()
            flow = optical_flow.calc(img_curr, img_next, None)
            bgr = flow2bgr_middlebury(flow)
            cv2.imshow('flow', bgr)   

cv2.waitKey(0)

Это ошибка:

ValueError                                Traceback (most recent call last)
<ipython-input-9-e5bad81ceb8b> in <module>
 52                 optical_flow = cv2.DualTVL1OpticalFlow_create()
 53                 flow = optical_flow.calc(img_curr, img_next, None)
---> 54                 bgr = flow2bgr_middlebury(flow)
 55                 cv2.imshow('flow', bgr)
 56 

 ~\Documents\deep_L_projects\optical_flow\utils\flow_process.py in flow2bgr_middlebury(flow)
103             a = np.arctan2(-v[y, x], -u[y, x]) / np.pi
104             fk = (a + 1) / 2 * (ncols - 1)
--> 105             k0 = int(fk)
106             k1 = (k0 + 1) % ncols
107             f = fk - k0

 ValueError: cannot convert float NaN to integer     
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...