一种公交站台候车乘客监测方法转让专利

申请号 : CN202311256861.1

文献号 : CN116994211B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 修科鼎周益辉田浩洋

申请人 : 深圳市城市交通规划设计研究中心股份有限公司北京深研智慧交通科技有限公司

摘要 :

本发明提出一种公交站台候车乘客监测方法,属于智能交通技术领域。包括以下步骤:S1.获取公交站台候车区域视频流,对视频流的每一帧图片进行候车人检测;S2.利用检测到的每一帧图片中的候车人,对候车人进行目标跟踪,获取每个人的id信息;S3.统计候车人的候车数据;S4.将统计数据发送至信息显示设备,控制信息显示屏实时显示乘客流量信息;S5.对现场视频进行截图,并将候车数据发送至远程云平台。解决现有技术中存在的监测手段存在重复计数,数据不精确或数据量太少的问题。

权利要求 :

1.一种公交站台候车乘客监测方法,其特征在于,包括以下步骤:S1.获取公交站台候车区域视频流,对视频流的每一帧图片进行候车人检测;

S2.利用检测到的每一帧图片中的候车人,对候车人进行目标跟踪,获取每个人的id信息;

S3.统计候车人的候车数据;

候车数据包括:公交站台进出流量、公交站台候车流量和候车时间;

公交站台进出流量包括:进入人数、出去人数;

公交站台候车流量包括:当前候车人数、最大候车人数、最小候车人数、平均候车人数;

候车时间包括:最大候车时间、最小候车时间和平均候车时间;

统计候车人的候车数据,包括以下步骤:

S31.初始设定数据采样周期T,在摄像头视频画面上,画一个多边形1包围公交站台的候车区域,并将多边形1的顶点坐标信息按照固定格式进行保存;

S32.读取多边形1的顶点坐标点信息,得到多边形1的顶点坐标集合;

S33.计算每一帧图片中人的坐标点;

S34.判断人的坐标处于多边形内还是外;

S35.设定内缩值,将多边形1的顶点坐标集合等距内缩,得到多边形2的顶点坐标集合;

S36.设定数组长度,创建2个数组集合,数组集合inside_id[length]存储多边形2内部的人id信息,数组集合outside_id[length]存储多边形1外部的人id信息;

S37.根据人的坐标和得到的多边形顶点坐标集合,判断人的坐标,如果处于多边形2的内部,并且inside_id[length]中没有这个人的id,则将这个人的id入队到inside_id[length]中;否则,如果处于多边形1的外部,并且outside_id[length]中没有这个人的id,则将此人的id入队到outside_id[length]中;

S38.再判断人的坐标,如果处于多边形2的内部,并且outside_id[length]中有这个人的id,则进入的人数累加1,并同时将这个人的id从outside_id[length]中删除;

S39.再判断人的坐标,如果处于多边形1的外部,并且inside_id[length]中有这个人的id,则出去人数累加1,并同时将此人的id从inside_id[length]中删除;

S4.将统计数据发送至信息显示设备,控制信息显示屏实时显示乘客流量信息;

S5.对现场视频进行截图,并将候车数据发送至远程云平台。

2.根据权利要求1所述的一种公交站台候车乘客监测方法,其特征在于,利用检测到的每一帧图片中的候车人,对候车人进行目标跟踪,获取每个人的id信息的方法是:S21.角点检测获取每帧图像的角点集,对角点进行id编号;

S22.在连续帧之间每一个角点通过平移或仿射进行运动估计;

S23.连接连续帧中的运动向量,得到每一个角点的轨迹;

S24.对于各角点,移除被遮挡或无法准确跟踪的角点;

S25.使用步骤S21‑S23跟踪新的和旧的角点。

3.根据权利要求2所述的一种公交站台候车乘客监测方法,其特征在于,判断人的坐标处于多边形内还是外的方法是:设多边形的n个顶点坐标集合为:point[n][2]={{x0,y0},{x1,y1},...,{xn‑1,yn‑1}},人的坐标为(x,y),判断方法为:S341.初始设定变量i=0,j=n‑1,count=0,其中i表示顶点序号,从0开始到n‑1,j表示逆时针方向与第i个顶点相邻的另一个顶点序号,n表示多边形顶点数,count表示交点数;

S342.如果i

S343.判断人坐标点(x,y)的水平射线,是否与第z条边相交,若 ;

且  ;

则相交,令count=count+1;

S344.令j=i,i=i+1,跳转到S342;

S345.判断count是否为奇数,若为奇数判断人的坐标处于某个多边形内。

