Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Greenplum
Opencv
提交
9b959072
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,发现更多精彩内容 >>
提交
9b959072
编写于
6月 20, 2016
作者:
M
Matthew Skolaut
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
added python binding for createButton
上级
e3844e0f
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
51 addition
and
0 deletion
+51
-0
modules/python/src2/cv2.cpp
modules/python/src2/cv2.cpp
+51
-0
未找到文件。
modules/python/src2/cv2.cpp
浏览文件 @
9b959072
...
...
@@ -1251,6 +1251,7 @@ static void OnChange(int pos, void *param)
}
#ifdef HAVE_OPENCV_HIGHGUI
static
PyObject
*
pycvCreateTrackbar
(
PyObject
*
,
PyObject
*
args
)
{
PyObject
*
on_change
;
...
...
@@ -1270,6 +1271,55 @@ static PyObject *pycvCreateTrackbar(PyObject*, PyObject *args)
}
#endif
static
void
OnButtonChange
(
int
state
,
void
*
param
)
{
PyGILState_STATE
gstate
;
gstate
=
PyGILState_Ensure
();
PyObject
*
o
=
(
PyObject
*
)
param
;
PyObject
*
args
;
if
(
PyTuple_GetItem
(
o
,
1
)
!=
NULL
)
{
args
=
Py_BuildValue
(
"(iO)"
,
state
,
PyTuple_GetItem
(
o
,
1
));
}
else
{
args
=
Py_BuildValue
(
"(i)"
,
state
);
}
PyObject
*
r
=
PyObject_Call
(
PyTuple_GetItem
(
o
,
0
),
args
,
NULL
);
if
(
r
==
NULL
)
PyErr_Print
();
Py_DECREF
(
args
);
PyGILState_Release
(
gstate
);
}
#ifdef HAVE_OPENCV_HIGHGUI
static
PyObject
*
pycvCreateButton
(
PyObject
*
,
PyObject
*
args
,
PyObject
*
kw
)
{
const
char
*
keywords
[]
=
{
"buttonName"
,
"onChange"
,
"userData"
,
"buttonType"
,
"initialButtonState"
,
NULL
};
PyObject
*
on_change
;
PyObject
*
userdata
=
NULL
;
char
*
button_name
;
int
button_type
=
0
;
int
initial_button_state
=
0
;
if
(
!
PyArg_ParseTupleAndKeywords
(
args
,
kw
,
"sO|Oii"
,
(
char
**
)
keywords
,
&
button_name
,
&
on_change
,
&
userdata
,
&
button_type
,
&
initial_button_state
))
return
NULL
;
if
(
!
PyCallable_Check
(
on_change
))
{
PyErr_SetString
(
PyExc_TypeError
,
"onChange must be callable"
);
return
NULL
;
}
if
(
userdata
==
NULL
)
{
userdata
=
Py_None
;
}
ERRWRAP2
(
createButton
(
button_name
,
OnButtonChange
,
Py_BuildValue
(
"OO"
,
on_change
,
userdata
),
button_type
,
initial_button_state
));
Py_RETURN_NONE
;
}
#endif
///////////////////////////////////////////////////////////////////////////////////////
static
int
convert_to_char
(
PyObject
*
o
,
char
*
dst
,
const
char
*
name
=
"no_name"
)
...
...
@@ -1300,6 +1350,7 @@ static int convert_to_char(PyObject *o, char *dst, const char *name = "no_name")
static
PyMethodDef
special_methods
[]
=
{
#ifdef HAVE_OPENCV_HIGHGUI
{
"createTrackbar"
,
pycvCreateTrackbar
,
METH_VARARGS
,
"createTrackbar(trackbarName, windowName, value, count, onChange) -> None"
},
{
"createButton"
,
(
PyCFunction
)
pycvCreateButton
,
METH_VARARGS
|
METH_KEYWORDS
,
"createButton(buttonName, onChange [, userData, buttonType, initialButtonState]) -> None"
},
{
"setMouseCallback"
,
(
PyCFunction
)
pycvSetMouseCallback
,
METH_VARARGS
|
METH_KEYWORDS
,
"setMouseCallback(windowName, onMouse [, param]) -> None"
},
#endif
{
NULL
,
NULL
},
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录