OC-1、类和对象

一、面向对象基础
1.什么是面向对象
面向过程:定义了一个数据类型,没有定义对这种类型的操作
在面向过程中,无法限制用户对数据的操作
面向对象程序设计(OOP)将数据和数据对象封装成一个不可分割的整体---对象来处理
程序用对象及对象间的相互作用来完成程序的功能
2.什么是对象
OOP中的对象,是现实世界中某个存在的实体在计算机逻辑中的映射和体现;每个对象—状态(属性),行为(操作),唯一标识
3.抽象---有选择的忽略无关的因素
4.类
类是对同种对象的抽象,是对具有共同行为和属性的对象的统一描述
类是对象的抽象,而对象是类的具体定义
5.类的定义
在objective-c中类的定义分为-----接口部分(声明了类的方法和实例变量,以及类的基类)------类的实现(包含实现每一个方法(行为)的代码段)
通常类的声明和实现放在不同的文件中
类的声明                  父类,可以定义自己的类
@interfaceASStudent:NsObject{
@protected          
NSString * name;   实例变量
int age;
Nsstring * sid;
}
-(NSString*)name;
-(NSString*)setName:(NSString *)aName;   方法
-(int)age;
-(void)setAge:(int)aAge;
@end
  1. 实例变量和方法不能会在一起,实例变量必须放在花括号内
  2. 实例变量有访问权限
  3. 没有static,const实例变量
  4. 方法的访问权限都是public,没有其他权限
  5. 方法不能在类声明中实现
6.类的实例化,对象的初始化
类是模板,对象是具体表现,任何对象都要占用内存空间
  1. 分配内存空间:根据类中声明的实例变量为对象分配内存。将所有实例变量置为默认0,并返回首地址
  2. 初始化:为对象实例变量设置初始值
  3. 命名的规范
public修饰的实例变量可以直接使用“->"直接访问
 +(id)alloc;这是一个类方法(静态方法),使用"+"进行修饰,只能用类调用
 -(id)init;这是一个实例方法,使用"-"进行修饰,只能有实例(对象)调用

存取其方法
属性
self和super
### OC-SORT与ByteTrack算法的区别 #### 算法设计原理 OC-SORT 是一种专门针对实时多目标跟踪优化的算法,在复杂杂乱环境中表现出良好的性能,尤其擅长处理高帧率视频中的对象跟踪任务[^2]。该方法通过引入卡尔曼滤波器来预测物体位置,并利用重叠区域(IoU)以及外观特征来进行轨迹关联。 相比之下,ByteTrack 则采用了一种基于单阶段检测器的方式,它不仅考虑了空间上的交并比(IoU),还融合了时间维度下的运动模型估计,从而实现更稳定的目标追踪效果[^1]。 #### 关键技术对比 - **数据关联机制** 对于OC-SORT而言,其核心在于如何高效地完成当前帧内多个候选框之间的匹配工作。为此,此算法采用了匈牙利算法求解二分图最优指派问题,确保每次都能找到全局意义上的最佳配对方案。 而ByteTrack则提出了Motion-Aware IoU Matching策略,即先根据历史轨迹预测下一时刻可能出现的位置范围,再在此基础上计算实际观测到的对象边界框间的相似度得分,最终决定哪些新出现的目标应该被分配给已有轨迹还是创建新的独立路径。 - **鲁棒性适应能力** 实验表明,在面对遮挡严重或者光照变化剧烈等情况时,由于具备更强的学习能力自适应调整机制,因此通常情况下ByteTrack可以提供更加连贯平滑的结果输出。不过这并不意味着OC-SORT就完全无法应对这些挑战——事实上后者同样可以通过适当调节参数配置达到不错的实战表现水平。 #### 应用场景分析 当涉及到需要快速响应的应用场合比如安防监控系统中的人脸识别模块或是自动驾驶汽车周围的行人监测装置时,考虑到低延迟的重要性往往会选择像OC-SORT这样专为速度而生的技术解决方案。相反如果项目允许一定量级的时间开销并且追求极致精度的话,则建议优先考察包括但不限于ByteTrack在内的其他备选方案。 ```python # Python伪代码展示两种算法的主要流程差异 def oc_sort(detections, tracks): # 使用卡尔曼滤波更新现有track状态 predict_tracks(tracks) # 计算detection与tracks之间cost matrix (IoU + appearance feature) cost_matrix = compute_cost_matrix(detections, tracks) # 解决assignment problem via Hungarian algorithm assignments = hungarian_algorithm(cost_matrix) update_tracks(assignments) def byte_track(detections, tracks): # 预测下一个时刻可能存在的bbox位置 motion_predictions = predict_motion(tracks) # 基于motion prediction构建局部窗口内的iou matching local_iou_scores = calculate_local_iou(motion_predictions, detections) # 综合考虑appearance similarity等因素做出final decision final_decisions = make_final_decision(local_iou_scores) update_tracks(final_decisions) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值