4.根据权利要求3所述的一种公交站台候车乘客监测方法,其特征在于,设定内缩值,将多边形1的顶点坐标集合等距内缩,得到多边形2的顶点坐标集合的方法,包括以下步骤:S351.输入内缩值和多边形1的n个顶点坐标集合point1[n][2];

S352.设多边形1的顶点序号为i,i从0开始到n‑1;

S353.如果i顶点序号

S354.求取当前多边形1第i个顶点坐标经过偏移得到的多边形2第i个顶点坐标;

设多边形1当前第i个顶点坐标为(p.x,p.y),相邻另外两个顶点坐标分别为(p1.x,p1.y)和(p2.x,p2.y),那么:p.x=point1[i][0]

p.y=point1[i][1]

如果i等于0,即第一个顶点的相邻顶点坐标(p1.x,p1.y)为:p1.x=point1[n‑1][0]p1.y=point1[n‑1][1]否则为:

p1.x=point1[i‑1][0]p1.y=point1[i‑1][1]如果i等于(n‑1),即最后一个顶点的相邻顶点坐标(p2.x,p2.y)为:p2.x=point1[0][0]

p2.y=point1[0][1]

否则为:

p2.x=point1[i+1][0]p2.y=point1[i+1][1]将相邻的两边换算成向量P1(v1x,v1y)和向量P2(v2x,v2y)进行计算:v1x=p1.x‑p.x

v1y=p1.y‑p.y

v2x=p2.x‑p.x

v2y=p2.y‑p.y

将P1和P2转化为单位化向量,得到P1(vv1x,vv1y),P2(vv2x,vv2y):;

向量P1和P2相交于P点,平移expand距离之后,再次相交于Q点,设vectorLen为PQ两点距离,计算vectorLen值:;

根据P1和P2向量的叉乘积的值来判断夹角是凹角还是凸角:judge=v1x*v2y‑v2x*v1y若叉乘积 judge<0,向量夹角为凹角;

若叉乘积 judge>0,向量夹角为凸角;

若叉乘积judge=0,向量夹角为平角;

当向量夹角为凹角和平角时不执行操作,当向量夹角为凸角时则令:vectorLen=vectorLen*(‑1)计算当前顶点坐标,经过等距内缩之后的x坐标偏移量和y坐标偏移量,分别设为vx和vy:;

S355.根据顶点坐标的x坐标偏移量和y坐标偏移量,即可计算得到多边形2第i个顶点坐标:;

S356.跳转到S353重复执行,直至退出结束。

5.根据权利要求4所述的一种公交站台候车乘客监测方法,其特征在于,统计公交站台候车流量方法是:当前候车人数:在某帧图片中,如果人的坐标处于多边形1内,令当前候车人数累计加

1,同时,在周期时间内,每隔1秒对当前候车人数进行采集计算,共统计T次:则最大候车人数:如果最大候车人数小于当前候车人数,令最大候车人数=当前候车人数;

最小候车人数:如果最小候车人数大于当前候车人数,令最小候车人数=当前候车人数;

平均候车人数:周期时间结束后,平均候车人数= ;

其中,T表示周期时间,s表示序号,即第s秒,currentWaits表示第s秒时刻的当前候车人数。

6.根据权利要求5所述的一种公交站台候车乘客监测方法,其特征在于,统计候车时间的方法,包括以下步骤:S331.初始设定k值,k表示图片间隔数量;

S332.抽取第q帧图片,当前时间为time1,判断某个人是否处于多边形1内,如果处于多边形1内,则将这个人的id信息加入所有候车人的id数组集合中;

S333.抽取第q+k帧图片,当前时间为time2,判断某个人是否处于多边形1内,如果处于多边形1内,则将这个人的id信息加入所有候车人的id数组集合中,并循环对比判断此人id是否在第q帧图片中的所有候车人id数组集合中;

如果不在,则当前候车人的候车时间waitTime清零:waitTime=0;

如果在,则对当前候车人的候车时间waitTime进行累计: waitTime=waitTime+(time2‑time1);

S334.在某个时刻获取当前所有候车人的候车时间,筛选得到某个时刻的最大候车时间、最小候车时间和平均候车时间;

设某个时刻总候车人数为m,所有候车人候车时间的集合为waitTime[m],那么:最大候车时间:最大候车时间等于所有候车人候车时间的集合中的最大值;

最小候车时间:最小候车时间等于所有候车人候车时间的集合中的最小值;

平均候车时间:平均候车时间 = ;

其中,m表示某个时刻的总候车人数,p表示序号,waitTime[p]表示第p个人的当前候车时间。

