热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

标的_opencv类简单分析:Point

篇首语:本文由编程笔记#小编为大家整理,主要介绍了opencv类简单分析:Point相关的知识,希望对你有一定的参考价值。定义

篇首语:本文由编程笔记#小编为大家整理,主要介绍了opencv类简单分析: Point相关的知识,希望对你有一定的参考价值。



定义

point的定义其实只是一个别名,如下,它最终是由Point_模板得来的

typedef Point_<int> Point2i;
typedef Point_ Point2l;
typedef Point_<float> Point2f;
typedef Point_<double> Point2d;
typedef Point2i Point

下面简单分析下Point_模板
1. Point_是一个由坐标’ x ‘和’ y ‘指定的2D点的模板类
2. 类的实例可以与C结构体、CvPoint、CvPoint2D32f互换&#xff0c;还有一个转换操作符将点坐标转换为指定类型&#xff0c;从浮点坐标到整数坐标的转换是通过四舍五入来完成的&#xff0c;通常&#xff0c;转换对每个坐标使用这个操作
3. 除了上述声明中列出的类成员外&#xff0c;还对点执行以下操作:

pt1 &#61; pt2 &#43; pt3;
pt1 &#61; pt2 - pt3;
pt1 &#61; pt2 * a;
pt1 &#61; a * pt2;
pt1 &#61; pt2 / a;
pt1 &#43;&#61; pt2;
pt1 -&#61; pt2;
pt1 *&#61; a;
pt1 /&#61; a;
double value &#61; norm(pt); // L2 norm
pt1 &#61;&#61; pt2;
pt1 !&#61; pt2;


template<typename _Tp> class Point_
public:
typedef _Tp value_type;
//默认构造函数
Point_();
Point_(_Tp _x, _Tp _y);
Point_(const Point_& pt);
Point_(const Size_<_Tp>& sz);
Point_(const Vec<_Tp, 2>& v);
Point_& operator &#61; (const Point_& pt);
//转换成其它数据类型
template<typename _Tp2> operator Point_<_Tp2>() const;
//转换成老式的C结构体
operator Vec<_Tp, 2>() const;
//点积
_Tp dot(const Point_& pt) const;
//用双精度算术计算的点积
double ddot(const Point_& pt) const;
//叉积/向量积
double cross(const Point_& pt) const;
//检查点是否在指定的矩形内
bool inside(const Rect_<_Tp>& r) const;
_Tp x; //点的x坐标
_Tp y; //点的y坐标
;

用法例子&#xff1a;

...
int main(int argc, char *argv[])
Point2f a(0.3f, 0.2f), b(0.1f, 0.4f);
Point pt &#61; (a &#43; b)*10.f;
cout <<"pt: "<", " < double aa &#61; a.ddot(b); // 0.3 x 0.1 &#43; 0.2 x 0.4 &#61; 0.03 &#43; 0.08 &#61; 0.11
double bb &#61; a.cross(b); //暂未弄清计算公式
cout <<"aa: "< cout <<"bb: "< return 0;

输出结果&#xff1a;

pt: 4, 6
aa: 0.11
bb: 0.1

推荐阅读
  • 深入解析C++ Atomic编程中的内存顺序
    在多线程环境中,为了防止多个线程同时修改同一数据导致的竞争条件,通常会使用内核级同步对象,如事件、互斥锁和信号量等。然而,这些方法往往伴随着高昂的上下文切换成本。本文将探讨如何利用C++11中的原子操作和内存顺序来优化多线程编程,减少不必要的开销。 ... [详细]
  • ED Tree HDU4812 点分治+逆元
    这道题非常巧妙!!!我们进行点分治的时候,算出当前子节点的所有子树中的节点,到当前节点节点的儿子节点的距离,如下图意思就是当前节点的红色节点,我们要求出红色节点的儿子节点绿色节点, ... [详细]
  • SQL 数据恢复技巧:利用快照实现高效恢复
    本文详细介绍了如何在 SQL 中通过数据库快照实现数据恢复,包括快照的创建、使用及恢复过程,旨在帮助读者深入了解这一技术并有效应用于实际场景。 ... [详细]
  • 深入解析mt_allocator内存分配器(二):多线程与单线程场景下的实现
    本文详细介绍了mt_allocator内存分配器在多线程和单线程环境下的实现机制。该分配器以2的幂次方字节为单位分配内存,支持灵活的配置和高效的性能。文章分为内存池特性描述、内存池实现、单线程内存池实现、内存池策略类实现及多线程内存池实现等部分,深入探讨了内存池的初始化、内存分配与回收的具体实现。 ... [详细]
  • 本文介绍了进程的基本概念及其在操作系统中的重要性,探讨了进程与程序的区别,以及如何通过多进程实现并发和并行。文章还详细讲解了Python中的multiprocessing模块,包括Process类的使用方法、进程间的同步与异步调用、阻塞与非阻塞操作,并通过实例演示了进程池的应用。 ... [详细]
  • 本文详细解析 Skynet 的启动流程,包括配置文件的读取、环境变量的设置、主要线程的启动(如 timer、socket、monitor 和 worker 线程),以及消息队列的实现机制。 ... [详细]
  • 本文详细介绍了如何在Vue项目中集成和配置XGPlayer视频插件,包括安装步骤、基本配置以及常见问题的解决方法。 ... [详细]
  • 本文介绍了一个基本的同步Socket程序,演示了如何实现客户端与服务器之间的简单消息传递。此外,文章还概述了Socket的基本工作流程,并计划在未来探讨同步与异步Socket的区别。 ... [详细]
  • 前端技术分享——利用Canvas绘制鼠标轨迹
    作为一名前端开发者,我已经积累了Vue、React、正则表达式、算法以及小程序等方面的技能,但Canvas一直是我的盲区。因此,我在2018年为自己设定了一个新的学习目标:掌握Canvas,特别是如何使用它来创建CSS3难以实现的动态效果。 ... [详细]
  • 构建Python自助式数据查询系统
    在现代数据密集型环境中,业务团队频繁需要从数据库中提取特定信息。为了提高效率并减少IT部门的工作负担,本文探讨了一种利用Python语言实现的自助数据查询工具的设计与实现。 ... [详细]
  • 详解MyBatis二级缓存的启用与配置
    本文深入探讨了MyBatis二级缓存的启用方法及其配置细节,通过具体的代码实例进行说明,有助于开发者更好地理解和应用这一特性,提升应用程序的性能。 ... [详细]
  • Node.js 断点调试指南
    本文详细介绍了利用Google Chrome DevTools和Visual Studio Code两种工具进行Node.js应用的断点调试技巧。 ... [详细]
  • 基于51单片机的多项目设计实现与优化
    本文探讨了基于51单片机的多个项目的设计与实现,包括PID控制算法的开关电源设计、八音电子琴仿真设计、智能抽奖系统控制设计及停车场车位管理系统设计。每个项目均采用先进的控制技术和算法,旨在提升系统的效率、稳定性和用户体验。 ... [详细]
  • 本文深入探讨了领域驱动设计(DDD)中的聚合概念及其在事件溯源架构中的应用。聚合是一组紧密相关的类,这些类作为一个整体运作,形成一个有明确边界的组织。只有通过聚合根才能与聚合内的对象进行交互。 ... [详细]
  • 使用IntelliJ IDEA高效开发与运行Shell脚本
    本文介绍了如何利用IntelliJ IDEA中的BashSupport插件来增强Shell脚本的开发体验,包括插件的安装、配置以及脚本的运行方法。 ... [详细]
author-avatar
喂_早安学院_703
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有