Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
73862699
O
Opencv
项目概览
Greenplum
/
Opencv
大约 1 年 前同步成功
通知
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,发现更多精彩内容 >>
提交
73862699
编写于
7月 12, 2011
作者:
A
Ana Huaman
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Added cornerDetector_Demo.cpp sample for tutorial of cornerMinEigenVal and cornerEigenValsAndVecs
上级
21409de1
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
123 addition
and
0 deletion
+123
-0
samples/cpp/tutorial_code/TrackingMotion/cornerDetector_Demo.cpp
.../cpp/tutorial_code/TrackingMotion/cornerDetector_Demo.cpp
+123
-0
未找到文件。
samples/cpp/tutorial_code/TrackingMotion/cornerDetector_Demo.cpp
0 → 100644
浏览文件 @
73862699
/**
* @function cornerDetector_Demo.cpp
* @brief Demo code for detecting corners using OpenCV built-in functions
* @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
;
/// Global variables
Mat
src
,
src_gray
;
Mat
myHarris_dst
;
Mat
myHarris_copy
;
Mat
Mc
;
Mat
myShiTomasi_dst
;
Mat
myShiTomasi_copy
;
int
myShiTomasi_qualityLevel
=
50
;
int
myHarris_qualityLevel
=
50
;
int
max_qualityLevel
=
100
;
double
myHarris_minVal
;
double
myHarris_maxVal
;
double
myShiTomasi_minVal
;
double
myShiTomasi_maxVal
;
RNG
rng
(
12345
);
char
*
myHarris_window
=
"My Harris corner detector"
;
char
*
myShiTomasi_window
=
"My Shi Tomasi corner detector"
;
/// Function headers
void
myShiTomasi_function
(
int
,
void
*
);
void
myHarris_function
(
int
,
void
*
);
/**
* @function main
*/
int
main
(
int
argc
,
char
**
argv
)
{
/// Load source image and convert it to gray
src
=
imread
(
argv
[
1
],
1
);
cvtColor
(
src
,
src_gray
,
CV_BGR2GRAY
);
/// Set some parameters
int
blockSize
=
3
;
int
apertureSize
=
3
;
/// My Harris matrix -- Using cornerEigenValsAndVecs
myHarris_dst
=
Mat
::
zeros
(
src_gray
.
size
(),
CV_32FC
(
6
)
);
Mc
=
Mat
::
zeros
(
src_gray
.
size
(),
CV_32FC1
);
cornerEigenValsAndVecs
(
src_gray
,
myHarris_dst
,
blockSize
,
apertureSize
,
BORDER_DEFAULT
);
/* calculate Mc */
for
(
int
j
=
0
;
j
<
src_gray
.
rows
;
j
++
)
{
for
(
int
i
=
0
;
i
<
src_gray
.
cols
;
i
++
)
{
float
lambda_1
=
myHarris_dst
.
at
<
float
>
(
j
,
i
,
0
);
float
lambda_2
=
myHarris_dst
.
at
<
float
>
(
j
,
i
,
1
);
Mc
.
at
<
float
>
(
j
,
i
)
=
lambda_1
*
lambda_2
-
0.04
*
pow
(
(
lambda_1
+
lambda_2
),
2
);
}
}
minMaxLoc
(
Mc
,
&
myHarris_minVal
,
&
myHarris_maxVal
,
0
,
0
,
Mat
()
);
/* Create Window and Trackbar */
namedWindow
(
myHarris_window
,
CV_WINDOW_AUTOSIZE
);
createTrackbar
(
" Quality Level:"
,
myHarris_window
,
&
myHarris_qualityLevel
,
max_qualityLevel
,
myHarris_function
);
myHarris_function
(
0
,
0
);
/// My Shi-Tomasi -- Using cornerMinEigenVal
myShiTomasi_dst
=
Mat
::
zeros
(
src_gray
.
size
(),
CV_32FC1
);
cornerMinEigenVal
(
src_gray
,
myShiTomasi_dst
,
blockSize
,
apertureSize
,
BORDER_DEFAULT
);
minMaxLoc
(
myShiTomasi_dst
,
&
myShiTomasi_minVal
,
&
myShiTomasi_maxVal
,
0
,
0
,
Mat
()
);
/* Create Window and Trackbar */
namedWindow
(
myShiTomasi_window
,
CV_WINDOW_AUTOSIZE
);
createTrackbar
(
" Quality Level:"
,
myShiTomasi_window
,
&
myShiTomasi_qualityLevel
,
max_qualityLevel
,
myShiTomasi_function
);
myShiTomasi_function
(
0
,
0
);
waitKey
(
0
);
return
(
0
);
}
/**
* @function myShiTomasi_function
*/
void
myShiTomasi_function
(
int
,
void
*
)
{
myShiTomasi_copy
=
src
.
clone
();
if
(
myShiTomasi_qualityLevel
<
1
)
{
myShiTomasi_qualityLevel
=
1
;
}
for
(
int
j
=
0
;
j
<
src_gray
.
rows
;
j
++
)
{
for
(
int
i
=
0
;
i
<
src_gray
.
cols
;
i
++
)
{
if
(
myShiTomasi_dst
.
at
<
float
>
(
j
,
i
)
>
myShiTomasi_minVal
+
(
myShiTomasi_maxVal
-
myShiTomasi_minVal
)
*
myShiTomasi_qualityLevel
/
max_qualityLevel
)
{
circle
(
myShiTomasi_copy
,
Point
(
i
,
j
),
4
,
Scalar
(
rng
.
uniform
(
0
,
255
),
rng
.
uniform
(
0
,
255
),
rng
.
uniform
(
0
,
255
)
),
-
1
,
8
,
0
);
}
}
}
imshow
(
myShiTomasi_window
,
myShiTomasi_copy
);
}
/**
* @function myHarris_function
*/
void
myHarris_function
(
int
,
void
*
)
{
myHarris_copy
=
src
.
clone
();
if
(
myHarris_qualityLevel
<
1
)
{
myHarris_qualityLevel
=
1
;
}
for
(
int
j
=
0
;
j
<
src_gray
.
rows
;
j
++
)
{
for
(
int
i
=
0
;
i
<
src_gray
.
cols
;
i
++
)
{
if
(
Mc
.
at
<
float
>
(
j
,
i
)
>
myHarris_minVal
+
(
myHarris_maxVal
-
myHarris_minVal
)
*
myHarris_qualityLevel
/
max_qualityLevel
)
{
circle
(
myHarris_copy
,
Point
(
i
,
j
),
4
,
Scalar
(
rng
.
uniform
(
0
,
255
),
rng
.
uniform
(
0
,
255
),
rng
.
uniform
(
0
,
255
)
),
-
1
,
8
,
0
);
}
}
}
imshow
(
myHarris_window
,
myHarris_copy
);
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录