7.一种电子设备,其特征在于,包括存储器和处理器,存储器存储有计算机程序,所述的处理器执行所述计算机程序时实现权利要求1‑6任一项所述的一种公交站台候车乘客监测方法的步骤。

8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1‑6任一项所述的一种公交站台候车乘客监测方法。

说明书 :

一种公交站台候车乘客监测方法

技术领域

[0001] 本申请涉及候车乘客监测,尤其涉及一种公交站台候车乘客监测方法,属于智能交通技术领域。

背景技术

[0002] 公交站台候车乘客候车状态监测,是交通领域中的常见需求。在实际应用中,公交站台候车区域属于无规则范围区域,候车乘客存在行动方向不确定性和密集等情况,监测难度较大。采用人工监测,无疑效率低下,通过视频识别,对人进行目标检测和id跟踪时,因为存在目标检测框抖动和id跳变的现象,导致一般的监测手段存在重复计数,数据不精确或数据量太少的问题。

发明内容

[0003] 在下文中给出了关于本发明的简要概述,以便提供关于本发明的某些方面的基本理解。应当理解,这个概述并不是关于本发明的穷举性概述。它并不是意图确定本发明的关键或重要部分,也不是意图限定本发明的范围。其目的仅仅是以简化的形式给出某些概念,以此作为稍后论述的更详细描述的前序。
[0004] 鉴于此,为解决现有技术中存在的技术问题,本发明提供一种公交站台候车乘客监测方法。
[0005] 方案一、一种公交站台候车乘客监测方法,包括以下步骤:
[0006] S1.获取公交站台候车区域视频流,对视频流的每一帧图片进行候车人检测;
[0007] S2.利用检测到的每一帧图片中的候车人,对候车人进行目标跟踪,获取每个人的id信息;
[0008] S3.统计候车人的候车数据;
[0009] 候车数据包括:公交站台进出流量、公交站台候车流量和候车时间;
[0010] 公交站台进出流量包括:进入人数、出去人数;
[0011] 公交站台候车流量包括:当前候车人数、最大候车人数、最小候车人数、平均候车人数;
[0012] 候车时间包括:最大候车时间、最小候车时间和平均候车时间;
[0013] S4.将统计数据发送至信息显示设备,控制信息显示屏实时显示乘客流量信息;
[0014] S5.对现场视频进行截图,并将候车数据发送至远程云平台。
[0015] 优选的,利用检测到的每一帧图片中的候车人,对候车人进行目标跟踪,获取每个人的id信息的方法是:
[0016] S21.角点检测获取每帧图像的角点集,对角点进行id编号;
[0017] S22.在连续帧之间每一个角点通过平移或仿射进行运动估计;
[0018] S23.连接连续帧中的运动向量,得到每一个角点的轨迹;
[0019] S24.对于各角点,移除被遮挡或无法准确跟踪的角点;
[0020] S25.使用步骤S21‑S23跟踪新的和旧的角点。
[0021] 优选的,统计公交站台进出流量的方法,包括以下步骤:
[0022] S31.初始设定数据采样周期T,在摄像头视频画面上,画一个多边形1包围公交站台的候车区域,并将多边形1的顶点坐标信息按照固定格式进行保存;
[0023] S32.读取多边形1的顶点坐标点信息,得到多边形1的顶点坐标集合;
[0024] S33.计算每一帧图片中人的坐标点;
[0025] S34.判断人的坐标处于多边形内还是外。
[0026] S35.设定内缩值,将多边形1的顶点坐标集合等距内缩,得到多边形2的顶点坐标集合;
[0027] S36.设定数组长度,创建2个数组集合,数组集合inside_id[length]存储多边形2内部的人id信息,数组集合outside_id[length]存储多边形1外部的人id信息;
[0028] S37.根据人的坐标和得到的多边形顶点坐标集合,判断人的坐标,如果处于多边形2的内部,并且inside_id[length]中没有这个人的id,则将这个人的id入队到inside_id[length]中;否则,如果处于多边形1的外部,并且outside_id[length]中没有这个人的id,则将此人的id入队到outside_id[length]中;
[0029] S38.再判断人的坐标,如果处于多边形2的内部,并且outside_id[length]中有这个人的id,则进入的人数累加1,并同时将这个人的id从outside_id[length]中删除;
[0030] S39.再判断人的坐标,如果处于多边形1的外部,并且inside_id[length]中有这个人的id,则出去人数累加1,并同时将此人的id从inside_id[length]中删除。
[0031] 优选的,判断人的坐标处于多边形内还是外的方法是:设多边形的n个顶点坐标集合为:point[n][2]={{x0,y0},{x1,y1},...,{xn‑1,yn‑1}},人的坐标为(x,y),判断方法为:
[0032] S341.初始设定变量i=0,j=n‑1,count=0,其中i表示顶点序号或多边形边的序号,从0开始到n‑1,j表示逆时针方向与第i个顶点相邻的另一个顶点序号,n表示多边形顶点数,count表示交点数;
[0033] S342.如果i
[0034] S343.判断人坐标点(x,y)的水平射线,是否与第i条边相交,
[0035] 若
[0036] 且 
[0037] 则相交,另count=count+1;
[0038] S344.另j=i,i=i+1,跳转到S142;
[0039] S345.判断count是否为奇数,若为奇数判断人的坐标处于某个多边形内。
[0040] 优选的,设定内缩值,将多边形1的顶点坐标集合等距内缩,得到多边形2的顶点坐标集合的方法,包括以下步骤:
[0041] S351.输入内缩值和多边形1的n个顶点坐标集合point1[n][2];
[0042] S352.设多边形1的顶点序号为i,i从0开始到n‑1;
[0043] S353.如果i顶点序号
[0044] S354.求取当前多边形1第i个顶点坐标经过偏移得到的多边形2第i个顶点坐标;
[0045] 设多边形1当前第i个顶点坐标为(p.x,p.y),相邻另外两个顶点坐标分别为(p1.x,p1.y)和(p2.x,p2.y),那么:
[0046] p.x=point1[i][0]
[0047] p.y=point1[i][1]
[0048] 如果i等于0,即第一个顶点的相邻顶点坐标(p1.x,p1.y)为:
[0049] p1.x=point1[n‑1][0]
[0050] p1.y=point1[n‑1][1]
[0051] 否则为:
[0052] p1.x=point1[i‑1][0]
[0053] p1.y=point1[i‑1][1]
[0054] 如果i等于(n‑1),即最后一个顶点的相邻顶点坐标(p2.x,p2.y)为:
[0055] p2.x=point1[0][0]
[0056] p2.y=point1[0][1]
[0057] 否则为:
[0058] p2.x=point1[i+1][0]
[0059] p2.y=point1[i+1][1]
[0060] 将相邻的两边换算成向量P1(v1x,v1y)和向量P2(v2x,v2y)进行计算:
[0061] v1x=p1.x‑p.x
[0062] v1y=p1.y‑p.y
[0063] v2x=p2.x‑p.x
[0064] v2y=p2.y‑p.y
[0065] 将P1和P2转化为单位化向量,得到P1(vv1x,vv1y),P2(vv2x,vv2y):
[0066]
[0067] 向量P1和P2相交于P点,平移expand距离之后,再次相交于Q点,设vectorLen为PQ两点距离,计算vectorLen值:
[0068]
[0069] 根据P1和P2向量的叉乘积的值来判断夹角是凹角还是凸角:
[0070] judge=v1x*v2y‑v2x*v1y
[0071] 若叉乘积 judge<0,向量夹角为凹角;
[0072] 若叉乘积 judge>0,向量夹角为凸角;
[0073] 若叉乘积judge=0,向量夹角为平角;
[0074] 当向量夹角为凹角和平角时不执行操作,当向量夹角为凸角时则令:
[0075] vectorLen=vectorLen*(‑1)
[0076] 计算当前顶点坐标,经过等距内缩之后的x坐标偏移量和y坐标偏移量,分别设为vx和vy:
[0077]
[0078] S355.根据顶点坐标的x坐标偏移量和y坐标偏移量,即可计算得到多边形2第i个顶点坐标:
[0079]
[0080] S356.跳转到S353重复执行,直至退出结束。
[0081] 优选的,统计公交站台候车流量方法是:
[0082] 当前候车人数:在某帧图片中,如果人的坐标处于多边形1内,另当前候车人数累计加1,同时,在周期时间内,每隔1秒对当前候车人数进行采集计算,共统计T次:则[0083] 最大候车人数:如果最大候车人数小于当前候车人数,另最大候车人数=当前候车人数;
[0084] 最小候车人数:如果最小候车人数大于当前候车人数,另最小候车人数=当前候车人数;
[0085] 平均候车人数:周期时间结束后,平均候车人数= ;
[0086] 其中,T表示周期时间,i表示序号,即第i秒,currentWaiti表示第i秒时刻的当前候车人数。
[0087] 优选的,统计候车时间的方法,包括以下步骤:
[0088] S331.初始设定k值,k表示图片间隔数量;
[0089] S332.抽取第i帧图片,当前时间为time1,判断某个人是否处于多边形1内,如果处于多边形1内,则将这个人的id信息加入所有候车人的id数组集合中;
[0090] S333.抽取第i+k帧图片,当前时间为time2,判断某个人是否处于多边形1内,如果处于多边形1内,则将这个人的id信息加入所有候车人的id数组集合中,并循环对比判断此人id是否在第i帧图片中的所有候车人id数组集合中;
[0091] 如果不在,则当前候车人的候车时间waitTime清零:waitTime=0;
[0092] 如果在,则对当前候车人的候车时间waitTime进行累计:waitTime=waitTime+(time2‑time1);
[0093] S334.在某个时刻获取当前所有候车人的候车时间,筛选得到某个时刻的最大候车时间、最小候车时间和平均候车时间;
[0094] 设某个时刻总候车人数为m,所有候车人候车时间的集合为waitTime[m],那么:
[0095] 最大候车时间:最大候车时间等于所有候车人候车时间的集合中的最大值;
[0096] 最小候车时间:最小候车时间等于所有候车人候车时间的集合中的最小值;
[0097] 平均候车时间:平均候车时间 =  ;
[0098] 其中,m表示某个时刻的总候车人数,i表示序号,waitTime[i]表示第i个人的当前候车时间。
[0099] 方案二、一种电子设备,包括存储器和处理器,存储器存储有计算机程序,所述的处理器执行所述计算机程序时实现方案一所述的一种公交站台候车乘客监测方法的步骤。
[0100] 方案三、一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现方案一所述的一种公交站台候车乘客监测方法。
[0101] 本发明的有益效果如下:本发明在公交站台区域安装摄像头、边缘计算节点和信息显示屏设备,并利用这些边端设备,全天在线实时监测候车乘客的候车状态。远程云平台负责管理区域范围内的所有公交站台,对获取到的公交站台乘客候车状态数据进行评估分析,根据历史高峰期和低峰期的时空关系提前制定公交出行计划,根据当天高峰告警信息,临时调度公交车出行,并将公交车最新出行计划信息发布到公交站台信息屏设备上显示。从而实现了公交车接驳乘客的灵活调度,解决当下公交车接驳效率低下,不能及时响应乘客乘车需求的问题。

