Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
9aa5e5b0
O
Opencv
项目概览
Greenplum
/
Opencv
11 个月 前同步成功
通知
7
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
O
Opencv
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
9aa5e5b0
编写于
7月 12, 2011
作者:
A
Ana Huaman
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Added generalContours_demo2.cpp
上级
c21b7477
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
90 addition
and
0 deletion
+90
-0
samples/cpp/tutorial_code/ShapeDescriptors/generalContours_demo2.cpp
.../tutorial_code/ShapeDescriptors/generalContours_demo2.cpp
+90
-0
未找到文件。
samples/cpp/tutorial_code/ShapeDescriptors/generalContours_demo2.cpp
0 → 100644
浏览文件 @
9aa5e5b0
/**
* @function generalContours_demo2.cpp
* @brief Demo code to obtain ellipses and rotated rectangles that contain detected contours
* @author OpenCV team
*/
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using
namespace
cv
;
using
namespace
std
;
Mat
src
;
Mat
src_gray
;
int
thresh
=
100
;
int
max_thresh
=
255
;
RNG
rng
(
12345
);
/// Function header
void
thresh_callback
(
int
,
void
*
);
/**
* @function main
*/
int
main
(
int
argc
,
char
**
argv
)
{
/// Load source image and convert it to gray
src
=
imread
(
argv
[
1
],
1
);
/// Convert image to gray and blur it
cvtColor
(
src
,
src_gray
,
CV_BGR2GRAY
);
blur
(
src_gray
,
src_gray
,
Size
(
3
,
3
)
);
/// Create Window
char
*
source_window
=
"Source"
;
namedWindow
(
source_window
,
CV_WINDOW_AUTOSIZE
);
imshow
(
source_window
,
src
);
createTrackbar
(
" Threshold:"
,
"Source"
,
&
thresh
,
max_thresh
,
thresh_callback
);
thresh_callback
(
0
,
0
);
waitKey
(
0
);
return
(
0
);
}
/**
* @function thresh_callback
*/
void
thresh_callback
(
int
,
void
*
)
{
Mat
threshold_output
;
vector
<
vector
<
Point
>
>
contours
;
vector
<
Vec4i
>
hierarchy
;
/// Detect edges using Threshold
threshold
(
src_gray
,
threshold_output
,
thresh
,
255
,
THRESH_BINARY
);
/// Find contours
findContours
(
threshold_output
,
contours
,
hierarchy
,
CV_RETR_TREE
,
CV_CHAIN_APPROX_SIMPLE
,
Point
(
0
,
0
)
);
/// Find the rotated rectangles and ellipses for each contour
vector
<
RotatedRect
>
minRect
(
contours
.
size
()
);
vector
<
RotatedRect
>
minEllipse
(
contours
.
size
()
);
for
(
int
i
=
0
;
i
<
contours
.
size
();
i
++
)
{
minRect
[
i
]
=
minAreaRect
(
Mat
(
contours
[
i
])
);
if
(
contours
[
i
].
size
()
>
5
)
{
minEllipse
[
i
]
=
fitEllipse
(
Mat
(
contours
[
i
])
);
}
}
/// Draw contours + rotated rects + ellipses
Mat
drawing
=
Mat
::
zeros
(
threshold_output
.
size
(),
CV_8UC3
);
for
(
int
i
=
0
;
i
<
contours
.
size
();
i
++
)
{
Scalar
color
=
Scalar
(
rng
.
uniform
(
0
,
255
),
rng
.
uniform
(
0
,
255
),
rng
.
uniform
(
0
,
255
)
);
// contour
drawContours
(
drawing
,
contours
,
i
,
color
,
1
,
8
,
vector
<
Vec4i
>
(),
0
,
Point
()
);
// ellipse
ellipse
(
drawing
,
minEllipse
[
i
],
color
,
2
,
8
);
// rotated rectangle
Point2f
rect_points
[
4
];
minRect
[
i
].
points
(
rect_points
);
for
(
int
j
=
0
;
j
<
4
;
j
++
)
line
(
drawing
,
rect_points
[
j
],
rect_points
[(
j
+
1
)
%
4
],
color
,
1
,
8
);
}
/// Show in a window
namedWindow
(
"Contours"
,
CV_WINDOW_AUTOSIZE
);
imshow
(
"Contours"
,
drawing
);
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录