• 大小: 20.64MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-08-01
  • 语言: 其他
  • 标签: Opencv  

资源简介

代码中利用canny边缘检测绘制并取得工程目录图片下的轮廓,对每个轮廓用直线进行拟合,计算每个轮廓中点到拟合直线的距离。以此来判断一个轮廓的线性程度。包括了霍夫变换检测图像中的直线和累计概率霍夫变换检测图像中的直线

资源截图

代码片段和文件信息

//头文件
#include “opencv2/opencv.hpp“
#include 
#include 
#include 
#include “line_fit.h“

using namespace cv;
using namespace std;
//宏定义
#define random(x) ((rand())%x)

//全局变量

//函数声明




int main()
{
/*载入原图片*/
//Mat src = imread(“E://pic_F.L//Picture//OK1.jpg“ 1);//原始图片
Mat src = imread(“OK1.jpg“);
Mat gray;//原始的灰度图
cvtColor(srcgrayCOLOR_RGB2GRAY);

/*图片预处理*/
//平滑滤波使图像的背景尽量统一
Mat _gray;
bilateralFilter(gray_gray55*25/2); //图像滤波
imshow(“平滑处理的图像“_gray);
//图像增强,突出边缘
Mat ruihua;
Mat kernel = (Mat_(33) << 0 -1 0
                                   -1 5 -1
                                   0 -1 0); //定义增强图像的卷积核
filter2D(_grayruihuagray.depth()kernel); //先滤波,再增强。高通滤波器锐化边缘
imshow(“增强后的图像“ruihua);

/*边缘检测*/
Mat canny_output;//边缘检测的输出图像
Canny(ruihua canny_output 60 150 3);
imshow(“canny边缘检测的输出图“ canny_output);

/*利用标准霍夫变换检测途中的直线*/
////检测线段
//vector lines;//存放检测到的直线
//Mat H_result;
//cvtColor(gray H_result CV_GRAY2BGR);
//HoughLines(canny_output lines 1 CV_PI/180 150 0 0);
//画出线段
//for(size_t i=0; i //{
// float rho = lines[i][0] theta = lines[i][i];
// Point pt1pt2;
// double a =cos(theta) b=sin(theta);
// double x0=a*rhoy0 = b*rho;
// pt1.x=cvRound(x0 + 1000*(-b));
// pt1.y=cvRound(x0 + 1000*(a));
// pt2.x=cvRound(x0 - 1000*(-b));
// pt2.y=cvRound(x0 - 1000*(a));
// line(H_result pt1 pt2 Scalar(255) 1 LINE_AA);
//}
//imshow(“直线检测的结果“ H_result);

/*利用累计概率霍夫变换检测直线*/
////检测线段
//vector lines;
//HoughLinesP(canny_output lines 1 CV_PI/180 80 50 10);
//Mat HP_result;
//cvtColor(gray HP_result CV_GRAY2BGR);
////画出线段
//for(size_t i=0; i //{
// Vec4i l = lines[i];
// line(HP_result Point(l[0] l[1]) Point(l[2]l[3]) Scalar(255)1  LINE_AA);
//}
//imshow(“直线检测结果“ HP_result);

/*fitline()拟合直线*/
//获取轮廓,得到一系列的输入点集
vector> cal_contour;//存放轮廓
vector contours;
vector hierarchy;
findContours(canny_output contours hierarchy RETR_TREE CHAIN_APPROX_NONE);
findContours(canny_output cal_contour hierarchy RETR_TREE CHAIN_APPROX_NONE);
cv::Mat image = cv::Mat::zeros(gray.size()CV_8UC3);
vector  lines(contours.size());
double dis_total=0.0;
for(size_t i=0; i {
{
fitLine(contours[i] lines[i] DIST_L2 0 1e-2 1e-2);//拟合直线
//画线
//获取点斜式的点和斜率
cv::Point point0;
point0.x = lines[i][2];
point0.y = lines[i][3];
 
double k = lines[i][1] / lines[i][0];
 
//计算直线的端点(y = k(x - x0) + y0)
cv::Point point1 point2;
point1.x = 0;
point1.y = k * (0 - point0.x) + point0.y;
point2.x = 640;
point2.y = k * (640 - point0.x) + point0.y;

/*计算线性度指标*/
double dis = 0.0;
if(contours[i].size > 0)
{
for(int k=0; k {
for(int l=0; l

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-08-20 21:06  line\
     目录           0  2018-08-21 15:38  line\line\
     目录           0  2018-08-20 21:22  line\line\Debug\
     目录           0  2018-08-21 15:03  line\line\ipch\
     目录           0  2018-08-21 15:03  line\line\ipch\line-370f6cc7\
     文件    65601536  2018-08-21 15:03  line\line\ipch\line-370f6cc7\line-a622a532.ipch
     目录           0  2018-08-21 15:36  line\line\line\
     文件    17125376  2018-08-21 15:38  line\line\line.sdf
     文件        1233  2018-08-20 21:22  line\line\line.sln
     文件       15360  2018-08-21 15:38  line\line\line.suo
     目录           0  2018-08-20 21:22  line\line\line\Debug\
     文件         528  2018-08-20 21:22  line\line\line\Debug\cl.command.1.tlog
     文件       25720  2018-08-20 21:22  line\line\line\Debug\CL.read.1.tlog
     文件         288  2018-08-20 21:22  line\line\line\Debug\CL.write.1.tlog
     文件          55  2018-08-20 21:22  line\line\line\Debug\line.lastbuildstate
     文件        1726  2018-08-20 21:22  line\line\line\Debug\line.log
     文件      391948  2018-08-20 21:22  line\line\line\Debug\line.obj
     文件           0  2018-08-20 21:22  line\line\line\Debug\line.unsuccessfulbuild
     文件         713  2018-08-20 21:22  line\line\line\Debug\line.vcxprojResolveAssemblyReference.cache
     文件           0  2018-08-20 21:22  line\line\line\Debug\line.write.1.tlog
     文件           2  2018-08-20 21:22  line\line\line\Debug\link.command.1.tlog
     文件           2  2018-08-20 21:22  line\line\line\Debug\link.read.1.tlog
     文件           2  2018-08-20 21:22  line\line\line\Debug\link.write.1.tlog
     文件      781312  2018-08-20 21:22  line\line\line\Debug\vc100.idb
     文件     1314816  2018-08-20 21:22  line\line\line\Debug\vc100.pdb
     文件        3901  2018-08-21 15:37  line\line\line\line.cpp
     文件        6736  2018-08-21 08:35  line\line\line\line.vcxproj
     文件        1155  2018-08-21 08:35  line\line\line\line.vcxproj.filters
     文件         143  2018-08-20 21:06  line\line\line\line.vcxproj.user
     文件        3966  2018-08-21 11:14  line\line\line\line_fit.cpp
     文件         364  2018-08-21 10:49  line\line\line\line_fit.h
............此处省略26个文件信息

评论

共有 条评论