【PCL】4. 随机采样一致性
1. 随机采样一致性算法123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100#include <iostream>#include <pcl/console/parse.h>#include <pcl/point_types.h>#include <pcl/io/pcd_io.h>#include <pcl/sample_consensus/ransac.h>#include <pcl/sample_consensus/sac_model_plane.h>#include <pcl/sample_consensus/sac_model_sphere.h>#include < ...
【PCL】3. octree
三种搜索方式:
体素
K邻域
搜索半径
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374#include <pcl/point_cloud.h>#include <pcl/octree/octree.h>#include <iostream>#include <fstream>#include <ctime>int main(int argc, char** argv) { srand((unsigned int)time(NULL)); pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); // 创建点云数据 clou ...
【PCL】2. kdtree
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869#include <pcl/point_cloud.h>#include <pcl/kdtree/kdtree_flann.h>#include <iostream>#include <vector>#include <ctime>int main(int argc, char** argv){ srand (time(NULL)); // 用系统时间初始化 pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); // 随机初始化点云 cloud->width = 1000; cloud->heig ...
【PCL】1. 读写操作
1.1 写入数据新建项目(文件夹)MYP,在其中新建ma.cpp,代码如下
123456789101112131415161718192021222324252627282930313233343536373839404142#include <iostream> //标准C++库中的输入输出的头文件#include <pcl/io/pcd_io.h> //PCD读写类相关的头文件#include <pcl/point_types.h> //PCL中支持的点类型的头文件int main (int argc, char** argv){ //实例化的模板类PointCloud 每一个点的类型都设置为pcl::PointXYZ/************************************************* 点PointXYZ类型对应的数据结构 Structure PointXYZ{ float x; float y; flo ...
python执行js文件并传递参数方法
0. 前言在python中执行js文件,并向其中传递参数,注意,是向整个js文件传递参数,而不是向其中的函数
1. 方法一该方法会执行整个js文件,并将其中的输出结果作为返回值
1result = subprocess.run(["node", "t4.js", id,pageNo,ts], capture_output=True, text=True)
1.1 测试案例1.1.1 js文件js文件中参数接受形式
1234const args = process.argv.slice(2);const id = args[0];const page = args[1];const ts = args[2];
1.1.2 python文件python中调用js代码案例
12345678910111213141516171819import subprocessimport jsonimport re # 定义要传递的参数# id = "12345"id="2090350703"pageNo=' ...
js逆向之网易云音乐评论
1. 参数定位
对请求的链接下断点,跟着栈,就能很容易的追踪到这两个参数的位置
12345var bKC6w = window.asrsea(JSON.stringify(i8a), bvh7a(["流泪", "强"]), bvh7a(Re1x.md), bvh7a(["爱心", "女孩", "惊恐", "大笑"])); e8e.data = j8b.cr9i({ params: bKC6w.encText, encSecKey: bKC6w.encSecKey })
先找window.asrsea,发现在上面
代码复制如下,可以发现是一个自执行函数,函数d里面调用的函数都在这里面,nice
1234567891011121314151617181920212223242526272829303132333435363738394041!f ...
jsrpc
0. 前言一句话概括一下rpc在爬虫中应用: 在浏览器(作为我们的客户端)找到加密后的参数,然后发送给服务端(python编写的一个本地服务),最后真正爬虫的时候调用这个服务就能获取加密数据了。不需要扣代码和补环境那些。
1. 从WebSocket认识rpc
WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。
WebSocket 使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
在 WebSocket API 中,浏览器和服务器只需要做一个握手的动作,然后,浏览器和服务器之间就形成了一条快速通道。两者之间就直接可以数据互相传送。
现在,很多网站为了实现推送技术,所用的技术都是 Ajax 轮询。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求,然而HTTP请求 ...
从函数到webpack
1. 简介下面是一个常见的js函数:
123function a() {console.log("a")}function b() {console.log("a")}function c() {console.log("a")}
而我们在网站中,常看到:
12345678910!function(i) { function n(t) { return i[t].call(a, b, c, d) }}([ function(t, e) {}, function(t, e, n) {}, function(t, e, r) {}, function(t, e, o) {}]);
上面的代码,我们对其进行简化:
12345678910!function (allModule) { ...
js原型和原型链
js中复杂类型都是对象类型(Object),而js中没有类(class)这个概念,那么其中的继承是如何实现的呢?答案是构造函数
ES6中的class可以看作只是一个语法糖,它的绝大部分的功能,ES5都可以做到,新的class写法只是让原型的写法更加的清晰、更像面向对象编程的语法而已。
1. 前置知识我们需要理解以下知识:* 函数也是一种对象* 普通函数和构造函数的区别* 搞清楚 __proto__、prototype、constructor
需要记住以下两点:
__proto__、constructor属性是对象独有的
prototype属性是函数独有的
前面说过函数也是对象的一种,所以,函数同样有__proto__、constructor,即:函数有:__proto__、constructor、prototype对象有:__proto__、constructor
2. 构造函数构造函数和普通函数在JavaScript中有几个主要区别:
创建对象:构造函数用于创建对象的实例,而普通函数用于执行特定的功能并返回一个值。
使用new关键字:在调用构造函数时,需要使用new ...
js类创建小结
在JavaScript中,有几种方法可以创建类。下面是常见的几种方法:
使用函数构造器(Constructor Function):
1234567891011function MyClass() { // 构造函数体}// 添加方法到原型上MyClass.prototype.myMethod = function() { // 方法体};// 创建类的实例const myObject = new MyClass();
使用原型语法糖(Prototype Syntactic Sugar):
12345678910111213class MyClass { constructor() { // 构造函数体 } // 添加方法 myMethod() { // 方法体 }}// 创建类的实例const myObject = new MyClass();
使用对象字面量(Object Literal):
12345const myObject = { ...