求opencv用C++实现边缘检测以及求两直线之间的距离
来源:互联网 发布:超星尔雅网络课程挂机 编辑:程序博客网 时间:2024/06/08 20:00
int main()
{
IplImage* src;
src=cvLoadImage("D:\\image\\line.jpg");
{
IplImage* dst = cvCreateImage( cvGetSize(src), 8, 1 );
IplImage* color_dst = cvCreateImage( cvGetSize(src), 8, 3 );
CvMemStorage* storage = cvCreateMemStorage(0);//存储检测到线段,当然可以是N*1的矩阵数列,如果实际的直线数量多余N,那么最大可能数目的线段被返回
CvSeq* lines = 0;
int i;
IplImage* src1=cvCreateImage(cvSize(src->width,src->height),IPL_DEPTH_8U,1);
cvCvtColor(src, src1, CV_BGR2GRAY); //把src转换成灰度图像保存在src1中,注意进行边缘检测一定要换成灰度图
cvCanny( src1, dst, 50, 200, 3 );//参数50,200的灰度变换
cvCvtColor( dst, color_dst, CV_GRAY2BGR );
lines = cvHoughLines2( dst, storage, CV_HOUGH_PROBABILISTIC, 1, CV_PI/180, 80, 30, 10 );
for( i = 0; i < lines->total; i++ )
{
CvPoint* line = (CvPoint*)cvGetSeqElem(lines,i);
cvLine( color_dst, line[0], line[1], CV_RGB(255,255,0), 3, 8 );
double k=(double)(line[1].y-line[0].y)/(double)(line[1].x-line[0].x);
double d=line[0].y-line[0].x*k;
printf("This is the %d line, this line is y = %.2f x + %.2f \n",i+1,k,d);
}
cvNamedWindow( "Source", 1 );
cvShowImage( "Source", src );
cvNamedWindow( "Hough", 1 );
cvShowImage( "Hough", color_dst );
cvWaitKey(0);
}
}
{
IplImage* src;
src=cvLoadImage("D:\\image\\line.jpg");
{
IplImage* dst = cvCreateImage( cvGetSize(src), 8, 1 );
IplImage* color_dst = cvCreateImage( cvGetSize(src), 8, 3 );
CvMemStorage* storage = cvCreateMemStorage(0);//存储检测到线段,当然可以是N*1的矩阵数列,如果实际的直线数量多余N,那么最大可能数目的线段被返回
CvSeq* lines = 0;
int i;
IplImage* src1=cvCreateImage(cvSize(src->width,src->height),IPL_DEPTH_8U,1);
cvCvtColor(src, src1, CV_BGR2GRAY); //把src转换成灰度图像保存在src1中,注意进行边缘检测一定要换成灰度图
cvCanny( src1, dst, 50, 200, 3 );//参数50,200的灰度变换
cvCvtColor( dst, color_dst, CV_GRAY2BGR );
lines = cvHoughLines2( dst, storage, CV_HOUGH_PROBABILISTIC, 1, CV_PI/180, 80, 30, 10 );
for( i = 0; i < lines->total; i++ )
{
CvPoint* line = (CvPoint*)cvGetSeqElem(lines,i);
cvLine( color_dst, line[0], line[1], CV_RGB(255,255,0), 3, 8 );
double k=(double)(line[1].y-line[0].y)/(double)(line[1].x-line[0].x);
double d=line[0].y-line[0].x*k;
printf("This is the %d line, this line is y = %.2f x + %.2f \n",i+1,k,d);
}
cvNamedWindow( "Source", 1 );
cvShowImage( "Source", src );
cvNamedWindow( "Hough", 1 );
cvShowImage( "Hough", color_dst );
cvWaitKey(0);
}
}
0 0
- 求opencv用C++实现边缘检测以及求两直线之间的距离
- 求空间两条直线之间的距离
- 求空间两条直线之间的距离
- 求两点之间的直线距离
- 求两坐标之间的距离
- 用python 求两地的直线距离
- 空间两条直线求距离
- 已知用经纬度表示的两点,求两点之间的直线距离
- 通过矩阵求两个向量集中元素两两之间的欧氏距离(python实现)
- 通过矩阵求两个向量集中元素两两之间的欧氏距离(python实现)
- 求矩阵各个元素两两之间的欧式距离(python实现)
- 求两直线的交点
- 求两直线的交点
- 求两直线的交点
- 求两直线的交点
- 求两直线的夹角
- 第八周-求两座标之间的距离
- 计算两条直线之间的距离
- maven 常用插件小结
- 优化MySql中explain的时候出现using filesort
- 多线程、设计模式_总结
- python3 装饰器
- Mysql的安装、配置及使用
- 求opencv用C++实现边缘检测以及求两直线之间的距离
- Android异步通信——HandlerThread源码解析
- CodeForces
- hadoop基础学习(一)之hadoop集群搭建
- SOJ 1034
- JAVAC 在jdk的bin目录无法显示问题
- 《富爸爸穷爸爸》读书笔记
- 机器学习04-多变量梯度下降与特征缩放
- C# Ping类