附图说明

[0102] 此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0103] 图1为一种公交站台候车乘客监测方法流程示意图;
[0104] 图2为公交站台多边形区域示意图;
[0105] 图3为公交站台多边形区域内缩示意图。

具体实施方式

[0106] 为了使本申请实施例中的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0107] 实施例1、参照图1‑图3说明本实施方式,一种公交站台候车乘客监测方法,包括以下步骤:
[0108] S1.获取公交站台候车区域视频流,对视频流的每一帧图片进行候车人检测;
[0109] 具体的,边缘计算节点设备接入摄像头设备的实时视频流,进行视频解码操作,将视频分割成一帧帧图片进行输入;然后使用yolov5目标检测算法对每一帧图片进行人检测,得到人在图片上的位置坐标信息,即一个矩形检测框 [ left, top, width, height ],分别为矩形检测框的左上角横坐标、左上角纵坐标、宽度及高度。
[0110] S2.利用检测到的每一帧图片中的候车人,对候车人进行目标跟踪,获取每个人的id信息;
[0111] 通过角点检测获取上一帧图像的稀疏特征点集,再获取下一帧图像的稀疏特征点集,最后判断某特征点在两帧图像之间是否存在光流,实现对图像里面的各个目标进行跟踪。具体包括以下步骤:
[0112] S21.角点检测获取每帧图像的角点集,对角点进行id编号;
[0113] S22.在连续帧之间每一个角点通过平移或仿射进行运动估计;
[0114] S23.连接连续帧中的运动向量,得到每一个角点的轨迹;
[0115] S24.对于各角点,移除被遮挡或无法准确跟踪的角点;
[0116] S25.使用步骤S21‑S23跟踪新的和旧的角点。
[0117] S3.统计候车人的候车数据;
[0118] 基于视频对人进行目标检测和id跟踪,由于人走动、密集或遮挡情况,往往存在目标检测框抖动和id跳变的情况,会出现两种常见的重复计数问题。第一种,当人刚好处于公交站台多边形1的边界时,由于目标检测框抖动,相当于人在不断的进出,从而导致重复计数;第二种,当人处于公交站台多边形1的内部时,由于id跳变的现象,如果只通过统计人id来进行计数,也会出现重复计数。为了避免这些现象,本发明使用下面的方法对公交站台人的进出流量进行统计:
[0119] 候车数据包括:公交站台进出流量、公交站台候车流量和候车时间;
[0120] 公交站台进出流量包括:进入人数、出去人数;
[0121] 公交站台候车流量包括:当前候车人数、最大候车人数、最小候车人数、平均候车人数;
[0122] 候车时间包括:最大候车时间、最小候车时间和平均候车时间;
[0123] 统计公交站台进出流量的方法是:
[0124] S31.初始设定数据采样周期T,在摄像头视频画面上,画一个多边形1包围公交站台的候车区域,并将多边形1的顶点坐标信息按照固定格式进行保存;
[0125] 具体的,顶点坐标保存格式为:x0,y0;x1,y1;...;xn‑1,yn‑1;其中,n代表多边形顶点总数,x代表某个顶点的x坐标,y代表某个顶点的y坐标。
[0126] S32.读取多边形1的顶点坐标点信息,得到多边形1的顶点坐标集合;
[0127] point1[n][2]= {{x0,y0}, {x1,y1},  ..., {xn‑1,yn‑1}};其中,n代表多边形顶点总数,x代表某个顶点的x坐标,y代表某个顶点的y坐标。
[0128] S33.计算每一帧图片中人的坐标点;
[0129] S34.判断人的坐标处于多边形内还是外。
[0130] 通过坐标点的水平线(射线)与多边形各边的交点个数判断,若交点个数是奇数,则判定人的坐标处于多边形内,反之人的坐标处于多边形外,人的坐标处于多边形内判定为候车人;
[0131] 判断人的坐标处于多边形内还是外的方法是:设多边形的n个顶点坐标集合为:point[n][2]={{x0,y0},{x1,y1},...,{xn‑1,yn‑1}},人的坐标为(x,y),判断方法为:
[0132] S341.初始设定变量i=0,j=n‑1,count=0,其中i表示顶点序号或多边形边的序号,从0开始到n‑1,j表示逆时针方向与第i个顶点相邻的另一个顶点序号,n表示多边形顶点数,count表示交点数;
[0133] S342.如果i
[0134] S343.判断人坐标点(x,y)的水平射线,是否与第i条边相交,
[0135] 若
[0136] 且 
[0137] 则相交,另count=count+1;
[0138] S344.另j=i,i=i+1,跳转到S142;
[0139] S345.判断count是否为奇数,若为奇数判断人的坐标处于某个多边形内。
[0140] S35.设定内缩值,将多边形1的顶点坐标集合等距内缩,得到多边形2的顶点坐标集合;
[0141] S351.输入内缩值和多边形1的n个顶点坐标集合point1[n][2];
[0142] S352.设多边形1的顶点序号为i,i从0开始到n‑1,其中n表示多边形顶点个数;
[0143] S353.如果i顶点序号
[0144] S354.求取当前多边形1第i个顶点坐标经过偏移得到的多边形2第i个顶点坐标;
[0145] 设多边形1当前第i个顶点坐标为(p.x,p.y),相邻另外两个顶点坐标分别为(p1.x,p1.y)和(p2.x,p2.y),那么:
[0146] p.x=point1[i][0]
[0147] p.y=point1[i][1]
[0148] 如果i等于0,即第一个顶点的相邻顶点坐标(p1.x,p1.y)为:
[0149] p1.x=point1[n‑1][0]
[0150] p1.y=point1[n‑1][1]
[0151] 否则为:
[0152] p1.x=point1[i‑1][0]
[0153] p1.y=point1[i‑1][1]
[0154] 如果i等于(n‑1),即最后一个顶点的相邻顶点坐标(p2.x,p2.y)为:
[0155] p2.x=point1[0][0]
[0156] p2.y=point1[0][1]
[0157] 否则为:
[0158] p2.x=point1[i+1][0]
[0159] p2.y=point1[i+1][1]
[0160] 具体的,point1[i][0]和point1[i][1]是顶点坐标集合point1[n][2]里面的某个元素(顶点坐标集合是二维数组)“()?():()”是一种条件判断运算符(条件)?(结果1):(结果2)表示如果条件成立,则结果等于结果1,否则等于结果2
[0161] 将相邻的两边换算成向量P1(v1x,v1y)和向量P2(v2x,v2y)进行计算:
[0162] v1x=p1.x‑p.x
[0163] v1y=p1.y‑p.y
[0164] v2x=p2.x‑p.x
[0165] v2y=p2.y‑p.y
[0166] 将P1和P2转化为单位化向量,得到P1(vv1x,vv1y),P2(vv2x,vv2y):
[0167]
[0168] 向量P1和P2相交于P点,平移expand距离之后,再次相交于Q点,设vectorLen为PQ两点的距离,计算vectorLen值:
[0169]
[0170] 根据P1和P2向量的叉乘积的值来判断夹角是凹角还是凸角:
[0171] judge=v1x*v2y‑v2x*v1y
[0172] 若叉乘积 judge<0,向量夹角为凹角;
[0173] 若叉乘积 judge>0,向量夹角为凸角;
[0174] 若叉乘积judge=0,向量夹角为平角;
[0175] 当向量夹角为凹角和平角时不执行操作,当向量夹角为凸角时则令:
[0176] vectorLen=vectorLen*(‑1)
[0177] 计算当前顶点坐标,经过等距内缩之后的x坐标偏移量和y坐标偏移量,分别设为vx和vy:
[0178]
[0179] S355.根据顶点坐标的x坐标偏移量和y坐标偏移量,即可计算得到多边形2第i个顶点坐标:
[0180]
[0181] S356.跳转到S353重复执行,直至退出结束。
[0182] S36.设定数组长度length,创建2个数组集合,数组集合inside_id[length]存储多边形2内部的人id信息,数组集合outside_id[length]存储多边形1外部的人id信息;
[0183] S37.根据人的坐标和得到的多边形顶点坐标集合,判断人的坐标,如果处于多边形2的内部,并且inside_id[length]中没有这个人的id,则将这个人的id入队到inside_id[length]中;否则,如果处于多边形1的外部,并且outside_id[length]中没有这个人的id,则将此人的id入队到outside_id[length]中;
[0184] 具体的,入队方式:数组头元素出队,新id加到数组尾;
[0185] S38.再判断人的坐标,如果处于多边形2的内部,并且outside_id[length]中有这个人的id,则进入的人数累加1,并同时将这个人的id从outside_id[length]中删除;
[0186] S39.再判断人的坐标,如果处于多边形1的外部,并且inside_id[length]中有这个人的id,则出去人数累加1,并同时将此人的id从inside_id[length]中删除;
[0187] S32.统计公交站台候车流量方法是:
[0188] 实时计算每帧图片中的当前候车人数(currentWait),并统计周期时间T内的最大候车人数(maxWait)、最小候车人数(minWait)和平均候车人数(aveWait);
[0189] 当前候车人数:在某帧图片中,如果人的坐标处于多边形1内,另当前候车人数累计加1,同时,在周期时间内,每隔1秒对当前候车人数进行采集计算,共统计T次:则[0190] 最大候车人数:如果最大候车人数小于当前候车人数,另最大候车人数=当前候车人数;
[0191] 最小候车人数:如果最小候车人数大于当前候车人数,另最小候车人数=当前候车人数;
[0192] 平均候车人数:周期时间结束后,平均候车人数= ;
[0193] 其中,T表示周期时间,i表示序号,即第i秒,currentWaiti表示第i秒时刻的当前候车人数。
[0194] S33.统计候车时间包括以下步骤:
[0195] 在连续的多帧图片中,统计每个候车人的当前候车时间,从而得到某个时刻的最大候车时间(maxWaitTime)、最小候车时间(minWaitTime)和平均候车时间(aveWaitTime);
[0196] 在连续的多帧图片中,抽取一帧图片记录好当前时间和处于多边形1内的所有候车人id信息;再间隔K帧图片后,抽取一帧图片记录好当前时间和处于多边形1内的所有候车人id;对比两帧图片上的候车人id是否相同,即可根据前后两帧图片的时间差,累计每个候车人的候车时间,具体包括以下步骤:
[0197] S331.初始设定k值,k表示图片间隔数量,一般可以设置k=10;
[0198] S332.抽取第i帧图片,当前时间为time1,判断某个人是否处于多边形1内,如果处于多边形1内,则将这个人的id信息加入所有候车人的id数组集合中;
[0199] S333.抽取第i+k帧图片,当前时间为time2,判断某个人是否处于多边形1内,如果处于多边形1内,则将这个人的id信息加入所有候车人的id数组集合中,并循环对比判断此人id是否在第i帧图片中的所有候车人id数组集合中;
[0200] 如果不在,另当前候车人的候车时间waitTime清零:
[0201] waitTime=0
[0202] 如果在,则对当前候车人的候车时间waitTime进行累计:
[0203] waitTime=waitTime+(time2‑time1)
[0204] S334.在某个时刻获取当前所有候车人的候车时间,筛选得到某个时刻的最大候车时间(maxWaitTime)、最小候车时间(minWaitTime)和平均候车时间(aveWaitTime)[0205] 设某个时刻总候车人数为m,所有候车人候车时间的集合为waitTime[m],那么:
[0206] 最大候车时间:最大候车时间maxWaitTime等于所有候车人候车时间的集合中的最大值;
[0207] 最小候车时间:最小候车时间minWaitTime等于所有候车人候车时间的集合中的最小值;
[0208] 平均候车时间:平均候车时间 =  ;
[0209] 其中,m表示某个时刻的总候车人数,i表示序号,waitTime[i]表示第i个人的当前候车时间。
[0210] S4.将统计数据发送至信息显示设备,控制信息显示屏实时显示乘客流量信息;
[0211] S5.对现场视频进行截图,并将候车数据发送至远程云平台。
[0212] 对现场视频进行截图,并将统计数据按照固定报文格式进行数据结构化处理之后发送至远程云平台,数据参数包含有:边缘计算节点设备id、消息id、消息类型、消息时间、摄像头id、地点路段id、图片、统计周期时间、进入人数、出去人数、当前候车人数、最大候车人数、最小候车人数、平均候车人数、最大候车时间、最小候车时间和平均候车时间。
[0213] 具体的,报文格式是:{
[0214] "deviceId": "mydeviceid",
[0215] "messageId": "gdfgrdtasdasdwaewaedxZxzd",
[0216] "type": "busStationFlow",
[0217] "time": "2023‑06‑16 18:30:00",
[0218] "params": {
[0219] "sourceId": "aaaaa001" ,
[0220] "roadId": "road001" ,
[0221] "pictureList": "picture/20230616/xx.jpg" ,
[0222] "cycle": 60,
[0223] "entry": 20,
[0224] "exit": 14,
[0225] "currentWait": 6,
[0226] "aveWait": 8,
[0227] "maxWait": 10,
[0228] "minWait": 5,
[0229] "aveWaitTime": 30,
[0230] "maxWaitTime": 60,
[0231] "minWaitTime": 10
[0232] }
[0233] }
[0234] 报文字段说明:
[0235] 参数名:deviceId ;类型:string;字段说明:信息来源的边缘计算节点设备的id;
[0236] 参数名:messageId;类型:string;字段说明:消息唯一id,采用32位uuid;
[0237] 参数名:type;类型:string;字段说明:消息类型;
[0238] 参数名:time;类型:string;字段说明:消息时间,日期型时间;
[0239] 参数名:params;类型:object;字段说明:参数项;
[0240] 参数名:sourceId;类型:string;字段说明:事件数据来源id,例如摄像头id;
[0241] 参数名:roadId ;类型:string;字段说明:地点路段的id;
[0242] 参数名:pictureList;类型:string;字段说明:图片,多张图片用逗号做间隔“,”;
[0243] 参数名:cycle;类型:string;字段说明:统计周期时间,单位秒;
[0244] 参数名:entry;类型:int;字段说明:周期时间内进入站台的累计人数;
[0245] 参数名:exit;类型:int; 字段说明:周期时间内走出站台外的累计人数;
[0246] 参数名:currentWait;类型:int;字段说明:当前站台候车人数;
[0247] 参数名:aveWait;类型:int;字段说明:周期时间内站台平均候车人数;
[0248] 参数名:maxWait;类型:int;字段说明:周期时间内站台最大候车人数;
[0249] 参数名:minWait;类型:int;字段说明:周期时间内站台最小候车人数;
[0250] 参数名:aveWaitTime;类型:int;字段说明:当前平均候车时间,单位秒;
[0251] 参数名:maxWaitTime;类型:int;字段说明:当前最大候车时间,单位秒;
[0252] 参数名:minWaitTime;类型:int;字段说明:当前最小候车时间,单位秒。
[0253] 实施例2、本发明的计算机装置可以是包括有处理器以及存储器等装置,例如包含中央处理器的单片机等。并且,处理器用于执行存储器中存储的计算机程序时实现上述的一种公交站台候车乘客监测方法的步骤。
[0254] 所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器  (Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列 (Field‑Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
[0255] 所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card, SMC),安全数字(Secure Digital, SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
[0256] 实施例3、计算机可读存储介质实施例。
[0257] 本发明的计算机可读存储介质可以是被计算机装置的处理器所读取的任何形式的存储介质,包括但不限于非易失性存储器、易失性存储器、铁电存储器等,计算机可读存储介质上存储有计算机程序,当计算机装置的处理器读取并执行存储器中所存储的计算机程序时,可以实现上述的一种公交站台候车乘客监测方法的步骤。
[0258] 所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read‑Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
[0259] 尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。