zoukankan
html css js c++ java
Hough变换,找直线
/**/
/*
This is a standalone program. Pass an image name as a first parameter
of the program.Switch between standard and probabilistic Hough transform
by changing "#if 1" to "#if 0" and back
*/
#include
<
cv.h
>
#include
<
highgui.h
>
#include
<
math.h
>
int
main(
int
argc,
char
**
argv)
{
IplImage
*
src;
src
=
cvLoadImage(
"
1.bmp
"
,
-
1
);
IplImage
*
dst
=
cvCreateImage( cvGetSize(src),
8
,
1
);
IplImage
*
color_dst
=
cvCreateImage( cvGetSize(src),
8
,
3
);
CvMemStorage
*
storage
=
cvCreateMemStorage(
0
);
CvSeq
*
lines
=
0
;
int
i;
IplImage
*
src1
=
cvCreateImage(cvSize(src
->
width,src
->
height),IPL_DEPTH_8U,
1
);
cvCvtColor(src, src1, CV_BGR2GRAY);
//
cvCopy(src,src1);
cvCanny( src1, dst,
50
,
200
,
3
);
cvCvtColor( dst, color_dst, CV_GRAY2BGR );
#if
0
lines
=
cvHoughLines2( dst, storage, CV_HOUGH_STANDARD,
1
, CV_PI
/
180
,
150
,
0
,
0
);
for
( i
=
0
; i
<
lines
->
total; i
++
)
{
float
*
line
=
(
float
*
)cvGetSeqElem(lines,i);
float
rho
=
line[
0
];
float
theta
=
line[
1
];
CvPoint pt1, pt2;
double
a
=
cos(theta), b
=
sin(theta);
if
( fabs(a)
<
0.001
)
{
pt1.x
=
pt2.x
=
cvRound(rho);
pt1.y
=
0
;
pt2.y
=
color_dst
->
height;
}
else
if
( fabs(b)
<
0.001
)
{
pt1.y
=
pt2.y
=
cvRound(rho);
pt1.x
=
0
;
pt2.x
=
color_dst
->
width;
}
else
{
pt1.x
=
0
;
pt1.y
=
cvRound(rho
/
b);
pt2.x
=
cvRound(rho
/
a);
pt2.y
=
0
;
}
cvLine( color_dst, pt1, pt2, CV_RGB(
255
,
0
,
0
),
3
,
8
);
}
#else
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
,
0
,
0
),
3
,
8
);
}
#endif
cvNamedWindow(
"
Source
"
,
1
);
cvShowImage(
"
Source
"
, src );
cvNamedWindow(
"
Hough
"
,
1
);
cvShowImage(
"
Hough
"
, color_dst );
cvWaitKey(
0
);
}
查看全文
相关阅读:
黑客术语1
leetcode笔记--3 Niim game
台湾ML笔记--1.2 formalize the learning probelm
台湾ML笔记--1.1什么时候适合使用ML
leetcode笔记--2 reverse string
leetcode笔记--1 two-sum
数据挖掘导论笔记1
python基础----ipython快捷键
记录新的开始
编译器错误消息: CS1617: 选项“6”对 /langversion 无效
原文地址:https://www.cnblogs.com/wqj1212/p/1010355.html
最新文章
SpringMVC 的初理解
linux系统下运行java项目的脚本编写
maven初步了解
JSON的使用小结
Android Application
android:allowbackup="true"
android:ellipsize的使用
Android 基础组件
Android ImageView 点击更换头像
Android Activity Intent
热门文章
Android ImageView
Android 布局 ViewGroup
设计模式(二)工厂模式Factory (创建型)
设计模式概述
Java中equals和“==””的区别,String特殊
java使用ObjectInputStream从文件中读取对象
JAVA基础1
工作心得2015-12-24
C语言文件详解
C语言——文件
Copyright © 2011-2022 走看看