Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 速度矢量(光流等)到RGB颜色转换_Python_Matlab_Rgb_Motion_Opticalflow - Fatal编程技术网

Python 速度矢量(光流等)到RGB颜色转换

Python 速度矢量(光流等)到RGB颜色转换,python,matlab,rgb,motion,opticalflow,Python,Matlab,Rgb,Motion,Opticalflow,我已经计算了光流,我想把它转换成图像 以下是opencv2的教程: mag, ang = cv2.cartToPolar(flow[...,0], flow[...,1]) hsv = np.zeros_like(cv2.imread(img_path)) hsv[...,1] = 255 hsv[...,0] = ang*180/np.pi/2 hsv[...,2] = cv2.normalize(mag,None,0,255,cv2.NORM_MINM

我已经计算了光流,我想把它转换成图像

以下是opencv2的教程:

    mag, ang = cv2.cartToPolar(flow[...,0], flow[...,1])
    hsv = np.zeros_like(cv2.imread(img_path))
    hsv[...,1] = 255
    hsv[...,0] = ang*180/np.pi/2
    hsv[...,2] = cv2.normalize(mag,None,0,255,cv2.NORM_MINMAX)
    bgr = cv2.cvtColor(hsv,cv2.COLOR_HSV2BGR)

    cv2.imshow('optical flow',bgr)
我能够做到这一点,但是RGB图像不像最近论文中的图像那样平滑和连续:例如T.Brox基于翘曲或流网理论的高精度光流估计,看起来像平滑、连续的区域,如图所示:

有什么建议可以代替我正在做的事情来实现这种转换(opencv教程)

我找到了一段Matlab脚本,它可能实现了后一个,但我不明白转换是如何进行的。有人能解释一下吗

    flow = mex_OF(double(im1),double(im2));

    scale = 16;
    mag = sqrt(flow(:,:,1).^2+flow(:,:,2).^2)*scale+128;
    mag = min(mag, 255); 
    flow = flow*scale+128;
    flow = min(flow,255);
    flow = max(flow,0);

    [x,y,z] = size(flow);
    flow_image = zeros(x,y,3);
    flow_image(:,:,1:2) = flow;
    flow_image(:,:,3) = mag;

    imwrite(flow_image./255,sprintf('%s/%s/flow_image_%s',save_base,video,frames{k}))
多谢各位