![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
Joemt
这个作者很懒,什么都没留下…
展开
-
二进制流转bmp数据
#include <iostream>#include <string>#include <fstream>using namespace std;void write_bmpheader(unsigned char *bitmap, int offset, int bytes, int value){ int i; for (i = 0; i < bytes; i++) bitmap[offset + i] = (v原创 2020-12-07 20:04:58 · 674 阅读 · 0 评论 -
c++读取文件名
文件类型类型数值备注DT_UNKNOWN0DT_FIFO1一个命名管道或FIFODT_CHR2字符设备DT_DIR4目录DT_BLK6块设备DT_REG8常规文件DT_LNK10字符链接DT_SOCK12套接字DT_WHT14#include <iostream>#include <stdio.h>#include <stdlib.h>#include原创 2020-12-07 19:42:06 · 1225 阅读 · 0 评论 -
Mac安装Qt配置opencv+pcl
环境:macos+Qt5.14.2+opencv4.2.0_1+pcl1.9.1安装1、 安装Qt下载:https://mirrors.tuna.tsinghua.edu.cn/qt/official_releases/qt/5.14/5.14.2/qt-opensource-mac-x64-5.14.2.dmg安装:直接根据需求安装即可*2、 安装opencv4.2.0_1:*终端执行brew install opencv*3、 安装pcl1.9.1:*参考 https://blog.csdn原创 2020-07-31 17:57:37 · 1055 阅读 · 2 评论 -
C++文件写入与读取
在写项目时,往往需要配置一些数据,这里做个记录#include <fstream> //ifstream读文件,ofstream写文件,fstream读写文件#include <string>#include <iostream>using namespace std; int main(){ ifstream in("读取.tx...原创 2020-04-16 16:09:51 · 725 阅读 · 0 评论 -
体积测量演示
对物体实现实时体积测量。1、可以固定测量2、可以手持测量3、可以实现多个物体同时测量规则物体测量 规则物体测量 不规则物体测量及轮廓渲染 不规则物体测量 ...原创 2020-04-15 10:47:43 · 630 阅读 · 2 评论 -
Ubuntu16.04安装PCL1.9
1、安装各种依赖包sudo apt-get install g++sudo apt-get install cmake cmake-guisudo apt-get install doxygensudo apt-get install mpi-default-dev openmpi-bin openmpi-commonsudo apt-get install libflann1.8 li...原创 2020-03-30 15:13:19 · 988 阅读 · 0 评论 -
Mac配置pcl
配置直接利用brew install pcl进行安装,我这里安装后是pcl1.9版本,此过程可能需要翻墙。安装完成利用brew info pcl查看安装情况,如果出现下图,说明安装完成。如果某项出现❌,可以利用brew install ***进行重新安装。直到出现上图为止。pcl实例:这里以CMakeLists.txt为例:项目目录:demo|__build|__src| ...原创 2020-02-10 16:12:23 · 902 阅读 · 0 评论 -
Camshift算法
Camshift算法目的是为了解决meanshift算法中检测窗口大小固定问题,该算法利用零阶距和xy方向的一阶距来实现对窗口大小进行估算。步骤:1、 获取目标窗口直方图2、 利用该直方图获取图像方向投影图3、 利用目标窗口参数获取其窗口直方图和反向投影图(meanshift)4、 计算其窗口反向投影图零阶距和xy方向的一阶距5、 计算新的窗口中心6、 判断窗口偏移量是否小于阈值,如...原创 2020-01-17 10:04:14 · 1520 阅读 · 0 评论 -
平面检测(HoughTransform)
霍夫变换大多都用在二维平面中的线、圆检测,这里将其扩展到三维空间点的平面检测。其中建立的霍夫变换空间如下:核心代码:#include <iostream>#include <opencv2/opencv.hpp>#include <string>#include <math.h>#include <vector>#inc...原创 2020-01-14 14:21:49 · 2254 阅读 · 0 评论 -
特征匹配目标跟踪(FAST+ORB)
这里直接用的是opencv3.0.0自带函数进行处理。#include <iostream>#include <signal.h>#include <vector>#include <opencv2/opencv.hpp>using namespace cv;using namespace std;bool tracking = ...原创 2020-01-08 16:59:00 · 1987 阅读 · 1 评论 -
Mean shift目标跟踪算法
Mean shift作为一种跟踪算法经常被用到。它是一种无参数密度估计寻找局部极值的迭代逼近算法。Mean shift直观描述其中红点为特征点,蓝色为检测区域,黑点为检测区域中心,黑色虚线箭头为中心点到特征点向量,黄色箭头为检测区域内中心点到所有特征点向量和,是一个向量,这里称其为Mean shift向量(漂移向量)。经过一次迭代,中心点向最优区域移动,移动量为上一漂移向量。经过多次...原创 2020-01-08 15:30:25 · 1688 阅读 · 1 评论 -
粒子滤波算法理解及实现
粒子滤波算法是一种非线性的滤波方法。其大致思路如下(这里以图像目标(人)跟踪为例):1、 首先在整个图像中随机初始化一些粒子点,并对每个粒子点分配权值2、 在视频中框出待跟踪目标3、 更新权值,增加靠近框出的目标粒子权值4、 根据状态转移矩阵和测量数据,对粒子权重,对粒子进行重采样粒子滤波示过程示意图初始化图像粒子点和权重框出待跟踪目标更新权重,其中权重较小的直接舍弃,权值较...原创 2019-12-31 23:00:36 · 13634 阅读 · 3 评论 -
卡尔曼滤波(Kalman Filter)理解及实现
#include "opencv2/video/tracking.hpp"#include "opencv2/highgui/highgui.hpp"#include <stdio.h>#include<iostream>using namespace cv;using namespace std;const int winHeight = 600;cons...原创 2019-12-27 17:49:12 · 1372 阅读 · 0 评论 -
C++中内存释放,防止野指针出现
new类型// 一维数组int *data = int new[len];// 释放内存delete []data;data = nullptr;// 二维数组int **data = int new[row];for(int i=0; i<row; i++){ data[i] = new int[col];}// 释放内存for(int i=0; i<ro...原创 2019-12-03 12:16:59 · 619 阅读 · 0 评论 -
Ubuntu生成动态链接库
文件目录operation |__my_operation.c |__my_operation.hmy_operation.c文件#ifndef __MYOPERATION__#define __MYOPERATION__ #include <iostream>using namespace std;int my_sum(int a, int b){ ret...原创 2019-12-02 17:58:44 · 725 阅读 · 0 评论 -
CMakeList.txt文件
1、最简单格式,即只有一个主cpp文件。文件目录demo |__build |__src | |__main.cpp |__CMakeLists.txtCMakeLists.txt文件cmake_minimum_required(VERSION 2.8) # CMake最低版本要求,低于2.6的构建过程会被终止project( HelloWorld ) ...原创 2019-12-02 17:55:26 · 430 阅读 · 1 评论 -
霍夫变换算法理解
霍夫变换个人理解就是将一种检测事件,转换为一种概率统计问题,期间需要找到起变换公式。其标准定义可自行百度。一、 霍夫变换直线检测直线我们一般可以在直角坐标系用斜截式来定义,即y=k*x+b。但同时也可以用极坐标系进行表示,即xcosθ+ysinθ=r。这里当(x,y)一定时,当θ在0-pi范围内,可以得到一条曲线当同时3个点,作曲线可以得到如下图其中,可以看到一个公共交点,该交点就...原创 2019-11-19 23:10:09 · 1038 阅读 · 0 评论 -
格拉布斯(Grubbs)准则法
原理参考:https://wenku.baidu.com/view/90cc05a7c8d376eeafaa3151.html格拉布斯(Grubbs)准则法就是剔除数据集中偏离较远的数据,可以减少异常值对总体数据的影响。#include <stdio.h>#include <stdlib.h>#include <math.h>#include <...原创 2019-11-13 15:59:05 · 12758 阅读 · 4 评论 -
LSD直线检测实现
算法原理参考:https://blog.csdn.net/weixin_42647783/article/details/81200534算法实例:#include <iostream>#include <string>#include "opencv2/core/core.hpp"#include "opencv2/core/utility.hpp"#incl...原创 2019-10-28 14:34:27 · 620 阅读 · 0 评论 -
MATLAB与VS混合编程
环境:WIN10 64位+VS2013专业版+Matlab2015bWin32实现功能:Matlab2015bWin32将函数生成动态库,在VS2013中调用。具体实现过程:首先添加环境变量和确认是否适合混合编程: 打开matlab,在工作空间中输入mex –setup,回车。当弹出如上图,说明matlab支持VS2013和VS2015,本教程使用的是VS2015,可以进行混合编程。开始实现混合编原创 2017-09-08 17:13:25 · 1612 阅读 · 12 评论 -
OpenCV实现主成分分析(PCA)
这几天将大学期间做的项目,尝试将MATLAB代码转为C++。 这里对主成分做一个备忘。 这里先简单说一下我对主成分的理解,就是将数据降维。一组数据间的各个元素可能存在一定的关联。比如:一组数据[1 2 3],那么3可以由1+2表示,那么就可以用[1 2]来表示[1 2 3]这组数据,这样在实际数据处理时,就可以只用处理2维的数据,不用处理3维数据,可以提高程序效率。详细的原理讲解,网上大神们讲得原创 2017-11-09 23:06:38 · 3741 阅读 · 0 评论 -
VS实现获取图像灰度共生矩阵
之前用MATLAB写的灰度共生矩阵,忽生想法,将其转为VS来实现。 首先极其简单说一下什么是灰度共生矩阵,我个人的理解是,就是像素间的一种对应关系,详细的讲解网上很多,我就不多说了。 这里的算法为了方便理解,没有处理时,最左边一列没有处理。 环境:WIN10+VS2015+OpenCV3.1.0 首先是最经典的lena图片 下面就直接贴代码 VS#include<opencv2/open原创 2017-11-13 22:45:59 · 1066 阅读 · 0 评论 -
opencv实现自己训练的Adaboost(Haar-like)检测识别库
前几周在网上看到了利用opencv自带的人脸检测xml文件,实现人脸检测。最后想通过自己的训练来实现人脸检测,从而扩展到实现其他目标检测。在网上也看到了许多资料,都讲得特别好。我这里做个总结,防止忘记。首先是环境:win10+vs2013+opencv-2.4.13+cmake-3.8.0这里我想多说两句,由于opencv3.x没有源文件没有haartraining源文件,因此只能选择opencv2原创 2017-12-11 21:42:47 · 1456 阅读 · 0 评论 -
双边平滑滤波
双边滤波器是一种非线性滤波器,是将空间滤波和灰度值合并进行滤波,不仅可以对图像进行平滑处理,还可以保留图像中边缘信息。 可以将其理解为: 一个函数由像素欧式距离决定滤波器模板的系数【高斯滤波器(Gaussian Filter)】:高斯滤波器只考虑像素间的欧式距离,其使用的模板系数随着和窗口中心的距离增大而减小另一个函数由像素的灰度差值决定滤波器的系数【α-截尾均值滤波器(Alpha-Tri...原创 2018-08-05 22:25:16 · 1054 阅读 · 0 评论 -
c++实现计算特征值和特征向量
今天实现了一下特征值和特征向量,参考https://blog.csdn.net/webzhuce/article/details/85013301bool My_Jacobi(const vector<vector<double>>& matrix, vector<vector<double>>& eigenvectors, v...原创 2019-06-19 23:06:20 · 8584 阅读 · 2 评论 -
c++协方差矩阵
协方差矩阵是PCA计算中一个重要的计算过程,这里可以参考:http://blog.codinglabs.org/articles/pca-tutorial.html。代码:#include <iostream>#include <vector>using namespace std;int My_CalcCovarMatrix(const vector<v...原创 2019-06-17 22:28:17 · 2357 阅读 · 0 评论 -
Graham Scan凸包算法实现
今天实现以下Graham Scan算法算法,看了网上的资料,个人理解1、找左下角点2、对所有点相对该点的极角进行排序3、将1、2入栈,以后的点逐个入栈,下一个新点如果满足逆时针旋转(右手准则),则该点入栈,如果是顺时针则该点放弃,再重复步骤 3,直到扫描到最后一个点结束这里可以参考:https://blog.csdn.net/houszchina/article/details/792...原创 2019-06-29 10:46:29 · 537 阅读 · 0 评论 -
凸包最小外接矩形
获取点的凸包之后,可以实现以下获取凸包的最小外接矩形,获取思路:1、以其中两点作为矩形的一条边2、以该边作为x轴基坐标,并做y轴基坐标3、将所有点以该基坐标进行旋转,找到以该边为基准的所有点的x坐标的最小和最大值,既y轴的最大值4、获取该范围的面积值,并获取边界数据5、重复每条边,并每次判断保存最小面积及参数6、最终输出最小外接矩形的参数参考:https://blog.csdn.ne...原创 2019-06-30 17:07:14 · 3593 阅读 · 4 评论 -
opencv数据类型对应关系
结构类型数据类型数据点表示实例空间大小MINMAX单通道CV_8UC1ucharMat.at(rows, cols)8bits0255CV_8SC1charMat.at(rows, cols)8bits-128127CV_16UC1ushortMat.at(rows, cols)16bits065535CV...原创 2019-08-10 15:48:12 · 1305 阅读 · 1 评论 -
C++实现双目校准
接着昨天的继续用C++实现双目校准。该方法比昨天的MATLAB的效果更加理想。这里首先申明一下,首先要使用OpenCV来获取校准参数。环境:win10+vs2013+OpenCV3.1.0这里的方法也是使用直接法来实现双目校准,首先使用OpenCV获取校准参数,并将校准参数保存到txt文档,供校准使用。这里写代码片/******************************//*原创 2017-10-23 22:45:21 · 2114 阅读 · 1 评论