自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 error C2653: “cv”: 不是类或命名空间名称

error C2653: “cv”: 不是类或命名空间名称,编译器无法区分cv::属于哪个类,将头文件#include<opencv2/opencv.hpp>放在测试函数最前面。

2023-11-14 07:55:50 241

原创 vs2013配置CUDA .cu文件

vs2013 CUDA .cu配置

2022-11-04 08:06:28 714 1

原创 【error LNK2001: unresolved external symbol “public: virtual struct QMetaObject const * __cdecl解决办法

QT出现MOC报错解决办法

2022-08-12 10:45:03 409

原创 opencv同态滤波

//输入灰度图像cv::Mat dst = cv::Mat::zeros(width,height,CV_32FC1);src.convertTo(src,CV_32FC1);for(int i = 0; i < width; ++i){ float *sdata = src.ptr<float>(i); float *ldata = src.ptr<float>(i); for(int j= 0; j< width; ++j) { ldata[j]=

2022-03-09 07:40:24 3105

原创 QT读取文件夹图片

QFileDialog fileDlg; QString imgFile = fileDlg.getOpenFileName(this, QString::fromLocal8Bit("加载图片"), "D:\\", QString::fromLocal8Bit("图片(*jpg *png *bmp *dfx)")); QFileInfo fileInf(imgFile); if (!fileInf.exists()) { QMessageBox::warning(this, QString::

2022-03-08 07:39:49 1241 1

原创 QT中ini文件写入中文出现乱码处理,亲自踩坑解决

vs中.h文件和.cpp文件多数默认为GB2312,因此使用时转为UTF-8在.cpp文件前面加上:#pragma execution_character_set(“utf-8”)//生成ini文件QSetting set(“路径”,QSetting ::IniFormat);set.setIniCodec(“utf-8”);//写入set.beginGroup(“Set”);set.setValue(“one”,“1”);set.setValue(“hello”,“你好”);set.e

2021-07-06 14:17:37 2931 4

原创 c++实现高斯滤波器

//高斯滤波器实现void gausBlur(cv::Mat srcImage, cv::Mat dstImage, int ksize, double sigma){ const double PI = 4.0 / (atan(1.0)); //定义卷积核大小 double **tempMatrix = new doublle*[ksize]; for(int i = 0; i < ksize; ++i){ tempMatrix [i] = new double[ksize]; }

2021-03-02 09:16:50 543

原创 opencv k-means

//用k-means初始化mask,用于二次分割cv::Mat initImage;int imgHeight = initImage.rows;int imgWidth = initImage.cols;int channel = initImage.channels();//cv::Mat kPoins(imgHeight * imgWidth,channel,CV_32F,cv::Scalar(5));for(int i= 0; i< imgHeight; ++i){ const

2020-10-16 09:32:31 90

原创 opencv 旋转矩形框

cv::RotateRect rect;cv::Mat image;//如果原图被压缩0.5既*0.5,若原图不压缩则*1cv::Vec2d points[4] = { cv::Vec2d(rect.size.width * 0.5, rect.size.heigtht 0.5), cv::Vec2d(rect.size.width * 0.5, -rect.size.heigtht 0.5), cv::Vec2d(-rect.size.width * 0.5, -rect.size.heigt

2020-10-14 08:18:03 495

原创 opencv -- XML写入写出

//XML写入写出//写入操作int exposure;float mat[3][6];std::vector<cv::Point2f> points[6];std::vector<Mat> img_list[6];std::vector<string> path[6];//cv::FileStorage fs(param,cv::FileStorage::WRITE);//fs << "exposure" << exp

2020-09-25 10:22:09 111

原创 点投影到直线

直线两点p1(x1,y1)、p2(x2,y2),斜率k、截距b直线方程y=Ax+By+Cdouble A = -(y1 - y2);double B = (x1 - x2);double C = x2 * y1 - x1 * y2;//点q(x,y)投影到直线,得到投影点q(x0,y0)x0 = (k * (y - b) + x) / (k * k + 1);y0 = k * x0 + b;...

2020-09-25 09:27:49 818

原创 最小二乘法拟合平面

最小二乘法通过最小化误差的平方和,使拟合对象越来越接近最终对象。拟合直线就是找到一条直线使所有数据点到拟合直线的欧式距离之和最小。拟合平面就是找到一个平面使得所有数据点到拟合平面的欧式距离最小设拟合平面方程为ax+by+cz+d=0,则约束条件为a平方+b平方+c平方=1构建方程ax’+by’+cz’+d=0,则可以得到如下方程:a(x-x’)+b(y-y’)+c(z-z’)=0主要是将方程组变为齐次方程组,用于奇异值分解。接下来将方程转为矩阵形式,使得min||WX||,约束条件||X||=

2020-08-12 10:08:46 5600

原创 图像随机噪声及亮度变化

//用于图像测试包括随机加噪声,改变图像明亮,图像旋转const double grayScale = 1.0 + ((rand() % 40) - 20) / 60.0'static int angleDegree = 0.0;angleDegree = angleDegree + 1; const int noise = 2.0;unsigned char *ptr = testImage.ptr(0,0);for(int i = 0; i < testImage.rows * te

2020-07-22 08:50:34 454

原创 拟合直线后简单快速求解两直线交点

opencv 自带直线拟合函数:void fitLine(InputArray points, OutputArray line, int distType, double param, double reps, double aeps)输入points:C++中一般定义为std::vector points;输出line:C++中一般定义为std::vector lines;第三个参数最重要,目前使用最为广泛的为最小二乘法(cv::DIST_L2),相比较其他参数效果更好,速度更优。//根据输出

2020-07-16 09:00:22 648

原创 根据角度或者弧度将坐标点投影

弧度:theta = angle * 3.1415926 / 180;//对梯度图像遍历,得到每一个像素点对应的梯度幅角double theta = angle * 3.1415926 / 180; //得到弧度std::vector<Point2d> pos(2);pos[0] = Point2d(cos(-theta),sin(-theta));pos[1] = Point2d(-sin(-theta),cos(-theta));//遍历梯度图像,将灰度值在某一阈值的点筛选,然后

2020-07-10 08:40:37 289

原创 坐标点数据拟合直线

//随机筛选10组数据(或n组)std::vector<Point> prjPoint; //存放坐标数据std::vector<vector<Point>> randPoint(10);for(int i = 0; i < 10; ++i){ for(int j = 0; j < prjPoint.size(); ++j){ int number = rand() % (prjPoint.size() - 1); randPoint[i].p

2020-07-09 19:24:24 1222

原创 直方图统计中的极大值筛选

类似统计数据为0,1,1,2,3,2,1,1,0,0,2,3,3,5,3,5,3,0…等这样具有明显波峰的极值筛选。//定义大小为Image.cols(主要避免越界,可随意定义)std::vector<int> countPixel(Image.cols,0);//由于可能存在相同的极值,所以对直方图数据进行平滑,权重和为1const double filter[7] = {0.0536,0.1232,0.2032,0.2400,0.2032,0.1232,0.0536};std::v

2020-07-09 09:04:10 502

原创 直方图统计角度最大值和第二最大值

std::vector<int> angle;//存放角度std::vector<int> countAngle(361,0);for(int i = 0; i < angle.size(); ++i){ int temp = int(angle[i]); countAngle[temp]++;}int oneMaxValue = 0;for(int i = 0; i < countAngle.size(); ++i){ if(countAngle[i]

2020-07-08 09:03:51 332 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除