精华内容
下载资源
问答
  • #include <iostream> #include <opencv2/opencv.hpp> using namespace std; using namespace cv; int main() { vector<Point2f> vp2f; vp2f.push_back(Point2f(2, 3));...&...
    #include <iostream>
    #include <opencv2/opencv.hpp>
    
    using namespace std;
    using namespace cv;
    
    int main()
    {
        vector<Point2f> vp2f;
        vp2f.push_back(Point2f(2, 3));
        cout << "【二维点向量】" << endl << vp2f << endl;
    
        vector<Point3f> vp3f(10);
        for (size_t i = 0; i < vp3f.size(); i++)
        {
            vp3f[i] = Point3f((float)(i + i), (float)(i * i), (float)(i + 1));
        }
        cout << "【三维点向量】" << endl << vp3f << endl;
    
        cv::waitKey(0);
        return 0;
    }
    cmake_minimum_required(VERSION 3.14)
    project(opencv01)
    
    set(CMAKE_CXX_STANDARD 11)
    
    # OpenCV
    find_package( OpenCV REQUIRED )
    include_directories( ${OpenCV_DIRS} )
    
    add_executable(opencv01 main.cpp)
    target_link_libraries(opencv01 ${OpenCV_LIBS})

    展开全文
  • 在上一篇ROS中点云学习(三):使用PCL接收点云,给没有颜色点云增加颜色变为彩色点云中我们说道,原本/velodyne_points主题下除去XYZ信息,还有intensity(反射强度)和ring(第几圈)信息,但我们把它们舍弃了。...

    在上一篇ROS中点云学习(三):使用PCL接收点云,给没有颜色的点云增加颜色变为彩色点云中我们说道,原本的/velodyne_points主题下除去XYZ信息,还有intensity(反射强度)和ring(第几圈)信息,但我们把它们舍弃了。
    如果现在我们需要这些信息,同时还需要颜色、标签等信息,这就需要自己定义一个点云类型了。

    为了主程序的简洁,我们建立一个头文件myPointType.h,在这里面我们定义我们所需要的点云类型,具体代码如下:

    #ifndef PCL_NO_PRECOMPILE
    #define PCL_NO_PRECOMPILE
    
    
    #include <ros/ros.h>
    #include <pcl/point_types.h>
    #include <pcl/pcl_macros.h>
    #include <pcl/point_cloud.h>
    #include <pcl/io/pcd_io.h>
    #include <pcl_conversions/pcl_conversions.h>
    #include <sensor_msgs/PointCloud2.h>
    
    /*
        *一个具有XYZ、intensity、ring的点云类型
        */
    struct PointXYZIR
    {
        PCL_ADD_POINT4D
        PCL_ADD_INTENSITY;
        uint16_t ring;
        EIGEN_MAKE_ALIGNED_OPERATOR_NEW
    } EIGEN_ALIGN16;
    
    POINT_CLOUD_REGISTER_POINT_STRUCT (PointXYZIR,  
                                       (float, x, x) (float, y, y)
                                       (float, z, z) (float, intensity, intensity)
                                       (uint16_t, ring, ring)
    )
    
    
    /*
        * 一个具有XYZ、RGB、intensity、ring的点云类型
        */
    struct PointXYZRGBIR
    {
        PCL_ADD_POINT4D;
        PCL_ADD_RGB;
        PCL_ADD_INTENSITY;
        uint16_t ring;
        uint16_t label;
        EIGEN_MAKE_ALIGNED_OPERATOR_NEW;
    } EIGEN_ALIGN16;
    
    POINT_CLOUD_REGISTER_POINT_STRUCT (PointXYZRGBIR,  
                                (float, x, x)
                                (float, y, y)
                                (float, z, z)
                                (float, rgb, rgb)
                                (float, intensity, intensity)
                                (uint16_t, label, label)
                                (uint16_t, ring, ring)
    )
     
    #endif  //PCL_NO_PRECOMPILE
    

    接着建立文件pcl_structure.cpp,在这里面我们使用我们定义的点云类型,具体代码如下

    #include "myPointType.h"
     
    
    class pcl_structure
    {
    private:
      ros::NodeHandle n;
      ros::Subscriber subCloud;
      ros::Publisher pubCloud;
      sensor_msgs::PointCloud2 msg;  //接收到的点云消息
      sensor_msgs::PointCloud2 structure_msg;  //等待发送的点云消息
    
    public:
      pcl_structure():
        n("~"){
        subCloud = n.subscribe<sensor_msgs::PointCloud2>("/velodyne_points", 1, &pcl_structure::getcloud, this); //接收velodyne点云数据,进入回调函数getcloud()
        pubCloud = n.advertise<sensor_msgs::PointCloud2>("/structure_cloud", 1000);  //建立了一个发布器,主题是/adjustd_cloud,方便之后发布加入颜色之后的点云
      }
    
      //回调函数
      void getcloud(const sensor_msgs::PointCloud2ConstPtr& laserCloudMsg){
        pcl::PointCloud<PointXYZRGBIR>::Ptr  structure_pcl_ptr (new pcl::PointCloud<PointXYZRGBIR>);   //放在这里是因为,每次都需要重新初始化,舍弃了原有但没用的两个通道intensity、ring
        pcl::PointCloud<PointXYZIR>::Ptr   raw_pcl_ptr (new pcl::PointCloud<PointXYZIR>);   //VLP-16的点云消息包含xyz和intensity、ring的,这里没有加ring不知道为啥也可以,需要的话要自己定义一个点类型PointXYZIR
        pcl::fromROSMsg(*laserCloudMsg, *raw_pcl_ptr);  //把msg消息指针转化为点云指正
        for (int i = 0; i <  raw_pcl_ptr->points.size(); i++)
        //把接收到的点云位置不变,颜色设置为红色
        {
          PointXYZRGBIR  p;
          p.x=raw_pcl_ptr->points[i].x;
          p.y=raw_pcl_ptr->points[i].y;
          p.z=raw_pcl_ptr->points[i].z;
          p.r =   0;
          p.g = 0;
          p.b = 255;
          p.label = (rand() % (10+1));  //设置10个标签,标签随机
          p.intensity = raw_pcl_ptr->points[i].intensity;  //继承之前点云的intensity
          p.ring = raw_pcl_ptr->points[i].ring;  //继承之前点云的ring
          structure_pcl_ptr->points.push_back(p);
        }
        structure_pcl_ptr->width = 1;
        structure_pcl_ptr->height = raw_pcl_ptr->points.size();
        pcl::toROSMsg( *structure_pcl_ptr, structure_msg);  //将点云转化为消息才能发布
        structure_msg.header.frame_id = "velodyne";//帧id改成和velodyne一样的
        pubCloud.publish( structure_msg); //发布调整之后的点云数据,主题为/adjustd_cloud
      }
    
      ~pcl_structure(){}
    
    };
    
    int main(int argc, char** argv) {
    
      ros::init(argc, argv, "structure");  //初始化了一个节点,名字为structure
    
      pcl_structure ps;
    
      ros::spin();
      return 0;
    }
    
    

    CMakeLists.txt文件和之前差不多,具体为:

    cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
    project(pcl_structure)
    
    set(PACKAGE_DEPENDENCIES
      roscpp
      sensor_msgs
      pcl_ros
      pcl_conversions
      std_srvs
      message_generation 
      std_msgs
    )
    
    find_package(PCL 1.3 REQUIRED COMPONENTS common io)
    find_package(catkin REQUIRED COMPONENTS ${PACKAGE_DEPENDENCIES})
    include_directories(include ${catkin_INCLUDE_DIRS} ${PCL_INCLUDE_DIRS})
    link_directories(${PCL_LIBRARY_DIRS})
    add_definitions(${PCL_DEFINITIONS})
    add_executable(pcl_structure pcl_structure.cpp)
    target_link_libraries(pcl_structure ${PCL_LIBRARIES}  ${catkin_LIBRARIES} )
    

    和上一篇一样,rosbag我们的velodyne包,就可以调用rviz来查看最后的效果。我们可以发现Color Transformer不仅可以使用RGB8查看(效果为蓝色),还可以使用intensity查看,且通道里面多了intensity(反射强度)、ring(第几圈)、labe(标签)信息。
    成功!

    展开全文
  • local a = {x=2} --[[function a.foo1(b) self.x = b end a.foo1(5) print(a.x) --报错:attempt to index global 'self' (a nil value)...--[[function a.foo2(self,b) --用点号定义方法 self.x = b end a.foo2(...
    
    local a = {x=2}
    
    --[[function a.foo1(b)
        self.x = b
    end
    a.foo1(5)
    print(a.x)  --报错:attempt to index global 'self' (a nil value)]]
    
    --[[function a.foo2(self,b)  --用点号定义方法
        self.x = b
    end
    a.foo2(a,5)   --用点号调用方法
    print(a.x)  --输出 5]]
    
    
    --[[function a.foo3(self,b)  --用点号定义方法
        self.x=b
    end
    a:foo3(6)   --用冒号调用方法
    print(a.x)   --输出6]]
    
    
    --[[function a:foo4(b)  --用冒号定义方法
        self.x=b
    end
    a.foo4(a,7)   --用点号调用
    print(a.x)  --输出 7]]
    
    
    --[[function a:foo5(b)  -- 用冒号定义方法
        self.x=b
    end
    a:foo5(8)  --用冒号调用方法
    print(a.x)   -- 输出 8]]
    
    
    function a:foo6(self,b) --用冒号定义方法也传入了self参数
        self.x =b
    end
    a:foo6(8) --报错
    a:foo6(a,8) --不报错
    print(a.x)
    
    
    --冒号的作用就是:定义函数时,给函数的添加隐藏的第一个参数self(这样函数体内有self才不会报错);
    --调用函数时,默认把当前调用者作为第一个参数传递进去
    
    .......
    
    --使用了冒号之后,就相当于我们刚刚使用点号时一样,
    --只是我们不再需要显式地定义self参数以及在调用时主动地传递参数(调用者)
    
    t={x=1}
    
    function t.foo(a)
        print(a.x)
    end
    
    local a = {x=2}
    
    print(t.foo(a)) --输出2
    
    --print(t:foo()) --输出1
    --print(t:foo(a)) --输出1
    
    展开全文
  • 展开全部需要两个类,一个Point,一个Test.这两个类,是调用和被调用关系,Point被Test调用.关系说好了,就是类具体实现...这里面既然对坐标操作就应该定义全局x,y变量.其他就是方法.public void setXY(dou...

    展开全部

    需要两个类,一个Point,一个Test.这两个类,是调用和被调用的关系,Point被Test调用.

    关系说好了,就是类具体实现62616964757a686964616fe59b9ee7ad9431333365646332的问题.

    Point.java

    这个类近似于常说的工具类或者辅助类.这里面既然对坐标操作就应该定义全局的x,y变量.其他的就是

    方法.

    public void setXY(double x,double y){

    this.x = x;

    this.y = y;

    }

    set方法就是类似于这样,把传过来的值赋给定义的全局.而get方法里面很显然就是return.

    而测试类就是调用Point的过程.

    class Point{

    double x,y;

    Point(){

    System.out.println("enter a x value");

    x = Console.readDouble();

    System.out.println("enter a y value");

    y = Console.readDouble();

    }

    Point(double a,double b){

    x = a;

    y = b;

    }

    }

    class PointTest{

    public static void main(String [] args){

    Point p = new Point();

    System.out.println("here is the point :");

    System.out.println(p.x +" " + p.y);

    }

    }

    Point p = new Point();

    展开全文
  • 共回答了23个问题采纳率:91.3% public class Point { private double x; private double y; public Point(double x, double y){ this.x = x; this.y = y; } public double getX() { return x... }这个简单点你我不懂
  • 定义一个描述平面坐标系统中点及其操作类Point.(Java)关注:224答案:1mip版解决时间 2021-02-06 13:42提问者妳螚鬧俄螚笑2021-02-05 21:58定义一个描述平面坐标系统中点及其操作类Point.它有两个double型私有...
  • PCL中点的类型

    2018-11-22 16:24:41
    修改自:...   PCL库中PointCloud数据类型 类定义源码见:/usr/include/pcl-1.7/pcl/point_cloud.h https://blog.csdn.net/ftt1126/article/details/40406111 https://...
  • public class Point { private double x; private double y; public Point(double x, double y){ this.x = x; this.y = y; } public double getX() { return x; } public double getY() { ... }这个简单点你我不懂
  • 定义一个Java类"Point",用来描述平面直角坐标系中点的坐标,该类应能描述点的横、纵坐标信息來源:互聯網2010-02-17 17:03:38評論分類: 電腦/網絡 >> 程序設計 >> 其他編程語言問題描述:定义并使用一个...
  • 平衡二叉树,又叫平衡二叉搜索树(Self-balancing binary search tree),其定义为:它是一 棵空树或它左右两个子树高度差绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。 由定义可知,对于一棵高度为n...
  • #include #include using namespace std; class Point //定义坐标点类 ... //定义必要构造函数 Point(double a=0,double b=0):x(a),y(b){} double xreturn(){return x;} double yreturn(){return y;}
  • 首先参照二维图像中边界的定义,给出了三维点云模型中孔洞边界的定义;之后通过分析待测点邻域协方差矩阵特征值之间的关系,设计了一种边界点检测算子,用于初步提取孔洞边界特征点;然后采用改进的Kruskal最小生成树算法...
  • 我已经编写了一个Swing应用程序.我想将JFrame设置为在用户屏幕中心.我可以使用以下方法将其设置为屏幕大致中心:JFrame frame = new JFrame("Test ...有没有一种方法可以定义Rectangle r,使其中心位于任何屏...
  • 有修饰和被修饰区别,@function作为一个装饰器,用来修饰紧跟着函数(可以是另一个装饰器,也可以是函数定义)。代码1结果1It's funA分析1@funA 修饰函数定义def funC(),将funC()赋值给funA()形参。执行时候...
  • Lua中点和冒号区别

    2018-05-29 20:48:10
    定义:Lua中的点、冒号与self,它们之间的关系主要体现在函数的定义与调用上,Lua在函数定义时可以用点也可以用冒号,如:1 function mytable.fun(p) 2 return p 3 end 4 5 function mytable:fun(p) 6 return p 7 ...
  • 抛物线的中点Bresenham算法

    千次阅读 2019-12-11 17:09:18
    通常定义抛物线为到一条直线(准线)和直线外一点(焦点)距离相等集合。这里只讨论顶点为原点,沿纵坐标轴对称且开口向上情况。而对于其他情况可以通过图形平移和旋转等线性变换得到。其描述方程如下: F...
  • Lua中点号和冒号的应用在函数的定义和调用这两种场合可以互相替换,抛砖引玉,先给出Lua5.3参考手册对于点号冒号区别的解释,例子略有简化: 函数的定义:冒号语法可以用来定义方法, 就是说,函数可以有一个隐式的...
  • Lua中成员函数的定义应该约定一种形式而不要点和冒号同时使用 一:在lua中面向对象编程的时候都要用冒号 使用冒号声明函数的时候会把self作为参数隐藏在里面,如果这个时候用点就会报错 -- 基础类方法 new ...
  • 一、Arcgis中获取点经纬度 1、属性表添加字段:“经度...1、定义数据格式:format long 2、读取数据中所需要字段 3、将数据转换成想要数据格式保存到元胞中(因为每个id对应数据量不一样,故选择元胞) ...
  • 抛物线f(x)=ax2f(x)=ax^2f(x)=ax2的中点Bresenham算法 语言:matlab 画图:plot 1 抛物线特征 通常定义抛物线为到一条直线(准线)和直线外一点(焦点)距离相等集合。这里只讨论顶点为原点,沿纵坐标轴...
  • 重载箭头操作符必须返回指向类类型指针,或者返回定义了自己箭头操作符类类型对象。 如果返回类型是指针,则内置箭头操作符可用于该指针,编译器对该指针解引用并从结果对象获取指定成员。如果被指向类型...
  • 下面就来给大家介绍介绍怎么让几何画板中点和点坐标移动教程。 具体操作步骤如下: 步骤一 建立坐标系。打开几何画板,点击上方“绘图”菜单,在弹出下拉菜单选择“定义坐标系”命令,这样就在画板上建....
  • 直线中点Bresenham算法

    千次阅读 2018-03-14 12:50:46
    颜色类的定义与调用方法。直线类的定义与调用方法。鼠标按键消息映射方法。 实验内容1、案例描述在屏幕客户区内按下鼠标左键赞扬直线的起点,移动鼠标指针到直线终点上,弹起鼠标左键绘制任意斜率的直线段。2、功能...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 773
精华内容 309
关键字:

中点的定义