python 记录的视频中的特定对象的Angular 检测

h6my8fg2  于 2023-08-02  发布在  Python
关注(0)|答案(2)|浏览(82)

我试图找出整个录制视频中的黑色条纹**的Angular 。我试图在网上找到代码,但只能找到图像的代码或需要手动输入在图像上画线和寻找Angular 。你知道任何项目或开源代码类似于这个问题吗?


的数据
试图找到开源代码,发现了github项目,涉及图像中物体的姿态估计和Angular 检测。没有找到任何记录视频和物体跟踪的东西

tcbh2hod

tcbh2hod1#

我认为第一步是首先将视频分解为一系列图像,然后您可以单独处理它们(例如,将它们分解为一系列图像)。method)。你很可能不需要处理它们,因为我可以想象你对骑手的倾斜Angular 感兴趣,我怀疑你是否能够用这种设置测量Angular 变化的时间尺度为1/帧速率。
假设您只对视频帧的水平或垂直Angular 感兴趣(我没有看到任何其他基准点),那么您可以使用Canny边缘检测:

import cv2

img = cv2.imread("image.png", flags=0)
img_blur = cv2.GaussianBlur(img, (3, 3), 0, 0)

edges = cv2.Canny(image=img_blur, threshold1=100, threshold2=200)

cv2.imshow("Edges", edges)
cv2.waitKey(0)

字符串
它能让你发现背心上条纹的边缘。您可以使用感兴趣区域来仅考虑帧的某个部分,然后查找角或边,并找到这些边相对于水平的Angular 。
我不确定是否有一个到位的方法来做到这一点,因为我认为与其他对象跟踪方法,你只会找到该地区的质心没有额外的步骤。

xj3cbfub

xj3cbfub2#

1.-输入图片

A=imread('001.jpg');
hf=figure(1);
ax=gca
imshow(A);

字符串

2.-调整对比度

th_low=.3  % low contrast threshold
th_high=.7  % high contrast threshold

A2=imadjust(A,[th_low th_low th_low; th_high th_high th_high],[]);


如果不调整对比度,则会出现一些“振铃”。显示了我称之为'振铃'沿着样品横截面
x1c 0d1x的数据

hold(ax,'on');
plot(ax,[130:190],200,'b*')

 figure(2);
 stem([130:190],A(200,[130:190],1),'Color','r');
 grid on
 hold on
 title('without contrast adjustment')
 stem([130:190],A(200,[130:190],2),'Color','g');
 stem([130:190],A(200,[130:190],3),'Color','b');


figure(3);
 stem([130:190],A2(200,[130:190],1),'Color','r');
 grid on
 hold on
 title('with contrast adjustment')
 stem([130:190],A2(200,[130:190],2),'Color','g');
 stem([130:190],A2(200,[130:190],3),'Color','b');



在改进对比度之后,感兴趣区域的横截面的方差沿着感兴趣区域内部低得多,并且边缘更尖锐

3.-在感兴趣区域内获取单点参考

我知道你喜欢不带任何互动的,谁会不同意。
然而,单个点仅仅是为了跳过辨别感兴趣的区域、目标条带。
这样的分类并不难,但很费力,我希望你同意这样一个事实,即这样的分类至少需要另一个问题,例如:那将是'在这个分割的区域中找到 Helm ,道路限制,自行车..直到到达兴趣地带。

figure(4)
ax4=gca
imshow(A2)
hold(ax4,'on');


print('click on 1 point inside area of interest');
[y0,x0]=ginput(1);

x0=floor(x0);y0=floor(y0);

plot(ax4,y0,x0,'g*');

Ar=A2(:,:,1);  % red
Ag=A2(:,:,2);  % green 
Ab=A2(:,:,3);  % blue

ar0=double(Ar(x0,y0))
ag0=double(Ag(x0,y0))
ab0=double(Ab(x0,y0))

er_r=.05;er_g=.05;er_b=.05;  % error threshold 1%

d1=5;  % NOT euclidean, ABS distance

nxr=1;nxl=1;nyu=1;nyd=1;

A0=[Ar(x0,y0) Ag(x0,y0) Ab(x0,y0)]

A_right=[Ar(x0+nxr,y0) Ag(x0+nxr,y0) Ab(x0+nxr,y0)]
A_left=[Ar(x0-nxl,y0) Ag(x0-nxl,y0) Ab(x0-nxl,y0)]
A_up=double([Ar(x0,y0+nyu) Ag(x0,y0+nyu) Ab(x0,y0+nyu)])
A_down=double([Ar(x0,y0-nyd) Ag(x0,y0-nyd) Ab(x0,y0-nyd)])

while abs(double(A0(1))-double(A_right(1)))<d1 && ...       % right
        abs(double(A0(2))-double(A_right(2)))<d1 && ...
        abs(double(A0(3))-double(A_right(3)))<d1 && ...
        y0+nxr<size(Ar,2)

        plot(ax4,y0+nxr,x0,'b*')
        nxr=nxr+1;
        A_right=[Ar(x0,y0+nxr) Ag(x0,y0+nxr) Ab(x0,y0+nxr)]
        plot(ax4,y0+nxr,x0,'r*')
end

while abs(double(A0(1))-double(A_left(1)))<d1 && ...      % left
        abs(double(A0(2))-double(A_left(2)))<d1 && ...
        abs(double(A0(3))-double(A_left(3)))<d1 && ...
        y0-nxl>1

        plot(ax4,y0-nxl,x0,'b*')
        nxl=nxl+1;
        A_left=[Ar(x0,y0-nxl) Ag(x0,y0-nxl) Ab(x0,y0-nxl)]
        plot(ax4,y0-nxl,x0,'r*')
end

while abs(double(A0(1))-double(A_down(1)))<d1 && ...      % down
        abs(double(A0(2))-double(A_down(2)))<d1 && ...
        abs(double(A0(3))-double(A_down(3)))<d1 && ...
        x0+nyd<size(Ar,1)

        plot(ax4,y0,x0+nyd,'b*')
        nyd=nyd+1;
        A_down=[Ar(x0+nyd,y0) Ag(x0+nyd,y0) Ab(x0+nyd,y0)]
        plot(ax4,y0,x0+nyd,'r*')
end

while abs(double(A0(1))-double(A_up(1)))<d1 && ...      % up
        abs(double(A0(2))-double(A_up(2)))<d1 && ...
        abs(double(A0(3))-double(A_up(3)))<d1 && ...
        x0-nyu>1

        plot(ax4,y0,x0-nyu,'b*') % check
        nyu=nyu+1;
        A_up=[Ar(x0-nyu,y0) Ag(x0-nyu,y0) Ab(x0-nyu,y0)]
        plot(ax4,y0,x0-nyu,'r*') % check
end


由此产生的十字架
x1c4d 1x的
while循环中的情节线只是为了确保“十字架”在它应该在的地方结束。
你们所谓的“方向”现在可以在进一步处理“十字架”的上侧找到。也就是说,应该很容易发现上侧是向左还是向右“转弯”,因此驾驶员的“视觉方向”很可能是您需要从标有条带的驾驶员背部的姿态获得的。
在黑色和白色更容易,但现在你有可能直接寻找特色的高-vi背心荧光绿色,以解决角落,我削减瞄准一个单一的鼠标点击。
我想进一步详细说明并添加更多的脚本,以精确地开发这些结束评论,但也许最好先得到一些反馈。
对于以下步骤,如果您需要进一步的帮助,只需发布另一个问题并让我知道下一个问题的链接。

相关问题