removed obsolete docs

This commit is contained in:
Vadim Pisarevsky 2011-05-09 16:20:46 +00:00
parent 12d98a7d18
commit f82c04f426
43 changed files with 0 additions and 4218 deletions

View File

@ -1,42 +0,0 @@
\chapter{FAQ}
\section{First Section}
\subsection{Initialization}
\subsubsection*{CreateImage}
\addcontentsline{toc}{subsubsection}{CreateImage}
Creates header and \textsf{allocates} data
\begin{shaded}
\begin{verbatim}
IplImage* cvCreateImage( CvSize size,
int depth,
int channels );
\end{verbatim}
\end{shaded}
\begin{description}
\item[\texttt{size}] Image width and height
\item[\texttt{depth}] Bit depth of image elements. Can be one of:
\begin{description}
\item[IPL\_DEPTH\_8U] unsigned 8-bit integers
\item[IPL\_DEPTH\_8S] signed 8-bit integers
\item[IPL\_DEPTH\_16U] unsigned 16-bit integers
\item[IPL\_DEPTH\_16S] signed 16-bit integers
\item[IPL\_DEPTH\_32S] signed 32-bit integers
\item[IPL\_DEPTH\_32F] single precision floating-point numbers
\item[IPL\_DEPTH\_64F] double precision floating-point numbers
\end{description}
\item[\texttt{channels}] Number of channels per element(pixel). Can be 1, 2, 3 or 4. The channels are interleaved, for example the usual data layout of a color image is:
\begin{lstlisting}
b0 g0 r0 b1 g1 r1 ...
\end{lstlisting}
Although in general IPL image format can store non-interleaved images as well and some of OpenCV can process it, this function can create interleaved images only.
\end{description}
The function cvCreateImage creates the header and allocates data as in the method of~\cite{author_conf_year}. This call is a shortened form of
\begin{lstlisting}
header = cvCreateImageHeader(size,depth,channels);
cvCreateData(header);
\end{lstlisting}

View File

@ -1,4 +0,0 @@
ifelse(TARGET_LANGUAGE, py, `define(ONLY_PYTHON, $1)', `define(ONLY_PYTHON, )')
ifelse(TARGET_LANGUAGE, c, `define(ONLY_C, $1)', `define(ONLY_C, )')
define(`RQ',`changequote(<,>)dnl`
'changequote`'')

View File

@ -1,732 +0,0 @@
{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset204\fprq2{\*\panose 020b0604020202020204}Arial;}
{\f34\froman\fcharset0\fprq2 Times New Roman;}{\f32\froman\fcharset238\fprq2 Times New Roman CE;}{\f35\froman\fcharset161\fprq2 Times New Roman Greek;}{\f36\froman\fcharset162\fprq2 Times New Roman Tur;}
{\f37\froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f38\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f39\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f42\fswiss\fcharset0\fprq2 Arial;}{\f40\fswiss\fcharset238\fprq2 Arial CE;}
{\f43\fswiss\fcharset161\fprq2 Arial Greek;}{\f44\fswiss\fcharset162\fprq2 Arial Tur;}{\f45\fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f46\fswiss\fcharset178\fprq2 Arial (Arabic);}{\f47\fswiss\fcharset186\fprq2 Arial Baltic;}}
{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;
\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red160\green0\blue160;\red136\green0\blue0;}{\stylesheet{\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0
\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\s1\ql \li0\ri0\sb360\sa60\keepn\pagebb\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\f1\fs52\lang1033\langfe1033\kerning32\cgrid\langnp1033\langfenp1033
\sbasedon0 \snext0 \sautoupd heading 1;}{\s2\qc \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 2;}{
\s3\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\fs40\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 3;}{\*\cs10 \additive Default Paragraph Font;}{
\s15\ql \li0\ri0\sb120\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\caps\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd toc 1;}{
\s16\ql \li240\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin240\itap0 \scaps\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd toc 2;}{
\s17\ql \li480\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin480\itap0 \i\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd toc 3;}{
\s18\ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd toc 4;}{
\s19\ql \li960\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin960\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd toc 5;}{
\s20\ql \li1200\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin1200\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd toc 6;}{
\s21\ql \li1440\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin1440\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd toc 7;}{
\s22\ql \li1680\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin1680\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd toc 8;}{
\s23\ql \li1920\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin1920\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd toc 9;}{\*\cs24 \additive \ul\cf2 \sbasedon10 Hyperlink;}{\*\cs25 \additive \ul\cf12
\sbasedon10 FollowedHyperlink;}}{\info{\title }{\author vzaguskX}{\operator vpisarev}{\creatim\yr2002\mo11\dy22\hr18\min6}{\revtim\yr2002\mo11\dy22\hr18\min6}{\version2}{\edmins0}{\nofpages16}{\nofwords2873}{\nofchars16377}{\*\company iNNL}
{\nofcharsws20112}{\vern8269}}\paperw11906\paperh16838\margl1701\margr850\margt1134\margb1134 \widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1701
\dgvorigin1134\dghshow1\dgvshow1\jexpand\viewkind4\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule \fet0\sectd
\linex0\headery708\footery708\colsx708\endnhere\sectlinegrid360\sectdefaultcl {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang
{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7
\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain
\s3\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs40\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
\par }\pard\plain \qc \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\fs20\lang1024\langfe1024\noproof
{\shpgrp{\*\shpinst\shpleft360\shptop4192\shpright8640\shpbottom7252\shpfhdr0\shpbxcolumn\shpbxignore\shpbypara\shpbyignore\shpwr3\shpwrk0\shpfblwtxt0\shpz0\shplid1026
{\sp{\sn groupLeft}{\sv 1813}}{\sp{\sn groupTop}{\sv 5094}}{\sp{\sn groupRight}{\sv 10093}}{\sp{\sn groupBottom}{\sv 8154}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn posh}{\sv 0}}{\sp{\sn posv}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}}
{\sp{\sn fLayoutInCell}{\sv 1}}{\shp{\*\shpinst\shplid1027{\sp{\sn relLeft}{\sv 1903}}{\sp{\sn relTop}{\sv 6894}}{\sp{\sn relRight}{\sv 10003}}{\sp{\sn relBottom}{\sv 8154}}
{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 65536}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn posh}{\sv 2}}{\sp{\sn posrelh}{\sv 1}}{\sp{\sn posrelv}{\sv 1}}
{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain \s2\qc \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
\fs52\charscalex150 Reference manual
\par }}}}{\shp{\*\shpinst\shplid1028{\sp{\sn relLeft}{\sv 1813}}{\sp{\sn relTop}{\sv 5094}}{\sp{\sn relRight}{\sv 10093}}{\sp{\sn relBottom}{\sv 7074}}{\sp{\sn fRelFlipH}{\sv 0}}
{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 131072}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn posh}{\sv 2}}{\sp{\sn posrelh}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt
\pard\plain \s3\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs40\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {CvCam
\par }}}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8192\dpgroup\dpcount3\dpx360\dpy4192\dpxsize8280\dpysize3060\dptxbx\dptxlrtb{\dptxbxtext\pard\plain \s2\qc \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0
\b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\fs52\charscalex150 Reference manual
\par }}\dpx90\dpy1800\dpxsize8100\dpysize1260\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat0\dplinehollow\dptxbx\dptxlrtb{\dptxbxtext\pard\plain
\s3\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs40\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {CvCam
\par }}\dpx0\dpy0\dpxsize8280\dpysize1980\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat0\dplinehollow\dpendgroup\dpx0\dpy0\dpxsize0\dpysize0}}}}{\page }{\f1\fs72 Contents}{\field\fldedit{\*\fldinst {\f1\fs72
TOC \\o "1-3" \\h \\z }}{\fldrslt {\lang1024\langfe1024\noproof
\par }\pard\plain \s15\ql \li0\ri0\sb120\sa120\widctlpar\tqr\tldot\tx9345\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\caps\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{
\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241033"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300033003300000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Introduction}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst {
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241033 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300033003300000000}}}{\fldrslt {
\lang1024\langfe1024\noproof\webhidden 3}}}}}{\b0\caps0\lang1024\langfe1024\noproof
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241034"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300033003400000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Common Usage}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst {
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241034 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300033003400000000}}}{\fldrslt {
\lang1024\langfe1024\noproof\webhidden 5}}}}}{\b0\caps0\lang1024\langfe1024\noproof
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241035"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300033003500000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Howto:}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst {
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241035 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300033003500000000}}}{\fldrslt {
\lang1024\langfe1024\noproof\webhidden 8}}}}}{\b0\caps0\lang1024\langfe1024\noproof
\par }\pard\plain \s16\ql \li240\ri0\widctlpar\tqr\tldot\tx9345\aspalpha\aspnum\faauto\adjustright\rin0\lin240\itap0 \scaps\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{
\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241036"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300033003600000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Begin work with cvcam}{\lang1024\langfe1024\noproof\webhidden \tab }
{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241036 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300033003600000000}}
}{\fldrslt {\lang1024\langfe1024\noproof\webhidden 8}}}}}{\scaps0\lang1024\langfe1024\noproof
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241037"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300033003700000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Select a camera}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst {
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241037 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300033003700000000}}}{\fldrslt {
\lang1024\langfe1024\noproof\webhidden 8}}}}}{\scaps0\lang1024\langfe1024\noproof
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241038"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300033003800000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Set up camera(s)}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst {
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241038 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300033003800000000}}}{\fldrslt {
\lang1024\langfe1024\noproof\webhidden 8}}}}}{\scaps0\lang1024\langfe1024\noproof
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241039"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300033003900000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Render the video stream}{\lang1024\langfe1024\noproof\webhidden \tab }
{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241039 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300033003900000000}}
}{\fldrslt {\lang1024\langfe1024\noproof\webhidden 9}}}}}{\scaps0\lang1024\langfe1024\noproof
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241040"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003000000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Make the settings active}{\lang1024\langfe1024\noproof\webhidden \tab }
{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241040 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003000000000}}
}{\fldrslt {\lang1024\langfe1024\noproof\webhidden 9}}}}}{\scaps0\lang1024\langfe1024\noproof
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241041"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003100000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Control the video}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst {
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241041 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003100000000}}}{\fldrslt {
\lang1024\langfe1024\noproof\webhidden 9}}}}}{\scaps0\lang1024\langfe1024\noproof
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241042"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003200000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Display cameras property pages}{\lang1024\langfe1024\noproof\webhidden \tab }
{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241042 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003200000000}}
}{\fldrslt {\lang1024\langfe1024\noproof\webhidden 9}}}}}{\scaps0\lang1024\langfe1024\noproof
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241043"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003300000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Process video frames}{\lang1024\langfe1024\noproof\webhidden \tab }
{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241043 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003300000000}}
}{\fldrslt {\lang1024\langfe1024\noproof\webhidden 9}}}}}{\scaps0\lang1024\langfe1024\noproof
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241044"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003400000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Get the pointer to last frame}{\lang1024\langfe1024\noproof\webhidden \tab }
{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241044 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003400000000}}
}{\fldrslt {\lang1024\langfe1024\noproof\webhidden 10}}}}}{\scaps0\lang1024\langfe1024\noproof
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241045"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003500000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Play an avi file and process it\rquote s frames if needed}{
\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241045 \\h }{\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003500000000}}}{\fldrslt {\lang1024\langfe1024\noproof\webhidden 10}}}}}{\scaps0\lang1024\langfe1024\noproof
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241046"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003600000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Work with multiple cameras under linux}{\lang1024\langfe1024\noproof\webhidden \tab
}{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241046 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003600000000}}
}{\fldrslt {\lang1024\langfe1024\noproof\webhidden 11}}}}}{\scaps0\lang1024\langfe1024\noproof
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241047"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003700000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Work with multiple cameras under Windows}{\lang1024\langfe1024\noproof\webhidden
\tab }{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241047 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003700000000}}
}{\fldrslt {\lang1024\langfe1024\noproof\webhidden 11}}}}}{\scaps0\lang1024\langfe1024\noproof
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241048"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003800000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Finish working with cvcam}{\lang1024\langfe1024\noproof\webhidden \tab }
{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241048 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003800000000}}
}{\fldrslt {\lang1024\langfe1024\noproof\webhidden 11}}}}}{\scaps0\lang1024\langfe1024\noproof
\par }\pard\plain \s15\ql \li0\ri0\sb120\sa120\widctlpar\tqr\tldot\tx9345\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\caps\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{
\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241049"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003900000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Cvcam Reference}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst {
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241049 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003900000000}}}{\fldrslt {
\lang1024\langfe1024\noproof\webhidden 12}}}}}{\b0\caps0\lang1024\langfe1024\noproof
\par }\pard\plain \s16\ql \li240\ri0\widctlpar\tqr\tldot\tx9345\aspalpha\aspnum\faauto\adjustright\rin0\lin240\itap0 \scaps\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{
\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241050"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003000000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof cvcam API}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst {
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241050 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003000000000}}}{\fldrslt {
\lang1024\langfe1024\noproof\webhidden 12}}}}}{\scaps0\lang1024\langfe1024\noproof
\par }\pard\plain \s17\ql \li480\ri0\widctlpar\tqr\tldot\tx9345\aspalpha\aspnum\faauto\adjustright\rin0\lin480\itap0 \i\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{
\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241051"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003100000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof cvcamExit}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst {
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241051 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003100000000}}}{\fldrslt {
\lang1024\langfe1024\noproof\webhidden 12}}}}}{\i0\lang1024\langfe1024\noproof
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241052"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003200000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof cvcamGetCamerasCount}{\lang1024\langfe1024\noproof\webhidden \tab }
{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241052 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003200000000}}
}{\fldrslt {\lang1024\langfe1024\noproof\webhidden 12}}}}}{\i0\lang1024\langfe1024\noproof
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241053"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003300000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof cvcamGetProperty}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst {
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241053 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003300000000}}}{\fldrslt {
\lang1024\langfe1024\noproof\webhidden 12}}}}}{\i0\lang1024\langfe1024\noproof
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241054"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003400000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof cvcamInit}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst {
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241054 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003400000000}}}{\fldrslt {
\lang1024\langfe1024\noproof\webhidden 13}}}}}{\i0\lang1024\langfe1024\noproof
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241055"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003500000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof cvcamPause}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst {
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241055 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003500000000}}}{\fldrslt {
\lang1024\langfe1024\noproof\webhidden 13}}}}}{\i0\lang1024\langfe1024\noproof
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241056"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003600000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof cvcamPlayAVI}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst {
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241056 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003600000000}}}{\fldrslt {
\lang1024\langfe1024\noproof\webhidden 14}}}}}{\i0\lang1024\langfe1024\noproof
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241057"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003700000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof cvcamResume}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst {
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241057 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003700000000}}}{\fldrslt {
\lang1024\langfe1024\noproof\webhidden 15}}}}}{\i0\lang1024\langfe1024\noproof
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241058"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003800000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof cvcamSelectCamera}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst {
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241058 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003800000000}}}{\fldrslt {
\lang1024\langfe1024\noproof\webhidden 15}}}}}{\i0\lang1024\langfe1024\noproof
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241059"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003900000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof cvcamSetProperty}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst {
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241059 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003900000000}}}{\fldrslt {
\lang1024\langfe1024\noproof\webhidden 16}}}}}{\i0\lang1024\langfe1024\noproof
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241060"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300036003000000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof cvcamStart}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst {
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241060 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300036003000000000}}}{\fldrslt {
\lang1024\langfe1024\noproof\webhidden 16}}}}}{\i0\lang1024\langfe1024\noproof
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241061"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300036003100000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof cvcamStop}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst {
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241061 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300036003100000000}}}{\fldrslt {
\lang1024\langfe1024\noproof\webhidden 16}}}}}{\i0\lang1024\langfe1024\noproof
\par }\pard\plain \s16\ql \li240\ri0\widctlpar\tqr\tldot\tx9345\aspalpha\aspnum\faauto\adjustright\rin0\lin240\itap0 \scaps\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{
\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241062"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300036003200000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof cvcam Properties Interface}{\lang1024\langfe1024\noproof\webhidden \tab }
{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241062 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300036003200000000}}
}{\fldrslt {\lang1024\langfe1024\noproof\webhidden 17}}}}}{\scaps0\lang1024\langfe1024\noproof
\par }\pard\plain \s1\ql \li0\ri0\sb360\sa60\keepn\pagebb\widctlpar\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \b\f1\fs52\lang1033\langfe1033\kerning32\cgrid\langnp1033\langfenp1033 }}\pard\plain
\s1\ql \li0\ri0\sb360\sa60\keepn\pagebb\widctlpar\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \b\f1\fs52\lang1033\langfe1033\kerning32\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241033}Introduction{\*\bkmkend _Toc517241033}
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\tab
CvCam is a universal cross-platform module for processing video stream from digital video cameras. It is implemented as a dynamic link library (DLL) for Windows and as a shared object library (so) for linux systems and provides a simple and convenient App
lication Programming Interface (API) for reading and controlling video stream, processing its frames and rendering the results. CvCam is distributed as a part of Intel\rquote
s OpenCV project under the same license and uses some functionality of the Open Source Computer Vision Library.
\par }\pard\plain \s1\ql \li0\ri0\sb360\sa60\keepn\pagebb\widctlpar\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \b\f1\fs52\lang1033\langfe1033\kerning32\cgrid\langnp1033\langfenp1033 {\page {\*\bkmkstart _Toc517241034}Common Usage
{\*\bkmkend _Toc517241034}
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\tab
The simplest way to use CvCam from a C++ program for a single video source is shown at the following listing:
\par
\par
\par }{\fs20 #include \'93cvcam.h\'94
\par void callback(IplImage* image);
\par int main()
\par \{
\par \tab int ncams = cvcamGetCamerascount( );//returns the number of available cameras in the
\par \tab \tab \tab \tab \tab \tab //system
\par \tab cvcamSetProperty(0, CVCAM_PROP_ENABLE, &cvcamone); //Selects the 1-st found
\par \tab \tab \tab \tab \tab \tab \tab \tab \tab //camera
\par \tab cvcamSetProperty(0, CVCAM_PROP_RENDER, &cvcamone) //We\rquote ll render stream
\par \tab \tab \tab \tab \tab \tab \tab \tab \tab //from this source
\par \tab //here I assume your create a window and store it\rquote s id in MyWin variable.
\par \tab //MyWin is of type HWND on Windows and Window on linux
\par
\par \tab cvcamSetProperty(0, CVCAM_PROP_WINDOW, &MyWin); // Selects a window for
\par \tab \tab \tab \tab \tab \tab \tab \tab //video rendering
\par \tab cvcamSetProperty(0, CVCAM_PROP_CALLBACK, callback);//this callback will
\par \tab \tab \tab \tab \tab \tab \tab \tab //process every frame
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20 cvcamInit( );
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20 \tab cvcamStart( );
\par \tab //Your app is working
\par \tab cvcamStop( );
\par \tab cvcamExit( );
\par \tab return 0;
\par \}
\par void callback(IplImage* image)//Draws blue horizontal lines across the image
\par \{
\par IplImage* image1 = image;
\par int i,j;
\par
\par assert (image);
\par
\par for(i=0; i<image1->height; i+=10)
\par \{
\par for(j=(image1->widthStep)*i; j<(image1->widthStep)*(i+1);
\par j+=image1->nChannels)
\par \{
\par image1->imageData[j] = (char)255;
\par image1->imageData[j+1] = 0;
\par image1->imageData[j+2] = 0;
\par
\par
\par \}
\par
\par \}
\par
\par \}
\par
\par \tab }{The first function to be called is }{\fs20 cvcamGetCamerasCount( );}{ It prepares library and returns the number of available cameras at the system. On Linux it\rquote
s also important to call it before your initialize the X window system as it prepares X to work with linux threads. Your can also call }{\fs20 XInitThreads( )}{ at the beginning of your app instead.
\par
\par \tab The next step is to choose a camera and set it up. }{\fs20 cvcamSetProperty( int camera, char* property, void* arg)}{ can do this for you. See}{\b CvCam Properties Interface }{for complete list of properties and arguments. The first argument for
this function is the number of the camera for which the property is set, the second is a property\rquote
s name and the third is a pointer to some data, which actual type depends on the property. In the example above we selected a camera and told CvCam to render it into the window we specified.
\par
\par \tab The third optional step is frame processing with a callback. You can provide a function, which will be called on every frame and can change it\rquote s data. It should be of type void and takes a pointer to a IplImage structure, declared in \'93ipl.h
\'94 header file. This is done by }{\fs20 CVCAM_PROP_CALLBACK}{ property and the third argument to }{\fs20 cvcamSetProperty}{ is a pointer to your callback function;
\par
\par \tab Next step is calling }{\fs20 cvcamInit( ),}{ after which everything is ready for streaming;
\par
\par \tab }{\fs20 cvcamStart( )}{ just starts the stream. It won\rquote t block your app and returns immediately. The stream continues until }{\fs20 cvcamStop( )}{ is called.
\par
\par \tab And the last is }{\fs20 cvcamExit( )}{ \endash Frees all resources used by CvCam.}{\fs20
\par }\pard\plain \s1\ql \li0\ri0\sb360\sa60\keepn\pagebb\widctlpar\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \b\f1\fs52\lang1033\langfe1033\kerning32\cgrid\langnp1033\langfenp1033 {\page {\*\bkmkstart _Toc517241035}Howto:
{\*\bkmkend _Toc517241035}
\par }\pard\plain \s2\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241036}Begin work with cvcam{\*\bkmkend _Toc517241036}
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\tab Call }{\fs20 cvcamGetCamerasCount()}{
. This not only returns the number of cameras in the system, but also prepares cvcam. Under linux be sure to do this call before initializing X, or to call }{\fs20 XInitThreads()}{ before it.
\par }\pard\plain \s2\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241037}Select a camera{\*\bkmkend _Toc517241037}
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\tab You can select single or multiple cameras in 2 ways. The first is using a camera selection dialog with }{
\fs20 cvcamSelectCamera}{. See an example below:
\par
\par }{\cf11 //Prototype
\par }\pard \ql \li0\ri0\widctlpar\faauto\rin0\lin0\itap0 {\fs20\cf11 /*Pops up a camera(s) selection dialog
\par Return value - number of cameras selected (0,1 or 2);
\par Argument: an array of selected cameras numbers
\par NULL if none selected. Should be released with free() when not needed.
\par if NULL passed, not used.
\par */
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20\cf17 CVCAM_API}{\fs20\cf1 }{\fs20\cf2 int}{\fs20\cf1 }{\fs20\cf18 cvcamSelectCamera}{\fs20\cf1 (}{\fs20\cf2 int}{\fs20\cf1 ** }{\fs20\cf15 out}{\fs20\cf1 );
\par
\par FunctionThatSelectsCamera()
\par \{
\par \tab int* out;
\par \tab int nselected = cvcamSelectCamera(&out);
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20\cf1 if(nselected>0)
\par \tab {\*\bkmkstart OLE_LINK1}printf(\'93the 1-st selected camera is camera number %d\'94, out[0]);{\*\bkmkend OLE_LINK1}
\par if(nselected == 2)
\par \tab printf(\'93the 2-nd selected camera is camera number %d\'94, out[1]);
\par
\par free(out);
\par return;
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20\cf1
\par
\par \}
\par
\par }{\cf1 Note: if you don\rquote t need selected cameras numbers, simply call }{\fs20\cf18 cvcamSelectCamera(NULL)}{\cf18
\par Note2: Linux version of cvcam currently has no implementation of }{\fs20\cf18 cvcamSelectCamera}{\cf18 .
\par }{\fs20\cf18
\par }{\cf18 The second, non-dialog way is to use CVCAM_PROP_ENABLE property like this:
\par }{\fs20\cf18 int desiredcamera = 0;//for example
\par cvcamSetProperty(desiredcamera, CVCAM_PROP_ENABLE,CVCAMTRUE);
\par
\par }\pard\plain \s2\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241038}Set up camera(s){\*\bkmkend _Toc517241038}
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {See }{\b CvCam Properties Interface.}{\b\fs20
\par
\par }\pard\plain \s2\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241039}Render the video stream{\*\bkmkend _Toc517241039}
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\tab 1. Tell cvcam to render your camera:
\par \tab \tab }{\fs20 cvcamSetProperty(YourCamera, CVCAM_PROP_RENDER, CVCAMTRUE)
\par }{\tab 2. Select the window
\par }\pard \ql \fi720\li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {\fs20 cvcamWindow mywin = \'85;//here I mean your initialize mywin with some
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20 \tab \tab \tab \tab \tab // existing window id/
\par }\pard \ql \fi720\li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {\fs20 cvcamSetProperty(YourCamera, CVCAM_PROP_WINDOW, &mywin);}{
\par
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {3.Set output width and height of the video.
\par }\pard \ql \fi720\li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {\fs20 int width = 320;
\par int height = 240;
\par cvcamSetProperty(YourCamera, CVCAM_PROP_RNDWIDTH, &width);
\par cvcamSetProperty(YourCamera, CVCAM_PROP_RNDHEIGHT, &height);}{
\par
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {Note: if your pass NULL as a window, or don\rquote t set it, it\rquote ll be created under Windows systems
\par Note 2: If you don\rquote t set width and height those of the source are used.
\par Note 3 : cvcamWindow has type HWND under Windows and type Window under linux.
\par }\pard\plain \s2\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241040}Make the settings active{\*\bkmkend _Toc517241040}
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\tab Call }{\fs20 cvcamInit();}{
\par }\pard\plain \s2\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241041}Control the video{\*\bkmkend _Toc517241041}
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\tab Call }{\fs20 cvcamStart();
\par \tab cvcamStop();
\par \tab cvcamPause();
\par \tab cvcamResume();}{
\par \tab They take no arguments and return 0 on success.
\par }\pard\plain \s2\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241042}Display cameras property pages{\*\bkmkend _Toc517241042
}
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {To display the property page for camera YourCamera call
\par }{\fs20\cf18 cvcamGetProperty}{\fs20\cf1 (}{\fs20 YourCamera}{\fs20\cf1 , }{\fs20\cf15 CVCAM_CAMERAPROPS}{\fs20\cf1 , }{\fs20\cf17 NULL}{\fs20\cf1 );
\par
\par }{\cf1 To display the video format property page for the same camera call
\par }{\fs20\cf18 cvcamGetProperty}{\fs20\cf1 (}{\fs20 YourCamera}{\fs20\cf1 , }{\fs20\cf15 CVCAM_VIDEOFORMAT}{\fs20\cf1 , }{\fs20\cf17 NULL}{\fs20\cf1 );}{
\par
\par Note: a camera may have no one or both property pages under Windows and the content of the pages depends on the particular driver.
\par Note2: Property pages are displayed only for enabled camera(s) and after a call to }{\fs20 cvcamInit()}{ under Windows.
\par }\pard\plain \s2\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241043}Process video frames{\*\bkmkend _Toc517241043}
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {You can set your own callback function, which will process every captured frame and change it\rquote
s data. It can be done with }{\fs20\cf15 CVCAM_PROP_CALLBACK }{\fs20 property.
\par void callback(IplImage* image)
\par \{
\par \tab //Do everything you want with the image
\par \}
\par cvcamSetProperty(0, }{\fs20\cf15 CVCAM_PROP_CALLBACK}{\fs20 , callback)
\par
\par }{Note:under linux callback currently is called on every frame being rendered or got with \'93raw_image\'94 property.
\par Under windows \endash on every frame captured.
\par }\pard\plain \s2\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241044}Get the pointer to last frame{\*\bkmkend _Toc517241044}
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {//Example for camera 0
\par \tab }{\fs20 IplImage* image;
\par \tab CvcamPause();
\par \tab cvcamGetProperty(0,\'94raw_image\'94,&image)
\par \tab //Do what you want with the image
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20 cvcamResume();}{
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {
\par Note: you don\rquote t need to free the data pointed to by image.
\par Note2: You should use }{\fs20 cvcamPause}{ and }{\fs20 cvcamResume}{ to prevent changes of the data.
\par Note3. This isn\rquote t currently implemented under Windows
\par }\pard\plain \s2\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241045}Play an avi file and process it\rquote
s frames if needed{\*\bkmkend _Toc517241045}
\par }\pard\plain \ql \li0\ri0\widctlpar\faauto\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\tab Use cvcamPlayAVI(\tab }{\fs20 const}{ }{\fs20 char* file,
\par \tab \tab \tab void* window,
\par \tab \tab \tab int width,
\par \tab \tab \tab int height,
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20 \tab \tab \tab void* callback)
\par
\par }{The default call }{\fs20 cvcamPlayAVI(0,0,0,0,0)}{ opens an \'93open file\'94 dialog and if a file was chosen creates a video window and plays the fil
e into it without any procession. If an existing file name is passed as a first argument this file is played. The second argument is a window id to play video into it (HWND or Window depending on platform)
\par Width and Height specify the size of the output video window. If 0 passed, those that are set in the file are used. Callback is quiet as for processing video from camera \endash void callback(IplImage* image).
\par
\par }{\i Example(C++ for Windows ):
\par
\par \tab }{\fs20 extern "C"
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20 \{
\par }\pard \ql \fi720\li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {\fs20 #include "highgui.h"
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20 \}
\par int main()
\par \{
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20 \tab \tab char* filename = \'93C:\\cartoon.avi\'94;
\par \tab \tab
\par \tab \tab named_window("cvcam window", 0);
\par HWND mywin = get_hwnd_byname("cvcam window");
\par \tab \tab cvcamPlayAVI( filename, mywin, 320, 240, mycallback);
\par \tab \tab return 0;
\par \tab \}
\par \tab
\par \tab void mycallback(IplImage* img) //Paints top half of image black
\par \tab \{
\par \tab \tab memset(img->imageData, 0, img->imageSize/2);
\par
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20 \}
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20 \tab
\par }{
\par Note: This function blocks the calling thread until the file finishes playing.
\par Note: this function isn\rquote t implemented under Linux yet}{\fs20 .}{
\par }\pard\plain \s2\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241046}Work with multiple cameras under linux
{\*\bkmkend _Toc517241046}
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
Selecting multiple cameras under linux with setting CVCAM_PROP_ENABLE property will make them all to work independently
\par
\par }\pard\plain \s2\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241047}Work with multiple cameras under Windows
{\*\bkmkend _Toc517241047}
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Enab
ling two cameras under Windows results in activating cvSyncFilter, which synchronizes the streams and enables setting stereo callback for 2 synchronous frames. Set it as below:
\par }{\fs20
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20 void stereocallback(IplImage* image1, IplImage* image2);
\par cvcamSetProperty(0, CVCAM_STEREO_CALLBACK , stereocallback);
\par
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20 Note: single callbacks for each camera are not active in this mode currently;
\par }\pard\plain \s2\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241048}Finish working with cvcam{\*\bkmkend _Toc517241048}
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Call cvcamExit();
\par
\par }\pard\plain \s1\ql \li0\ri0\sb360\sa60\keepn\pagebb\widctlpar\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \b\f1\fs52\lang1033\langfe1033\kerning32\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241049}Cvcam Reference
{\*\bkmkend _Toc517241049}
\par }\pard\plain \s2\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241050}cvcam API{\*\bkmkend _Toc517241050}
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
\par }\pard\plain \s3\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs40\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241051}cvcamExit{\*\bkmkend _Toc517241051}
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
\par Declaration:
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20 int cvcamExit();
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {
\par Parameters:
\par \tab None.
\par
\par Return Value:
\par \tab Always 0.
\par
\par Remarks:
\par \tab Frees all resources, used by cvcam.
\par }{\fs20\cf18
\par }\pard\plain \s3\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs40\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241052}cvcamGetCamerasCount{\*\bkmkend _Toc517241052}
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
\par Declaration:
\par \tab }{\fs20 int cvcamGetCamerasCount();}{
\par
\par Parameters:
\par \tab None.
\par
\par Return Value:
\par \tab Number of found cameras.
\par
\par Remarks:
\par \tab The first procedure to call in most every cvcam based program. Initializes the cvcam library. Under linux initializes X window system to work with multiple threads also.
\par
\par
\par }{\fs20\cf1
\par }\pard\plain \s3\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs40\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241053}cvcamGetProperty{\*\bkmkend _Toc517241053}
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
\par
\par Declaration:
\par }{\fs20 cvcamGetProperty(int camera, const char* property, void* value);
\par }{
\par
\par Parameters:
\par }\pard \ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {int }{\b camera}{ (in) \endash a number of the camera in 0-based index of cameras found in the\tab \tab \tab system.
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {
\par }\pard \ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {const char* }{\b property}{ (in) \endash a name of the property (See cvcam Properties Interface for\tab \tab \tab details).
\par
\par void* }{\b value}{ (out) \endash depends on the property\rquote s name. (See cvcam Properties Interface for\tab \tab details).
\par
\par
\par
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {
\par
\par
\par Return Value:
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {0 on success, negative error code for error.
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {
\par Remarks:
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {If successful, }{\b value}{ will contain the value of the specified }{\b property }{for the specified\tab }{\b camera}{. (See cvcam Properties Interface for details).
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {
\par }\pard\plain \s3\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs40\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
\par {\*\bkmkstart _Toc517241054}cvcamInit{\*\bkmkend _Toc517241054}
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
\par
\par Declaration:
\par \tab }{\fs20 int cvcamInit();}{
\par
\par Parameters:
\par \tab None.
\par
\par Return Value:
\par \tab 1 on success, 0 on error.
\par
\par Remarks:
\par }\pard \ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {This function makes the settings, set by cvcamSetProperty active and does the final step of cvcam initialization. Don\rquote t be confused \endash it\rquote
s not the first function, you call. It assumes that cvcamGetCamerasCount has already been called and usually that some properties have been set.
\par }\pard\plain \s3\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs40\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
\par }{\cf1 {\*\bkmkstart _Toc517241055}cvcamPause{\*\bkmkend _Toc517241055}
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
\par Declaration:
\par \tab }{\fs20 int cvcamPause();}{
\par
\par Parameters:
\par \tab None.
\par
\par Return Value:
\par \tab Always 0.
\par
\par Remarks:
\par \tab Just pauses the video stream if it is running.
\par
\par }\pard\plain \s3\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs40\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241056}cvcamPlayAVI{\*\bkmkend _Toc517241056}
\par
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Declaration:
\par }\pard \ql \fi720\li0\ri0\widctlpar\faauto\rin0\lin0\itap0 {\fs20 int cvcamPlayAVI(const char* file,
\par }\pard \ql \li0\ri0\widctlpar\faauto\rin0\lin0\itap0 {\fs20 \tab \tab void* window,
\par \tab \tab int width,
\par \tab \tab int height,
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20 \tab \tab void* callback)}{
\par
\par Parameters:
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {const char* }{\b file}{ (in) \endash the name of an existing file on disk or NULL .
\par }\pard \ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {
\par void* }{\b window}{ (in) \endash an existing HWND (Windows systems) or Window(Linux systems) or NULL.
\par
\par int }{\b width}{ (in) \endash width of the displayed video;
\par
\par int }{\b height}{ (in) \endash height of the displayed video;
\par
\par void* }{\b callback }{(in) \endash a pointer to a callback function }{\fs20 void callback(IplImage* img), }{which\tab \tab will process every frame before displaying it.}{\fs20
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {
\par Return Value:
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 { 0 on success, -1 on eror.
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {
\par Remarks:
\par \tab Plays the }{\b file }{of type .avi into a specified }{\b window}{. The output video size is set to
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\b width }{x }{\b height. }{Every frame is processed with a }{\b callback }{before displaying.
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\tab
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {If the }{\b file }{parameter}{\b }{is NULL, the \'93file open\'94 dialog is displayed.
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\tab
\par \tab If the }{\b window }{is NULL it\rquote ll be created.
\par
\par \tab If }{\b width}{ or }{\b height}{ is 0, it is set to the size specified inside the avi file being played.
\par
\par \tab If }{\b callback}{ is NULL the frames won\rquote t be processed, just displayed as is.
\par \tab You can also define your callback function }{\fs20 void callback(IplImage* }{\b\fs20 img}{\fs20 ) }{and pass a pointer to \tab it as a }{\b callback }{parameter. It will be called before displaying each frame with the }{\b img \tab }{
parameter containing the data of frame going to be displayed. IplImage structure is \tab declared in \'93ipl.h\'94, which is included from \'93cv.h\'94 as follows:
\par
\par }\pard \ql \li1440\ri0\widctlpar\faauto\rin0\lin1440\itap0 {\fs20 typedef struct _IplImage \{
\par int nSize; /* size of iplImage struct */
\par int ID; /* version */
\par int nChannels;
\par int alphaChannel;
\par int depth; /* pixel depth in bits */
\par char colorModel[4];
\par char channelSeq[4];
\par int dataOrder;
\par int origin;
\par int align; /* 4 or 8 byte align */
\par int width;
\par int height;
\par struct _IplROI *roi;
\par struct _IplImage
\par *maskROI; /* poiner to maskROI if any */
\par void *imageId; /* use of the application */
\par struct
\par _IplTileInfo *tileInfo; /* contains information on tiling */
\par int imageSize; /* useful size in bytes */
\par char *imageData; /* pointer to aligned image */
\par int widthStep; /* size of aligned line in bytes */
\par int BorderMode[4]; /* */
\par int BorderConst[4]; /* */
\par char *imageDataOrigin; /* ptr to full, nonaligned image */
\par }\pard \ql \fi720\li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {\fs20 \} IplImage;
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20
\par \tab }{This function blocks the calling thread until the file finishes or error occurs and then \tab returns.
\par }\pard \ql \fi720\li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\tab
\par
\par }\pard\plain \s3\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs40\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cf1 {\*\bkmkstart _Toc517241057}cvcamResume{\*\bkmkend _Toc517241057}
\par }{
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Declaration:
\par \tab }{\fs20 int cvcamResume();}{
\par
\par Parameters:
\par \tab None.
\par
\par Return Value:
\par \tab Always 0.
\par
\par Remarks:
\par \tab Resumes the video if it is paused.
\par
\par }\pard\plain \s3\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs40\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241058}cvcamSelectCamera{\*\bkmkend _Toc517241058}
\par
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Declaration:
\par \tab }{\fs20 int cvcamSelectCamera(int** }{\b\fs20 out}{\fs20 );}{
\par
\par Parameters:
\par \tab int** }{\b out}{ (out) \endash an address of a pointer to int or NULL
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {If not NULL will contain an array of selected cameras indexes.
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {
\par Return Value:
\par \tab The number of selected cameras \endash 0, 1 or 2.
\par
\par Remarks:
\par }\pard \ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {This function pops up a dialog box, which suggests to select one or 2 cameras to work with. If }{\b out }{is}{\b }{not NULL, and user has selected some
camera(s), the array of their indexes is placed into *}{\b out}{. Use }{\fs20 free()}{ to release this array after you don\rquote t need it more.
\par }\pard\plain \s3\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs40\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
\par {\*\bkmkstart _Toc517241059}cvcamSetProperty{\*\bkmkend _Toc517241059}
\par }{\cf15
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Declaration:
\par \tab }{\fs20 int cvcamSetProperty(int camera, const char* property, void* value);}{
\par
\par Parameters:
\par }\pard \ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {int }{\b camera}{ (in) \endash a number of the camera in 0-based index of cameras found in the\tab \tab \tab system.
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {
\par }\pard \ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {const char* }{\b property}{ (in) \endash a name of the property (See cvcam Properties Interface for\tab \tab \tab details).
\par }\pard\plain \s18\ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
\par }\pard\plain \ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {void* }{\b value}{ (in) \endash depends on the property\rquote s name. (See cvcam Properties Interface for
\tab \tab details).
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {
\par Return Value:
\par \tab 0 on success, negative error code for error.
\par
\par Remarks:
\par }\pard \ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {Sets the value of the specified }{\b property}{ of the specified }{\b camera}{ to }{\b value}{. (See\tab cvcam Properties Interface for details).
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {
\par
\par }\pard\plain \s3\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs40\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241060}cvcamStart{\*\bkmkend _Toc517241060}
\par
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Declaration:
\par \tab }{\fs20 int cvcamStart();
\par }{
\par
\par Parameters:
\par \tab None.
\par
\par Return Value:
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {0 on success, -1 on failure.
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {
\par Remarks:
\par \tab Starts the video stream for all enabled cameras.
\par }\pard\plain \s3\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs40\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {
\par {\*\bkmkstart _Toc517241061}cvcamStop{\*\bkmkend _Toc517241061}
\par }{\cf1
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Declaration:
\par \tab }{\fs20 int cvcamStop();
\par }{
\par Parameters:
\par \tab None.
\par
\par Return Value:
\par \tab Always 0.
\par
\par Remarks:
\par \tab Stops the video stream.
\par }\pard \ql \li0\ri0\widctlpar\faauto\rin0\lin0\itap0 {\fs20\cf1
\par
\par }\pard\plain \s2\qc \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241062}cvcam Properties Interface{\*\bkmkend _Toc517241062}
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {There is a list of properties which can be set for each camera. There are 2 functions to work with them:
\par \tab }{\fs20 cvcamGetProperty(int cameraindex, const char* property, void* value);
\par \tab cvcamSetProperty(int cameraindex, const char* property, void* value);
\par }{
\par The first argument is the number that identifies the camera, the second is the name of the property. The act
ual type of the 3-rd argument depends on the property. Some of the properties can be set and got, some only set or only got. See the table below for detailes
\par
\par
\par }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt
\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx2875\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963
\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10
\cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {
Property name\cell Action\cell argument\cell Can be get/set\cell Platform
\par Win/Lin\cell }\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv
\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx2875\clvertalt\clbrdrt\brdrs\brdrw10
\clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt
\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\row
}\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt
\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx2875\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963
\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10
\cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {
\fs20\cf15 CVCAM_PROP_ENABLE}{\cell Selects/deselects the camera\cell CVCAMTRUE/
\par CVCAMFALSE
\par For Set, pointer to int for Get\cell SG\cell WL\cell }\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10
\trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx2875
\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10
\cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr
\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\row }\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\fs20\cf15 CVCAM_PROP_RENDER}{\cell Renders the cam\cell CVCAMTRUE/
\par CVCAMFALSE
\par For Set, pointer to int for Get\cell SG\cell WL\cell }\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10
\trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx2875
\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10
\cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr
\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\row }\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\fs20\cf15 CVCAM_PROP_WINDOW}{\cell Selects a window for rendering camera\rquote s stream\cell
Pointer to HWND(Win) or pointer to Window(Lin)\cell SG\cell WL\cell }\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr
\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1
\cellx2875\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10
\cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr
\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\row }\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\fs20\cf15 CVCAM_PROP_CALLBACK}{\cell Sets a callback function which processes every frame\cell
void (*callback)(IplImage* image)\cell S\cell WL\cell }\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr
\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1
\cellx2875\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10
\cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr
\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\row }\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\fs20\cf15 CVCAM_DESCRIPTION}{\cell Gets string name and some other info about the camera\cell A pointer to struct }{
\fs20 CameraDescription
\par Under windows only DeviceDescription field is active}{\cell G\cell WL\cell }\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10
\trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10
\cltxlrtb\clftsWidth1 \cellx2875\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr
\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb
\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\row }\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\fs20\cf15 CVCAM_VIDEOFORMAT}{\cell Displays videoformat dialog box for the camera\cell NULL\cell
G\cell WL\cell }\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv
\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx2875\clvertalt\clbrdrt\brdrs\brdrw10
\clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt
\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\row
}\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\fs20\cf15 CVCAM_CAMERAPROPS}{\cell Displays camera properties dialog box for the camera\cell NULL\cell G\cell WL\cell }\pard
\ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10
\trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx2875\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl
\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt
\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\row
}\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\fs20\cf15 CVCAM_RNDWIDTH}{\cell Sets the width of the output video\cell Pointer to int containing width\cell SG\cell WL\cell }\pard
\ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10
\trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx2875\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl
\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt
\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\row
}\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\fs20\cf15 CVCAM_RNDHEIGHT}{\cell Sets the height of the output video\cell Pointer to int containing height\cell SG\cell WL\cell }\pard
\ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10
\trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx2875\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl
\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt
\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\row
}\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\fs20\cf15 CVCAM_STEREO_CALLBACK\cell }{Sets the callback which will be called on every two synchronous frames from 2 cameras\cell
Void (*callback)(IplImage* Image1, IplImage* image2)\cell S\cell W\cell }\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10
\trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10
\cltxlrtb\clftsWidth1 \cellx2875\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr
\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb
\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\row }\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\fs20\cf15 CVCAM_PROP_RAW\cell }{Gets the last frame\cell IplImage**\cell G\cell L\cell }\pard
\ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10
\trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx2875\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl
\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt
\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\row
}\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt
\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx2875\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963
\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10
\cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {
\fs20\cf15 CVCAM_PROP_SETFORMAT\cell }{Sets video format in non-dialog way\cell A pointer to struct videoformat.For Set should be initialized with desired values\cell SG\cell L\cell }\pard
\ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10
\trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx2875\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl
\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt
\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\row
}\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {
\par }}

6
doc/go
View File

@ -1,6 +0,0 @@
(pdflatex '\newcommand{\genc}{true}\newcommand{\genpy}{true}\newcommand{\targetlang}{c}\input{opencv.tex}' &&
bibtex opencv &&
makeindex opencv &&
pdflatex '\newcommand{\genc}{true}\newcommand{\genpy}{true}\newcommand{\targetlang}{c}\input{opencv.tex}' > 1
) || exit 1
#gv -page=480 opencv.pdf

View File

@ -1,6 +0,0 @@
(pdflatex '\newcommand{\genc}{true}\newcommand{\genpy}{true}\newcommand{\targetlang}{c}\input{opencv_user.tex}' &&
# bibtex opencv_user &&
# makeindex opencv_user &&
pdflatex '\newcommand{\genc}{true}\newcommand{\genpy}{true}\newcommand{\targetlang}{c}\input{opencv_user.tex}' > 1
) || exit 1
#gv -page=480 opencv_user.pdf

View File

@ -1,32 +0,0 @@
%%
%% This is file `helvetica.sty', based on helvet.sty extended to include
%% definitions for rm and tt. This means commands such as \textbf, \textit,
%% etc. will appear in Helvetica.
%% Changes added by Harriet Borton on <1995/12/11>
%%
%% The original source files were:
%%
%% psfonts.dtx (with options: `helvet')
%%
%% Copyright (C) 1994 Sebastian Rahtz
%% All rights reserved.
%%
%% The original file is part of the PSNFSS2e package.
%% -----------------------------------------
%%
%% This is a generated file. Permission is granted to to customize the
%% declarations in this file to serve the needs of your installation.
%% However, no permission is granted to distribute a modified version of
%% this file under its original name.
\def\fileversion{4.2}
\def\filedate{94/11/11}
\def\docdate {94/11/06}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{helvetica}[\filedate\space\fileversion\space
Helvetica PSNFSS2e package]
\renewcommand{\sfdefault}{phv}
\renewcommand{\rmdefault}{phv}
\renewcommand{\ttdefault}{pcr}
\endinput
%%
%% End of file `helvetica.sty'.

View File

@ -1,24 +0,0 @@
#!/bin/bash
LANGUAGES="${LANGUAGES:=c cpp py}"
mkdir -p $LANGUAGES
tput clear
python latex.py ../online-opencv.tex $LANGUAGES || exit
for D in $LANGUAGES
do
echo $D
mkdir -p $D
sed "s/%LANG%/$D/" conf.py > $D/conf.py
TEXINPUTS=$PWD: sphinx-build -w $D/sphinx.errors -D "lang=$D" -b html -d _build/doctrees/$D $D _build/html/$D
#Insert javascript links to load the Wiki in a frame
for file in `ls _build/html/$D/*.html`
do
cat $file | sed "/Comments from the Wiki/s/href=\"\(.*\)\">id=0.\([0-9]*\) /href=\"javascript:void\(0\)\" onclick=\"insertIframe\('\2', '\1'\)\" id=\"\2\">/" > tmp.html
mv 'tmp.html' "$file"
done
done

View File

@ -1,17 +0,0 @@
#!/bin/bash
LANGUAGES="${LANGUAGES:=c cpp py}"
mkdir -p $LANGUAGES
tput clear
python latex.py ../online-opencv.tex $LANGUAGES || exit
for D in $LANGUAGES
do
echo $D
mkdir -p _build/latex/$D
cp conf.py $D
cp mymath.sty _build/latex/$D
TEXINPUTS=$PWD: sphinx-build -w $D/sphinx.errors -D "lang=$D" -b latex -d _build/doctrees/$D $D _build/latex/$D
(cd _build/latex/$D && rm *.aux *.toc *.log && pdflatex opencv.tex)
done

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

View File

@ -1,206 +0,0 @@
# -*- coding: utf-8 -*-
#
# opencv documentation build configuration file, created by
# sphinx-quickstart on Thu Jun 4 21:06:43 2009.
#
# This file is execfile()d with the current directory set to its containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
import sys, os
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#sys.path.append(os.path.abspath('.'))
# -- General configuration -----------------------------------------------------
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = ['sphinx.ext.pngmath', 'sphinx.ext.doctest'] # , 'sphinx.ext.intersphinx']
doctest_test_doctest_blocks = 'block'
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix of source filenames.
source_suffix = '.rst'
# The encoding of source files.
#source_encoding = 'utf-8'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = u'opencv'
copyright = u'2010, authors'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '2.2'
# The full version, including alpha/beta/rc tags.
release = '2.2'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#today = ''
# Else, today_fmt is used as the format for a strftime call.
#today_fmt = '%B %d, %Y'
# List of documents that shouldn't be included in the build.
#unused_docs = []
# List of directories, relative to source directory, that shouldn't be searched
# for source files.
exclude_trees = ['_build']
# The reST default role (used for this markup: `text`) to use for all documents.
#default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
#add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []
# -- Options for HTML output ---------------------------------------------------
# The theme to use for HTML and HTML Help pages. Major themes that come with
# Sphinx are currently 'default' and 'sphinxdoc'.
html_theme = 'blue'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
html_theme_options = {
"lang" : "%LANG%" # buildall substitutes this for c, cpp, py
}
# Add any paths that contain custom themes here, relative to this directory.
html_theme_path = ['../_themes']
# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
#html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
#html_short_title = None
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
html_logo = '../opencv-logo2.png'
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
#html_favicon = None
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['../_static']
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
#html_last_updated_fmt = '%b %d, %Y'
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
#html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
#html_sidebars = {}
# Additional templates that should be rendered to pages, maps page names to
# template names.
#html_additional_pages = {}
# If false, no module index is generated.
#html_use_modindex = True
# If false, no index is generated.
#html_use_index = True
# If true, the index is split into individual pages for each letter.
#html_split_index = False
# If true, links to the reST sources are added to the pages.
#html_show_sourcelink = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
#html_use_opensearch = ''
# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
#html_file_suffix = ''
# Output file base name for HTML help builder.
htmlhelp_basename = 'opencvdoc'
# -- Options for LaTeX output --------------------------------------------------
# The paper size ('letter' or 'a4').
#latex_paper_size = 'letter'
# The font size ('10pt', '11pt' or '12pt').
#latex_font_size = '10pt'
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass [howto/manual]).
latex_documents = [
('index', 'opencv.tex', u'opencv Documentation',
u'author', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
#latex_logo = None
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
#latex_use_parts = False
# Additional stuff for the LaTeX preamble.
#latex_preamble = ''
# Documents to append as an appendix to all manuals.
#latex_appendices = []
# If false, no module index is generated.
#latex_use_modindex = True
pngmath_latex_preamble = '\usepackage{mymath}\usepackage{amsmath}\usepackage{bbm}\usepackage[usenames]{color}'
# intersphinx_mapping = {
# 'http://docs.python.org/': None,
# }
intersphinx_mapping = {}
latex_elements = {'preamble': '\usepackage{mymath}\usepackage{amssymb}\usepackage{amsmath}\usepackage{bbm}'}

View File

@ -1,781 +0,0 @@
import sys
from latexparser import latexparser, TexCmd
import distutils.dep_util
import os
import cPickle as pickle
import pyparsing as pp
import StringIO
from qfile import QOpen
from string import Template
from random import random
import urllib
# useful things for pyparsing
def returnList(x):
def listify(s, loc, toks):
return [toks]
x.setParseAction(listify)
return x
def returnTuple(x):
def listify(s, loc, toks):
return [tuple(toks)]
x.setParseAction(listify)
return x
def CommaList(word):
return returnList(pp.Optional(word + pp.ZeroOrMore(pp.Suppress(',') + word)))
def sl(s):
return pp.Suppress(pp.Literal(s))
import pythonapi
python_api = pythonapi.reader("../../modules/python/api")
class SphinxWriter:
def __init__(self, filename, language, abspath):
assert language in ['py', 'c', 'cpp']
self.language = language
self.abspath = abspath
os.path.abspath(os.path.dirname(filename))
self.f_index = QOpen(os.path.join(self.language, filename), 'wt')
self.f = self.f_index
self.f_chapter = None
self.f_section = None
self.indent = 0
self.state = None
self.envstack = []
self.tags = {}
self.errors = open('errors.%s' % language, 'wt')
self.unhandled_commands = set()
self.freshline = True
self.function_props = {}
self.covered = set() # covered functions, used for error report
self.description = ""
self.cur_module = ""
def write(self, s):
self.freshline = len(s) > 0 and (s[-1] == '\n')
self.f.write(s.replace('\n', '\n' + self.indent * " "))
def appendspace(self):
""" append a space to the output - if we're not at the start of a line """
if not self.freshline:
self.write(' ')
def doplain(self, s):
if (len(s) > 1) and (s[0] == '$' and s[-1] == '$') and self.state != 'math':
s = ":math:`%s`" % s[1:-1].strip()
elif self.state != 'math':
s.replace('\\_', '_')
if len(s) > 0 and s[-1] == '\n':
s = s[:-1]
if self.state == 'fpreamble':
self.description += s
else:
self.write(s)
def docmd(self, c):
if self.state == 'math':
if c.cmd != ']':
self.default_cmd(c)
else:
self.indent -= 1
self.state = None
self.write('\n\n')
else:
if c.cmd == '\n':
self.write('\\\n')
else:
if c.cmd == '[':
meth = self.cmd_gomath
else:
cname = "cmd_" + c.cmd
meth = getattr(self, cname, self.unrecognized_cmd)
meth(c)
def cmd_gomath(self, c):
self.state = 'math'
print >>self, "\n\n.. math::"
self.indent += 1
print >>self
def cmd_chapter(self, c):
filename = str(c.params[0]).lower().replace(' ', '_').replace('/','_').replace('.','_')
self.f_index.write(" %s\n" % filename)
self.f_chapter = QOpen(os.path.join(self.language, filename + '.rst'), 'wt')
self.f_section = None
self.f = self.f_chapter
self.indent = 0
title = str(c.params[0])
print >>self, '*' * len(title)
print >>self, title
print >>self, '*' * len(title)
print >>self
self.chapter_intoc = False
def cmd_section(self, c):
filename = str(c.params[0]).lower().replace(' ', '_').replace('/','_')
if len(self.cur_module) > 0:
filename = self.cur_module + "_" + filename
if not self.chapter_intoc:
self.chapter_intoc = True
print >>self.f_chapter
print >>self.f_chapter, '.. toctree::'
print >>self.f_chapter, ' :maxdepth: 2'
print >>self.f_chapter
self.f_chapter.write(" %s\n" % filename)
self.f_section = QOpen(os.path.join(self.language, filename + '.rst'), 'wt')
self.f = self.f_section
self.indent = 0
title = self.render(c.params[0].str)
print >>self, title
print >>self, '=' * len(title)
print >>self
print >>self, '.. highlight:: %s' % {'c': 'c', 'cpp': 'cpp', 'py': 'python'}[self.language]
print >>self
def cmd_subsection(self, c):
print >>self
nm = str(c.params[0])
print >>self, nm
print >>self, '-' * len(nm)
print >>self
self.function_props = {}
self.covered.add(nm)
def cmd_includegraphics(self, c):
filename = os.path.join('..', '..', str(c.params[0]))
print >>self, "\n\n.. image:: %s\n\n" % filename
def cmd_renewcommand(self, c):
self.indent = 0
command = self.render(c.params[0].str)
if command == 'curModule':
self.cur_module = self.render(c.params[1].str)
def wikiLink(self, name):
return '`id=%s Comments from the Wiki <http://opencv.willowgarage.com/wiki/documentation/%s/%s/%s>`__' % (random(), self.language, self.cur_module, urllib.quote(name) )
def cmd_cvCppCross(self, c):
self.write(":func:`%s`" % str(c.params[0]))
def cmd_cvCPyCross(self, c):
self.write(":ref:`%s`" % str(c.params[0]))
def cmd_cross(self, c):
self.write(":ref:`%s`" % str(c.params[0]))
def cmd_cvCross(self, c):
self.write(":ref:`%s`" % str(c.params[0]))
def cmd_cvclass(self, c):
self.indent = 0
self.state = None
nm = self.render(list(c.params[0].str))
print >>self, "\n.. index:: %s\n" % nm
print >>self, ".. _%s:\n" % nm
print >>self, nm
print >>self, '-' * len(nm)
print >>self
print >>self, self.wikiLink(nm)
print >>self
if self.language == 'py':
print >>self, ".. class:: " + nm + "\n"
else:
print >>self, ".. ctype:: " + nm + "\n"
print >>self
self.addtag(nm, c)
self.state = 'class'
def cmd_index(self, c):
pass
def cmd_hyperref(self, c):
pass
def cmd_footnote(self, c):
pass
def cmd_textasciitilde(self, c):
self.write('~')
def addtag(self, nm, c):
if nm == "":
self.report_error(c, "empty name")
self.tags[nm] = "%s\t%s\t%d" % (nm, os.path.join(os.getcwd(), c.filename), c.lineno)
def cmd_cvfunc(self, c):
self.cmd_cvCPyFunc(c)
def cmd_cvCPyFunc(self, c):
self.indent = 0
nm = self.render(c.params[0].str)
print >>self, "\n.. index:: %s\n" % nm
print >>self, ".. _%s:\n" % nm
print >>self, nm
print >>self, '-' * len(nm)
print >>self
print >>self, self.wikiLink(nm)
print >>self
self.state = 'fpreamble'
if self.description != "":
self.report_error(c, "overflow - preceding cvfunc (starting %s) not terminated?" % repr(self.description[:30]))
self.description = ""
self.addtag(nm, c)
self.function_props = {'name' : nm}
self.covered.add(nm)
def cmd_cvCppFunc(self, c):
self.indent = 0
nm = self.render(c.params[0].str)
print >>self, "\n.. index:: %s\n" % nm
if 0:
print >>self, "\n.. _%s:\n" % nm
print >>self
print >>self, 'cv::%s' % nm
print >>self, '-' * (4+len(nm))
print >>self
print >>self, self.wikiLink(nm)
print >>self
self.state = 'fpreamble'
if self.description != "":
self.report_error(c, "overflow - preceding cvfunc (starting %s) not terminated?" % repr(self.description[:30]))
self.description = ""
self.addtag(nm, c)
self.function_props = {'name' : nm}
self.covered.add(nm)
def cmd_cvdefC(self, c):
if self.language != 'c':
return
s = str(c.params[0]).replace('\\_', '_')
s = s.replace('\\par', '')
s = s.replace('\n', ' ')
s = s.replace(';', '')
self.indent = 0
for proto in s.split('\\newline'):
if proto.strip() != "":
print >>self, "\n\n.. cfunction:: " + proto.strip() + "\n"
# print >>self, "=", repr(c.params[0].str)
print >>self, ' ' + self.description
self.description = ""
print >>self
self.state = None
self.function_props['defpy'] = s
def cmd_cvdefCpp(self, c):
if self.language != 'cpp':
return
s = str(c.params[0]).replace('\\_', '_')
s = s.replace('\\par', '')
s = s.replace('\n', ' ')
s = s.replace(';', '')
self.indent = 0
for proto in s.split('\\newline'):
if proto.strip() != "":
print >>self, "\n\n.. cfunction:: " + proto.strip() + "\n"
# print >>self, "=", repr(c.params[0].str)
if self.description != "":
print >>self, ' ' + self.description
else:
self.report_error(c, 'empty description')
self.description = ""
print >>self
self.state = None
self.function_props['defpy'] = s
def cmd_cvdefPy(self, c):
if self.language != 'py':
return
s = str(c.params[0]).replace('\\_', '_')
self.indent = 0
print >>self, ".. function:: " + s + "\n"
# print >>self, "=", repr(c.params[0].str)
print >>self, ' ' + self.description
print >>self
self.description = ""
self.state = None
self.function_props['defpy'] = s
pp.ParserElement.setDefaultWhitespaceChars(" \n\t")
ident = pp.Word(pp.alphanums + "_.+-")
ident_or_tuple = ident | (sl('(') + CommaList(ident) + sl(')'))
initializer = ident_or_tuple
arg = returnList(ident + pp.Optional(sl('=') + initializer))
decl = ident + sl('(') + CommaList(arg) + sl(')') + sl("->") + ident_or_tuple + pp.StringEnd()
try:
l = decl.parseString(s)
if str(l[0]) != self.function_props['name']:
self.report_error(c, 'Decl "%s" does not match function name "%s"' % (str(l[0]), self.function_props['name']))
self.function_props['signature'] = l
if l[0] in python_api:
(ins, outs) = python_api[l[0]]
ins = [a for a in ins if not 'O' in a.flags]
if outs != None:
outs = outs.split(',')
if len(ins) != len(l[1]):
self.report_error(c, "function %s documented arity %d, code arity %d" % (l[0], len(l[1]), len(ins)))
if outs == None:
if l[2] != 'None':
self.report_error(c, "function %s documented None, but code has %s" % (l[0], l[2]))
else:
if isinstance(l[2], str):
doc_outs = [l[2]]
else:
doc_outs = l[2]
if len(outs) != len(doc_outs):
self.report_error(c, "function %s output code tuple %d, documented %d" % (l[0], len(outs), len(doc_outs)))
else:
# self.report_error(c, "function %s documented but not found in code" % l[0])
pass
except pp.ParseException, pe:
self.report_error(c, str(pe))
print s
print pe
def report_error(self, c, msg):
print >>self.errors, "%s:%d: [%s] Error %s" % (c.filename, c.lineno, self.language, msg)
def cmd_begin(self, c):
if len(c.params) == 0:
self.report_error(c, "Malformed begin")
return
self.write('\n')
s = str(c.params[0])
self.envstack.append((s, (c.filename, c.lineno)))
if s == 'description':
if self.language == 'py' and 'name' in self.function_props and not 'defpy' in self.function_props:
self.report_error(c, "No cvdefPy for function %s" % self.function_props['name'])
self.indent += 1
elif s == 'lstlisting':
# Set indent to zero while collecting code; so later write will not double-indent
self.saved_f = self.f
self.saved_indent = self.indent
self.f = StringIO.StringIO()
self.indent = 0
elif s in ['itemize', 'enumerate']:
self.indent += 1
elif s == 'tabular':
self.f = StringIO.StringIO()
else:
self.default_cmd(c)
def cmd_item(self, c):
if len(self.ee()) == 0:
self.report_error(c, "item without environment")
return
self.indent -= 1
markup = {'itemize' : '*', 'enumerate' : '#.', 'description' : '*'}[self.ee()[-1]]
if len(c.args) > 0:
markup += " " + self.render([c.args[0].str])
if len(c.params) > 0:
markup += " " + self.render(c.params[0].str)
self.write("\n\n" + markup)
self.indent += 1
def cmd_end(self, c):
if len(c.params) != 1:
self.report_error(c, "Malformed end")
return
if len(self.envstack) == 0:
self.report_error(c, "end with no env")
return
self.write('\n')
s = str(c.params[0])
if self.envstack == []:
print "Cannot pop at", (c.filename, c.lineno)
if self.envstack[-1][0] != s:
self.report_error(c, "end{%s} does not match current stack %s" % (s, repr(self.envstack)))
self.envstack.pop()
if s == 'description':
self.indent -= 1
if self.indent == 0:
self.function_props['done'] = True
elif s in ['itemize', 'enumerate']:
self.indent -= 1
elif s == 'tabular':
tabletxt = self.f.getvalue()
self.f = self.f_section
self.f.write(self.handle_table(tabletxt))
elif s == 'lstlisting':
listing = self.f.getvalue()
self.f = self.saved_f
self.indent = self.saved_indent
print >>self
if self.language == 'py':
ckeys = ['#define', 'void', '#include', ';\n']
found = [repr(k) for k in ckeys if k in listing]
if len(found) > 0:
self.report_error(c, 'listing is probably C, found %s' % ",".join(found))
if (self.language == 'py') and ('>>>' in listing):
print >>self, "\n.. doctest::\n"
else:
print >>self, "\n::\n"
self.indent += 1
print >>self
self.write(listing)
self.indent -= 1
print >>self
print >>self
print >>self, ".." # otherwise a following :param: gets treated as more listing
elif s == 'document':
pass
else:
self.default_cmd(c)
def cmd_label(self, c):
pass
def cmd_lstinputlisting(self, c):
s = str(c.params[0])
print >>self.f, ".. include:: %s" % os.path.normpath(os.path.join(self.abspath, s))
print >>self.f, " :literal:"
print >>self.f
# Conditionals
def cmd_cvC(self, c):
self.do_conditional(['c'], c)
def cmd_cvCpp(self, c):
self.do_conditional(['cpp'], c)
def cmd_cvPy(self, c):
self.do_conditional(['py'], c)
def cmd_cvCPy(self, c):
self.do_conditional(['c', 'py'], c)
def do_conditional(self, langs, c):
if self.language in langs:
self.doL(c.params[0].str, False)
def render(self, L):
""" return L rendered as a string """
save = self.f
self.f = StringIO.StringIO()
for x in L:
if isinstance(x, TexCmd):
self.docmd(x)
else:
self.doplain(x)
r = self.f.getvalue()
self.f = save
return r
def cmd_cvarg(self, c):
if len(c.params) != 2:
self.report_error(c, "Malformed cvarg")
return
e = self.ee()
if self.state == 'class':
nm = self.render(c.params[0].str)
if '->' in nm:
print >>self, "\n\n.. method:: %s\n\n" % nm
else:
print >>self, "\n\n.. attribute:: %s\n\n" % nm
self.indent += 1
print >>self
self.doL(c.params[1].str, False)
self.indent -= 1
print >>self
return
is_func_arg = (e == ['description']) and (not 'done' in self.function_props)
if is_func_arg:
nm = self.render(c.params[0].str)
print >>self, '\n:param %s: ' % nm,
type = None # Try to figure out the argument type
# For now, multiple args get a pass
if (self.language == 'py') and ('signature' in self.function_props) and (not ',' in nm):
sig = self.function_props['signature']
argnames = [a[0] for a in sig[1]]
if isinstance(sig[2], str):
resnames = [sig[2]]
else:
resnames = list(sig[2])
if not nm in argnames + resnames:
self.report_error(c, "Argument %s is not mentioned in signature (%s) (%s)" % (nm, ", ".join(argnames), ", ".join(resnames)))
api = python_api.get(self.function_props['name'], None)
if api:
(ins, outs) = api
adict = dict([(a.nm, a) for a in ins])
arg = adict.get(nm, None)
if arg:
type = arg.ty
else:
self.report_error(c, 'cannot find arg %s in code' % nm)
elif len(e) > 0 and e[-1] == 'description':
print >>self, '\n* **%s** ' % self.render(c.params[0].str),
else:
self.report_error(c, "unexpected env (%s) for cvarg" % ",".join(e))
self.indent += 1
self.doL(c.params[1].str, False)
self.indent -= 1
print >>self
if is_func_arg and type:
type = type.replace('*', '')
translate = {
"ints" : "sequence of int",
"floats" : "sequence of float",
"IplImages" : "sequence of :class:`IplImage`",
"double" : "float",
"int" : "int",
"float" : "float",
"char" : "str",
"cvarrseq" : ":class:`CvArr` or :class:`CvSeq`",
"CvPoint2D32fs" : "sequence of (float, float)",
"pts_npts_contours" : "list of lists of (x,y) pairs",
"CvSeqOfCvSURFPoint" : ":class:`CvSeq` of :class:`CvSURFPoint`",
"CvSeqOfCvSURFDescriptor" : ":class:`CvSeq` of list of float",
"cvpoint2d32f_count" : "int",
"ranges" : "list of tuples of ints",
"PyObject" : "object",
"edgeorpoint" : ":class:`CvSubdiv2DEdge`, :class:`CvSubdiv2DPoint`",
}
print >>self, "\n:type %s: %s" % (nm, translate.get(type, ':class:`%s`' % type))
def cmd_genc(self, c): pass
def cmd_genpy(self, c): pass
def cmd_author(self, c): pass
def cmd_date(self, c): pass
def cmd_def(self, c): pass
def cmd_documentclass(self, c): pass
def cmd_maketitle(self, c): pass
def cmd_newcommand(self, c): pass
def cmd_newline(self, c): pass
def cmd_setcounter(self, c): pass
def cmd_tableofcontents(self, c): pass
def cmd_targetlang(self, c): pass
def cmd_usepackage(self, c): pass
def cmd_title(self, c): pass
def cmd_par(self, c): pass
def cmd_hline(self, c):
print >>self, "\\hline"
def cmd_cite(self, c):
# XXX jcb - these references are crashing Sphinx 0.65
# self.write("[%s]_" % str(c.params[0]))
self.write("%s" % str(c.params[0]))
def cmd_href(self, c):
if len(c.params) == 2:
self.write("`%s <%s>`_" % (str(c.params[1]), self.render(c.params[0].str)))
else:
self.report_error(c, "href should have two params")
def cmd_url(self, c):
self.write(str(c.params[0]))
def cmd_emph(self, c):
self.write("*" + self.render(c.params[0].str) + "*")
def cmd_textit(self, c):
self.write("*" + self.render(c.params[0].str) + "*")
def cmd_textbf(self, c):
self.write("**" + self.render(c.params[0].str) + "**")
def cmd_texttt(self, c):
self.write("``" + self.render(c.params[0].str) + "``")
def cmd_code(self, c):
self.cmd_texttt(c)
def default_cmd(self, c):
if self.f == self.f_section:
self.write(repr(c))
def unrecognized_cmd(self, c):
# if writing the index or chapter heading, anything goes
if not self.f in [self.f_index, self.f_chapter]:
self.write(c.cmd)
if (not 'lstlisting' in self.ee()) and (not c.cmd in "#{}%&*\\_^"):
if not c.cmd in self.unhandled_commands:
self.report_error(c, 'unhandled command %s' % c.cmd)
self.unhandled_commands.add(c.cmd)
def doL(self, L, newlines = True):
for x in L:
pos0 = self.f.tell()
if isinstance(x, TexCmd):
self.docmd(x)
else:
if 'lstlisting' in self.ee() or not newlines:
self.doplain(x)
else:
self.doplain(x.lstrip())
pos1 = self.f.tell()
if pos0 != pos1:
if self.state in ['math'] or not newlines:
self.appendspace()
else:
if not 'lstlisting' in self.ee():
self.write('\n')
def handle_table(self, s):
oneline = s.replace('\n', ' ').strip()
rows = [r.strip() for r in oneline.split('\\hline')]
tab = []
for r in rows:
if r != "":
cols = [c.strip() for c in r.split('&')]
tab.append(cols)
widths = [max([len(r[i]) for r in tab]) for i in range(len(tab[0]))]
st = "" # Sphinx table
if 0:
sep = "+" + "+".join(["-" * w for w in widths]) + "+"
st += sep + '\n'
for r in tab:
st += "|" + "|".join([c.center(w) for (c, w) in zip(r, widths)]) + "|" + '\n'
st += sep + '\n'
st = '.. table::\n\n'
sep = " ".join(["=" * w for w in widths])
st += ' ' + sep + '\n'
for y,r in enumerate(tab):
st += ' ' + " ".join([c.ljust(w) for (c, w) in zip(r, widths)]) + '\n'
if y == 0:
st += ' ' + sep + '\n'
st += ' ' + sep + '\n'
return st
def ee(self):
""" Return tags of the envstack. envstack[0] is 'document', so skip it """
return [n for (n,_) in self.envstack[1:]]
def get_tags(self):
return self.tags
def close(self):
if self.envstack != []:
print >>self.errors, "Error envstack not empty at end of doc: " + repr(self.envstack)
print >>self.errors, "Unrecognized commands:"
for c in sorted(self.unhandled_commands):
print >>self.errors, "\n " + c
print >>self.errors
if self.language == 'py':
print >>self.errors, "The following functions are undocumented"
for f in sorted(set(python_api) - self.covered):
print >>self.errors, ' ', f
print >>self.f_index, " bibliography"
print >>self.f_index, """
Indices and tables
==================
* :ref:`genindex`
* :ref:`search`
"""
# Quick and dirty bibtex parser
def parseBib(filename, language):
pp.ParserElement.setDefaultWhitespaceChars(" \n\t")
entry = returnList(pp.Word('@', pp.alphanums) + sl('{') +
pp.Word(pp.alphanums + "_") + sl(',') +
CommaList(returnTuple(pp.Word(pp.alphanums) + sl('=') + pp.QuotedString('{', endQuoteChar = '}'))) +
pp.Suppress(pp.Optional(',')) +
sl('}'))
r = (pp.ZeroOrMore(entry) | pp.Suppress('#' + pp.ZeroOrMore(pp.CharsNotIn('\n'))) + pp.StringEnd()).parseFile(filename)
bibliography = QOpen(os.path.join(language, "bibliography.rst"), 'wt')
print >>bibliography, "Bibliography"
print >>bibliography, "============"
print >>bibliography
for _,e in sorted([(str(x[1]), x) for x in r]):
(etype, tag, attrs) = str(e[0][1:]), str(e[1]), dict([(str(a), str(b)) for (a,b) in e[2]])
representations = {
'article' : '$author, "$title". $journal $volume $number, pp $pages ($year)',
'inproceedings' : '$author "$title", $booktitle, $year',
'misc' : '$author "$title", $year',
'techreport' : '$author "$title", $edition, $edition ($year)',
}
if etype in representations:
if 0:
print >>bibliography, tag
print >>bibliography, "^" * len(tag)
print >>bibliography
print >>bibliography, ".. [%s] %s" % (tag, Template(representations[etype]).safe_substitute(attrs))
print >>bibliography
bibliography.close()
if 1:
fulldoc = latexparser(sys.argv[1])
abspath = os.path.abspath(os.path.dirname(sys.argv[1]))
raw = open('raw.full', 'w')
for x in fulldoc:
print >>raw, repr(x)
raw.close()
# Filter on target language
def preprocess_conditionals(fd, conditionals):
r = []
ifstack = []
for x in fd:
if isinstance(x, TexCmd):
ll = x.cmd.rstrip()
loc = (x.filename, x.lineno)
if ll.startswith("if"):
# print " " * len(ifstack), '{', loc
ifstack.append((conditionals.get(ll[2:], False), loc))
elif ll.startswith("else"):
ifstack[-1] = (not ifstack[-1][0], ifstack[-1][1])
elif ll.startswith("fi"):
ifstack.pop()
# print " " * len(ifstack), '}', loc
elif not False in [p for (p,_) in ifstack]:
r.append(x)
else:
if not False in [p for (p,_) in ifstack]:
r.append(x)
if ifstack != []:
print "unterminated if", ifstack
sys.exit(0)
return r
tags = {}
for language in sys.argv[2:]:
doc = preprocess_conditionals(fulldoc, {
'C' : language=='c',
'Python' : language=='py',
'Py' : language=='py',
'CPy' : (language=='py' or language == 'c'),
'Cpp' : language=='cpp',
'plastex' : True})
raw = open('raw.%s' % language, 'w')
for x in doc:
print >>raw, repr(x)
raw.close()
sr = SphinxWriter('index.rst', language, abspath)
print >>sr, """
OpenCV |version| %s Reference
=================================
The OpenCV Wiki is here: http://opencv.willowgarage.com/
Contents:
.. toctree::
:maxdepth: 2
""" % {'c': 'C', 'cpp': 'C++', 'py': 'Python'}[language]
sr.doL(doc)
sr.close()
parseBib('../opencv.bib', language)
tags.update(sr.get_tags())
open('TAGS', 'w').write("\n".join(sorted(tags.values())) + "\n")

View File

@ -1,122 +0,0 @@
import sys
import hashlib
import cPickle as pickle
import os
from pyparsing import Word, CharsNotIn, Optional, OneOrMore, ZeroOrMore, Group, Forward, ParseException, Literal, Suppress, replaceWith, StringEnd, lineno, QuotedString, White, NotAny, ParserElement, MatchFirst
class Argument:
def __init__(self, s, loc, toks):
self.str = toks[1]
def __repr__(self):
return "[%s]" % self.str
def __str__(self):
return self.str
def argfun(s, loc, toks):
return Argument(s, loc, toks)
class Parameter:
def __init__(self, s, loc, toks):
self.str = toks[0].asList()
def __repr__(self):
return '{' + "".join([str(s) for s in self.str]) + '}'
return "{%s}" % self.str
def __str__(self):
return "".join([str(s) for s in self.str])
def paramfun(s, loc, toks):
return Parameter(s, loc, toks)
class TexCmd:
def __init__(self, s, loc, toks):
self.cmd = str(toks[0])[1:]
#print 'cmd', self.cmd
self.args = toks[1].asList()
self.params = toks[2].asList()
self.lineno = lineno(loc, s)
self.filename = None
def __repr__(self):
return '\\' + self.cmd + "".join([repr(a) for a in self.args]) + "".join([repr(p) for p in self.params])
class ZeroOrMoreAsList(ZeroOrMore):
def __init__(self, *args):
ZeroOrMore.__init__(self, *args)
def listify(s, loc, toks):
return [toks]
self.setParseAction(listify)
ParserElement.setDefaultWhitespaceChars("\n\t")
backslash = chr(92)
texcmd = Forward()
filler = CharsNotIn(backslash + '$')
filler2 = CharsNotIn(backslash + '$' + '{}')
arg = '[' + CharsNotIn("]") + ']'
arg.setParseAction(argfun)
dollarmath = QuotedString('$', multiline=True, unquoteResults=False)
param = Suppress(Literal('{')) + ZeroOrMoreAsList(dollarmath | filler2 | QuotedString('{', endQuoteChar='}', unquoteResults=False) | texcmd) + Suppress(Literal('}'))
param.setParseAction(paramfun)
def bs(c): return Literal("\\" + c)
singles = bs("[") | bs("]") | bs("{") | bs("}") | bs("\\") | bs("&") | bs("_") | bs(",") | bs("#") | bs("\n") | bs(";") | bs("|") | bs("%") | bs("*") | bs("~") | bs("^")
texcmd << (singles | Word("\\", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", min = 2)) + ZeroOrMoreAsList(arg) + ZeroOrMoreAsList(param)
def texcmdfun(s, loc, toks):
return TexCmd(s, loc, toks)
texcmd.setParseAction(texcmdfun)
#legal = "".join([chr(x) for x in set(range(32, 127)) - set(backslash)])
#filler = Word(legal)
document = ZeroOrMore(dollarmath | texcmd | filler) + StringEnd().suppress()
if 0:
s = "This is \\\\ test"
print s
for t in document.parseString(s):
if isinstance(t, TexCmd):
print '====> cmd=[%s]' % t.cmd, t
else:
print '====>', t
sys.exit(-1)
selfstr = open( __file__).read() # Own source as a string. Used as part of hash.
hashbase = hashlib.md5(selfstr)
def tokenize(filename):
f = open(filename, "rt")
def uncomment(s):
if '%' in s and not '\\%' in s:
return s[:s.index('%')] + '\n'
else:
return s
docstr = "".join([uncomment(l) for l in f])
hash = hashbase.copy()
hash.update(docstr)
cache_filename = os.path.join("parse-cache", hash.hexdigest())
try:
return pickle.load(open(cache_filename))
except IOError:
print "parsing"
try:
r = document.parseString(docstr)
for x in r:
if isinstance(x, TexCmd) and not x.filename:
x.filename = filename
pickle.dump(r, open(cache_filename, 'w'))
return r
except ParseException, pe:
print 'Fatal problem at %s line %d col %d' % (filename, pe.lineno, pe.col)
print pe.line
sys.exit(1)
def latexparser(filename):
tokens = tokenize(filename)
def expand(t):
if isinstance(t, TexCmd) and t.cmd == "input":
filename = "../" + str(t.params[0].str[0]) + ".tex"
print filename
return latexparser(filename)
else:
return [t]
return sum([expand(t) for t in tokens], [])

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

View File

@ -1,42 +0,0 @@
\ProvidesPackage{mymath}
\newcommand{\matTT}[9]{
\[
\left|\begin{array}{ccc}
#1 & #2 & #3\\
#4 & #5 & #6\\
#7 & #8 & #9
\end{array}\right|
\]
}
\newcommand{\fork}[4]{
\left\{
\begin{array}{l l}
#1 & \mbox{#2}\\
#3 & \mbox{#4}\\
\end{array} \right.}
\newcommand{\forkthree}[6]{
\left\{
\begin{array}{l l}
#1 & \mbox{#2}\\
#3 & \mbox{#4}\\
#5 & \mbox{#6}\\
\end{array} \right.}
\newcommand{\vecthree}[3]{
\begin{bmatrix}
#1\\
#2\\
#3
\end{bmatrix}
}
\newcommand{\vecthreethree}[9]{
\begin{bmatrix}
#1 & #2 & #3\\
#4 & #5 & #6\\
#7 & #8 & #9
\end{bmatrix}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -1,30 +0,0 @@
class Argument:
def __init__(self, fields):
self.ty = fields[0]
self.nm = fields[1]
self.flags = ""
self.init = None
if len(fields) > 2:
if fields[2][0] == '/':
self.flags = fields[2][1:].split(",")
else:
self.init = fields[2]
def reader(apifile):
api = []
for l in open(apifile):
if l[0] == '#':
continue
l = l.rstrip()
f = l.split()
if len(f) != 0:
if l[0] != ' ':
if len(f) > 1:
ty = f[1]
else:
ty = None
api.append((f[0], [], ty))
else:
api[-1][1].append(Argument(f))
return dict([(a, (ins, outs)) for (a, ins, outs) in api])

View File

@ -1,18 +0,0 @@
import StringIO
import os
class QOpen(StringIO.StringIO):
def __init__(self, *args):
self.__args = args
StringIO.StringIO.__init__(self)
def close(self):
import StringIO, os
fname = self.__args[0]
if not os.access(fname, os.R_OK) or self.getvalue() != open(fname).read():
open(*self.__args).write(self.getvalue())
StringIO.StringIO.close(self)
def __del__(self):
if not self.closed:
self.close()

View File

@ -1,130 +0,0 @@
\documentclass[11pt]{book}
\usepackage{cite}
\usepackage[pdftex]{graphicx}
\usepackage{titlesec}
\usepackage{listings}
\usepackage{fancyvrb}
\usepackage[svgnames]{xcolor}
\usepackage{framed}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{bbm}
\usepackage{hyperref}
\usepackage{makeidx}
\usepackage{color}
\usepackage{verbatim}
\setcounter{secnumdepth}{1}
\definecolor{shadecolor}{gray}{0.95} % Background color of title bars
\lstset{
language=C,
basicstyle=\small\ttfamily,
backgroundcolor=\color{shadecolor}
}
\definecolor{cvlinkcolor}{rgb}{0.0 0.3 0.8}
% taken from http://en.wikibooks.org/wiki/LaTeX/Hyperlinks
\hypersetup{
bookmarks=true, % show bookmarks bar?
unicode=false, % non-Latin characters in Acrobats bookmarks
%pdftoolbar=true, % show Acrobats toolbar?
%pdfmenubar=true, % show Acrobats menu?
%pdffitwindow=false, % window fit to page when opened
%pdfstartview={FitH}, % fits the width of the page to the window
%pdftitle={My title}, % title
%pdfauthor={Author}, % author
%pdfsubject={Subject}, % subject of the document
%pdfcreator={Creator}, % creator of the document
%pdfproducer={Producer}, % producer of the document
%pdfkeywords={keywords}, % list of keywords
%pdfnewwindow=true, % links in new window
colorlinks=true, % false: boxed links; true: colored links
linkcolor=cvlinkcolor, % color of internal links
citecolor=cvlinkcolor, % color of links to bibliography
filecolor=magenta, % color of file links
urlcolor=cyan % color of external links
}
\makeindex
\newcommand{\piRsquare}{\pi r^2} % This is my own macro !!!
\usepackage{helvetica}
\usepackage{ifthen}
\usepackage{alltt}
\usepackage{opencv}
%%% Margins %%%
\oddsidemargin 0.0in
\evensidemargin 0.0in
\textwidth 6.5in
%\headheight 1.0in
%\topmargin 0.5in
%\textheight 9.0in
%\footheight 1.0in
%%%%%%%%%%%%%%%
\title{OpenCV Reference Manual} % used by \maketitle
\author{v2.2} % used by \maketitle
\date{December, 2010} % used by \maketitle
\begin{document}
\maketitle % automatic title!
\setcounter{tocdepth}{8}
\tableofcontents
\titleformat{\subsection}
{\titlerule
\vspace{.8ex}%
\normalfont\bfseries\Large}
{\thesection.}{.5em}{}
%%% Define these to get rid of warnings
\def\genc{true}
\def\genpy{true}
\def\gencpp{true}
\newif\ifC
\newif\ifPy
\newif\ifCpp
\newif\ifCPy
\Ctrue
\Cppfalse
\Pyfalse
\CPytrue
\def\targetlang{c}
\part{C API Reference}
\input{opencvref_body}
\Cfalse
\Cpptrue
\Pyfalse
\CPyfalse
\def\targetlang{cpp}
\part{C++ API Reference}
\input{opencvref_body}
\Cfalse
\Cppfalse
\Pytrue
\CPytrue
\def\targetlang{python}
\part{Python API Reference}
\input{opencvref_body}
%\part{Common Information}
\addcontentsline{toc}{part}{Bibliography}
\bibliographystyle{plain}
{\small
\bibliography{opencv}
}
\addcontentsline{toc}{part}{Index}
\printindex
\end{document} % End of document.

View File

@ -1,78 +0,0 @@
\input{core_introduction}
\chapter{core. The Core Functionality}
\renewcommand{\curModule}{core}
\input{core_basic_structures}
\input{core_array_operations}
\input{core_dynamic_structures}
\input{core_drawing_functions}
\input{core_persistence}
\input{core_clustering_search}
\input{core_utilities_system_functions}
\chapter{imgproc. Image Processing}
\renewcommand{\curModule}{imgproc}
\input{imgproc_histograms}
\input{imgproc_image_filtering}
\input{imgproc_image_warping}
\input{imgproc_image_transform}
\input{imgproc_struct_shape_analysis}
\input{imgproc_planar_subdivisions}
\input{imgproc_motion_tracking}
\input{imgproc_feature_detection}
\input{imgproc_object_detection}
\chapter{features2d. Feature Detection and Descriptor Extraction}
\renewcommand{\curModule}{features2d}
\input{features2d_detection_description}
\input{features2d_common_detection_description}
\input{features2d_object_categorization}
\chapter{flann. Clustering and Search in Multi-Dimensional Spaces}
\renewcommand{\curModule}{flann}
\input{flann}
\chapter{objdetect. Object Detection}
\renewcommand{\curModule}{objdetect}
\input{objdetect}
\chapter{video. Video Analysis}
\renewcommand{\curModule}{video}
\input{video_motion_tracking}
\chapter{highgui. High-level GUI and Media I/O}
\renewcommand{\curModule}{highgui}
\input{highgui}
\ifPy %Qt is for C and Cpp, so do nothing
\else
\input{highgui_qt}
\fi
\chapter{calib3d. Camera Calibration, Pose Estimation and Stereo}
\renewcommand{\curModule}{calib3d}
\input{calib3d}
\chapter{ml. Machine Learning}
\renewcommand{\curModule}{ml}
\input{ml}
\ifCpp
\chapter{gpu. GPU-based Functionality}
\renewcommand{\curModule}{gpu}
\input{gpu_introduction}
\input{gpu_initialization}
\input{gpu_data_structures}
\input{gpu_matrix_operations}
\input{gpu_per_element_operations}
\input{gpu_image_processing}
\input{gpu_matrix_reductions}
\input{gpu_object_detection}
\input{gpu_features2d}
\input{gpu_image_filtering}
\input{gpu_calib3d}
\fi

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,88 +0,0 @@
# Makefile for Sphinx documentation
#
# You can set these variables from the command line.
SPHINXOPTS =
SPHINXBUILD = sphinx-build
PAPER =
# Internal variables.
PAPEROPT_a4 = -D latex_paper_size=a4
PAPEROPT_letter = -D latex_paper_size=letter
ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
.PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " html to make standalone HTML files"
@echo " dirhtml to make HTML files named index.html in directories"
@echo " pickle to make pickle files"
@echo " json to make JSON files"
@echo " htmlhelp to make HTML files and a HTML help project"
@echo " qthelp to make HTML files and a qthelp project"
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
@echo " changes to make an overview of all changed/added/deprecated items"
@echo " linkcheck to check all external links for integrity"
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
clean:
-rm -rf _build/*
html:
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html
@echo
@echo "Build finished. The HTML pages are in _build/html."
dirhtml:
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) _build/dirhtml
@echo
@echo "Build finished. The HTML pages are in _build/dirhtml."
pickle:
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) _build/pickle
@echo
@echo "Build finished; now you can process the pickle files."
json:
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) _build/json
@echo
@echo "Build finished; now you can process the JSON files."
htmlhelp:
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp
@echo
@echo "Build finished; now you can run HTML Help Workshop with the" \
".hhp project file in _build/htmlhelp."
qthelp:
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) _build/qthelp
@echo
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
".qhcp project file in _build/qthelp, like this:"
@echo "# qcollectiongenerator _build/qthelp/opencv.qhcp"
@echo "To view the help file:"
@echo "# assistant -collectionFile _build/qthelp/opencv.qhc"
latex:
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex
@echo
@echo "Build finished; the LaTeX files are in _build/latex."
@echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
"run these through (pdf)latex."
changes:
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes
@echo
@echo "The overview file is in _build/changes."
linkcheck:
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck
@echo
@echo "Link check complete; look for any errors in the above output " \
"or in _build/linkcheck/output.txt."
doctest:
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) _build/doctest
@echo "Testing of doctests in the sources finished, look at the " \
"results in _build/doctest/output.txt."

View File

@ -1,9 +0,0 @@
* automatically put generated rst files in subdirectories
(e.g. cxcore/, cvreference/ etc.)
* fixup translation of function groups (e.g. cv*Dget)
* generate opencv_function_names on the fly during parsing of the tex source
* improve plastex
- allow pickling of dom tree --> only regenerate when necessary

View File

@ -1,26 +0,0 @@
{% extends "basic/layout.html" %}
{% block document %}
<div class="documentwrapper">
{%- if not embedded %}{% if not theme_nosidebar|tobool %}
<div class="bodywrapper">
{%- endif %}{% endif %}
<div class="body">
{% block body %} {% endblock %}
</div>
<div class="feedback">
<h2>Help and Feedback</h2>
You did not find what you were looking for?
<ul>
<li>Try the <a href="faq.html">FAQ</a>.</li>
<li>Ask a question in the <a href="http://tech.groups.yahoo.com/group/OpenCV/">user group/mailing list</a>.</li>
<li>If you think something is missing or wrong in the documentation,
please file a <a href="https://code.ros.org/trac/opencv/wiki">bug report</a>.</li>
</ul>
</div>
{%- if not embedded %}{% if not theme_nosidebar|tobool %}
</div>
{%- endif %}{% endif %}
</div>
{% endblock %}

View File

@ -1,31 +0,0 @@
[theme]
inherit = basic
stylesheet = default.css
pygments_style = sphinx
[options]
rightsidebar = false
stickysidebar = false
footerbgcolor = #004068
footertextcolor = #ffffff
sidebarbgcolor = #006090
sidebartextcolor = #ffffff
sidebarlinkcolor = #cceeff
relbarbgcolor = #003048
relbartextcolor = #ffffff
relbarlinkcolor = #ffffff
bgcolor = #ffffff
textcolor = #000000
headbgcolor = #f2f2f2
headtextcolor = #003048
headlinkcolor = #65a136
linkcolor = #0090d9
codebgcolor = #e0f5ff
codetextcolor = #333333
feedbackbgcolor = #004068
feedbacktextcolor = #ffffff
feedbacklinkcolor = #ffffff
bodyfont = sans-serif
headfont = 'Trebuchet MS', sans-serif

View File

@ -1,197 +0,0 @@
# -*- coding: utf-8 -*-
#
# opencv documentation build configuration file, created by
# sphinx-quickstart on Thu Jun 4 21:06:43 2009.
#
# This file is execfile()d with the current directory set to its containing dir.
#
# Note that not all possible configuration values are present in this
# autogenerated file.
#
# All configuration values have a default; values that are commented out
# serve to show the default.
import sys, os
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
# documentation root, use os.path.abspath to make it absolute, like shown here.
#sys.path.append(os.path.abspath('.'))
# -- General configuration -----------------------------------------------------
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
extensions = ['sphinx.ext.pngmath']
# Add any paths that contain templates here, relative to this directory.
templates_path = ['_templates']
# The suffix of source filenames.
source_suffix = '.rst'
# The encoding of source files.
#source_encoding = 'utf-8'
# The master toctree document.
master_doc = 'index'
# General information about the project.
project = u'opencv'
copyright = u'2009, authors'
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
#
# The short X.Y version.
version = '2.0'
# The full version, including alpha/beta/rc tags.
release = '2.0+ SVN'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
#language = None
# There are two options for replacing |today|: either, you set today to some
# non-false value, then it is used:
#today = ''
# Else, today_fmt is used as the format for a strftime call.
#today_fmt = '%B %d, %Y'
# List of documents that shouldn't be included in the build.
#unused_docs = []
# List of directories, relative to source directory, that shouldn't be searched
# for source files.
exclude_trees = ['_build']
# The reST default role (used for this markup: `text`) to use for all documents.
#default_role = None
# If true, '()' will be appended to :func: etc. cross-reference text.
#add_function_parentheses = True
# If true, the current module name will be prepended to all description
# unit titles (such as .. function::).
#add_module_names = True
# If true, sectionauthor and moduleauthor directives will be shown in the
# output. They are ignored by default.
#show_authors = False
# The name of the Pygments (syntax highlighting) style to use.
pygments_style = 'sphinx'
# A list of ignored prefixes for module index sorting.
#modindex_common_prefix = []
# -- Options for HTML output ---------------------------------------------------
# The theme to use for HTML and HTML Help pages. Major themes that come with
# Sphinx are currently 'default' and 'sphinxdoc'.
html_theme = 'blue'
# Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the
# documentation.
#html_theme_options = {}
# Add any paths that contain custom themes here, relative to this directory.
html_theme_path = ['_themes']
# The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation".
#html_title = None
# A shorter title for the navigation bar. Default is the same as html_title.
#html_short_title = None
# The name of an image file (relative to this directory) to place at the top
# of the sidebar.
html_logo = 'opencv-logo2.png'
# The name of an image file (within the static path) to use as favicon of the
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32
# pixels large.
#html_favicon = None
# Add any paths that contain custom static files (such as style sheets) here,
# relative to this directory. They are copied after the builtin static files,
# so a file named "default.css" will overwrite the builtin "default.css".
html_static_path = ['_static']
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
# using the given strftime format.
#html_last_updated_fmt = '%b %d, %Y'
# If true, SmartyPants will be used to convert quotes and dashes to
# typographically correct entities.
#html_use_smartypants = True
# Custom sidebar templates, maps document names to template names.
#html_sidebars = {}
# Additional templates that should be rendered to pages, maps page names to
# template names.
#html_additional_pages = {}
# If false, no module index is generated.
#html_use_modindex = True
# If false, no index is generated.
#html_use_index = True
# If true, the index is split into individual pages for each letter.
#html_split_index = False
# If true, links to the reST sources are added to the pages.
#html_show_sourcelink = True
# If true, an OpenSearch description file will be output, and all pages will
# contain a <link> tag referring to it. The value of this option must be the
# base URL from which the finished HTML is served.
#html_use_opensearch = ''
# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml").
#html_file_suffix = ''
# Output file base name for HTML help builder.
htmlhelp_basename = 'opencvdoc'
# -- Options for LaTeX output --------------------------------------------------
# The paper size ('letter' or 'a4').
#latex_paper_size = 'letter'
# The font size ('10pt', '11pt' or '12pt').
#latex_font_size = '10pt'
# Grouping the document tree into LaTeX files. List of tuples
# (source start file, target name, title, author, documentclass [howto/manual]).
latex_documents = [
('index', 'opencv.tex', u'opencv Documentation',
u'author', 'manual'),
]
# The name of an image file (relative to this directory) to place at the top of
# the title page.
#latex_logo = None
# For "manual" documents, if this is true, then toplevel headings are parts,
# not chapters.
#latex_use_parts = False
# Additional stuff for the LaTeX preamble.
#latex_preamble = ''
# Documents to append as an appendix to all manuals.
#latex_appendices = []
# If false, no module index is generated.
#latex_use_modindex = True
pngmath_latex_preamble = '\usepackage{mymath}\usepackage{amsmath}\usepackage{bbm}\usepackage[usenames]{color}'
highlight_language = 'c'

View File

@ -1,12 +0,0 @@
***
FAQ
***
.. toctree::
:maxdepth: 2
first_section

View File

@ -1,43 +0,0 @@
FAQ General
-----------
How can I get acquainted with OpenCV fast?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
1. Look at samples.
2. Look at some web guides
* http://www.cs.iit.edu/~agam/cs512/lect-notes/opencv-intro/index.html
* http://web.archive.org/web/20060715011915/http://www.cs.bham.ac.uk/resources/courses/robotics/doc/opencvdocs/ref/OpenCVRef_ImageProcessing.htm
* stavens_opencv_optical_flow.pdf
3. Using C/C++ interpreter Ch to run OpenCV
* http://www.softintegration.com/products/thirdparty/opencv/demos/
4. Within Visual Studio you may load OpenCV workspace:
* opencv.dsw for Microsoft Visual Studio 6.0
* opencv.sln for Miscrosoft Visual Studio .NET 2003
* cbuilderx/opencv.bpgr for Borland C++ BuilderX
* select cvsample project, build it and run. Look into the code and modify it as you wish.
5. Also, scan through reference manuals - they contain some example code as well.
6. Search OpenCV archives at http://groups.yahoo.com/group/OpenCV for the topic you are interesting in.
7. Create a new project from scratch or modify existing cvsample. There are
application wizards for Microsoft Visual Studio that create OpenCV-aware
projects; look for them at http://groups.yahoo.com/group/OpenCV (Files section
- you have to be registered OpenCV@yahoogroups.com user)
How do I join the OpenCV forum?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Send email to OpenCV-subscribe@yahoogroups.com , after you are a member and
select your logon, you can read the web group at
http://groups.yahoo.com/group/OpenCV. This mailing list is mirrored at gmane:
http://news.gmane.org/gmane.comp.lib.opencv so you can read it with a usenet
client.

View File

@ -1,48 +0,0 @@
FAQ Technical Questions on Library Use
--------------------------------------
How to access image pixels
^^^^^^^^^^^^^^^^^^^^^^^^^^
(The coordinates are 0-based and counted from image origin, either top-left (img->origin=IPL_ORIGIN_TL) or bottom-left (img->origin=IPL_ORIGIN_BL)
* Suppose, we have 8-bit 1-channel image I (IplImage* img)::
I(x,y) ~ ((uchar*)(img->imageData + img->widthStep*y))[x]
* Suppose, we have 8-bit 3-channel image I (IplImage* img)::
I(x,y)blue ~ ((uchar*)(img->imageData + img->widthStep*y))[x*3]
I(x,y)green ~ ((uchar*)(img->imageData + img->widthStep*y))[x*3+1]
I(x,y)red ~ ((uchar*)(img->imageData + img->widthStep*y))[x*3+2]
e.g. increasing brightness of point (100,100) by 30 can be done this way::
CvPoint pt = {100,100};
((uchar*)(img->imageData + img->widthStep*pt.y))[pt.x*3] += 30;
((uchar*)(img->imageData + img->widthStep*pt.y))[pt.x*3+1] += 30;
((uchar*)(img->imageData + img->widthStep*pt.y))[pt.x*3+2] += 30;
or more efficiently::
CvPoint pt = {100,100};
uchar* temp_ptr = &((uchar*)(img->imageData + img->widthStep*pt.y))[pt.x*3];
temp_ptr[0] += 30;
temp_ptr[1] += 30;
temp_ptr[2] += 30;
* Suppose, we have 32-bit floating point, 1-channel image I (IplImage* img)::
I(x,y) ~ ((float*)(img->imageData + img->widthStep*y))[x]
* Now, the general case: suppose, we have N-channel image of type T::
I(x,y)c ~ ((T*)(img->imageData + img->widthStep*y))[x*N + c]
or you may use macro CV_IMAGE_ELEM( image_header, elemtype, y, x_Nc )::
I(x,y)c ~ CV_IMAGE_ELEM( img, T, y, x*N + c )
There are functions that work with arbitrary (up to 4-channel) images and matrices (cvGet2D, cvSet2D), but they are pretty slow.

View File

@ -1,11 +0,0 @@
#!/bin/bash
grep ".. cfunction::" *.rst -h |
python -c "import sys
print \"opencv_function_names = [\"
for line in sys.stdin.readlines():
fname = line.split()[3].strip(' (')
bpos = fname.find('(')
if bpos >= 0:
fname = fname[:bpos]
print \"'%s',\" % fname
print \"]\"" > function_names.py

View File

@ -1,419 +0,0 @@
opencv_function_names = [
'cvProjectPoints2',
'cvFindHomography',
'cvCalibrateCamera2',
'cvFindExtrinsicCameraParams2',
'cvRodrigues2',
'cvUndistort2',
'cvInitUndistortMap',
'cvFindChessboardCorners',
'cvDrawChessboardCorners',
'cvRQDecomp3x3',
'cvDecomposeProjectionMatrix',
'cvCreatePOSITObject',
'cvPOSIT',
'cvReleasePOSITObject',
'cvCalcImageHomography',
'cvFindFundamentalMat',
'cvComputeCorrespondEpilines',
'cvConvertPointsHomogenious',
'cvOpenFileStorage',
'cvReleaseFileStorage',
'cvStartWriteStruct',
'cvEndWriteStruct',
'cvWriteInt',
'cvWriteReal',
'cvWriteString',
'cvWriteComment',
'cvStartNextStream',
'cvWrite',
'cvWriteRawData',
'cvWriteFileNode',
'cvGetRootFileNode',
'cvGetFileNodeByName',
'cvGetHashedKey',
'cvGetFileNode',
'char*',
'cvReadInt',
'cvReadIntByName',
'cvReadReal',
'cvReadRealByName',
'char*',
'char*',
'cvRead',
'cvReadByName',
'cvReadRawData',
'cvStartReadRawData',
'cvReadRawDataSlice',
'cvRegisterType',
'cvUnregisterType',
'cvFirstType',
'cvFindType',
'cvTypeOf',
'cvRelease',
'cvClone',
'cvSave',
'cvLoad',
'CV_RGB',
'cvLine',
'cvRectangle',
'cvCircle',
'cvEllipse',
'cvFillPoly',
'cvFillConvexPoly',
'cvPolyLine',
'cvInitFont',
'cvPutText',
'cvGetTextSize',
'cvDrawContours',
'cvInitLineIterator',
'cvClipLine',
'cvEllipse2Poly',
'cvCreateMemStorage',
'cvCreateChildMemStorage',
'cvReleaseMemStorage',
'cvClearMemStorage',
'cvMemStorageAlloc',
'cvMemStorageAllocString',
'cvSaveMemStoragePos',
'cvRestoreMemStoragePos',
'cvCreateSeq',
'cvSetSeqBlockSize',
'cvSeqPush',
'cvSeqPop',
'cvSeqPushFront',
'cvSeqPopFront',
'cvSeqPushMulti',
'cvSeqPopMulti',
'cvSeqInsert',
'cvSeqRemove',
'cvClearSeq',
'cvGetSeqElem',
'cvSeqElemIdx',
'cvCvtSeqToArray',
'cvMakeSeqHeaderForArray',
'cvSeqSlice',
'cvCloneSeq',
'cvSeqRemoveSlice',
'cvSeqInsertSlice',
'cvSeqInvert',
'cvSeqSort',
'cvStartAppendToSeq',
'cvStartWriteSeq',
'cvEndWriteSeq',
'cvFlushSeqWriter',
'cvStartReadSeq',
'cvGetSeqReaderPos',
'cvSetSeqReaderPos',
'cvCreateSet',
'cvSetAdd',
'cvSetRemove',
'cvSetNew',
'cvSetRemoveByPtr',
'cvGetSetElem',
'cvClearSet',
'cvCreateGraph',
'cvGraphAddVtx',
'cvGraphRemoveVtx',
'cvGraphRemoveVtxByPtr',
'cvGetGraphVtx',
'cvGraphVtxIdx',
'cvGraphAddEdge',
'cvGraphAddEdgeByPtr',
'cvGraphRemoveEdge',
'cvGraphRemoveEdgeByPtr',
'cvFindGraphEdge',
'cvFindGraphEdgeByPtr',
'cvGraphEdgeIdx',
'cvGraphVtxDegree',
'cvGraphVtxDegreeByPtr',
'cvClearGraph',
'cvCloneGraph',
'cvCreateGraphScanner',
'cvNextGraphItem',
'cvReleaseGraphScanner',
'cvInitTreeNodeIterator',
'cvNextTreeNode',
'cvPrevTreeNode',
'cvTreeToNodeSeq',
'cvInsertNodeIntoTree',
'cvRemoveNodeFromTree',
'cvGetErrStatus',
'cvSetErrStatus',
'cvGetErrMode',
'cvSetErrMode',
'cvError',
'char*',
'cvRedirectError',
'cvAlloc',
'cvFree',
'cvGetTickCount',
'cvGetTickFrequency',
'cvRegisterModule',
'cvGetModuleInfo',
'cvUseOptimized',
'cvSetMemoryManager',
'cvSetIPLAllocators',
'cvSobel',
'cvLaplace',
'cvCanny',
'cvPreCornerDetect',
'cvCornerEigenValsAndVecs',
'cvCornerMinEigenVal',
'cvCornerHarris',
'cvFindCornerSubPix',
'cvGoodFeaturesToTrack',
'cvExtractSURF',
'cvGetStarKeypoints',
'cvSampleLine',
'cvGetRectSubPix',
'cvGetQuadrangleSubPix',
'cvResize',
'cvWarpAffine',
'cvGetAffineTransform',
'cv2DRotationMatrix',
'cvWarpPerspective',
'cvGetPerspectiveTransform',
'cvRemap',
'cvLogPolar',
'cvCreateStructuringElementEx',
'cvReleaseStructuringElement',
'cvErode',
'cvDilate',
'cvMorphologyEx',
'cvSmooth',
'cvFilter2D',
'cvCopyMakeBorder',
'cvIntegral',
'cvCvtColor',
'cvThreshold',
'cvAdaptiveThreshold',
'cvPyrDown',
'cvPyrUp',
'cvPyrSegmentation',
'cvFloodFill',
'cvFindContours',
'cvStartFindContours',
'cvFindNextContour',
'cvSubstituteContour',
'cvEndFindContours',
'cvMoments',
'cvGetSpatialMoment',
'cvGetCentralMoment',
'cvGetNormalizedCentralMoment',
'cvGetHuMoments',
'cvHoughLines2',
'cvHoughCircles',
'cvDistTransform',
'cvCreateHist',
'cvSetHistBinRanges',
'cvReleaseHist',
'cvClearHist',
'cvMakeHistHeaderForArray',
'cvGetMinMaxHistValue',
'cvNormalizeHist',
'cvThreshHist',
'cvCompareHist',
'cvCopyHist',
'cvCalcHist',
'cvCalcBackProject',
'cvCalcBackProjectPatch',
'cvCalcProbDensity',
'cvEqualizeHist',
'cvMatchTemplate',
'cvMatchShapes',
'cvCalcEMD2',
'cvCheckArr',
'cvKMeans2',
'cvSeqPartition',
'cvAcc',
'cvSquareAcc',
'cvMultiplyAcc',
'cvRunningAvg',
'cvUpdateMotionHistory',
'cvCalcMotionGradient',
'cvCalcGlobalOrientation',
'cvSegmentMotion',
'cvMeanShift',
'cvCamShift',
'cvSnakeImage',
'cvCalcOpticalFlowHS',
'cvCalcOpticalFlowLK',
'cvCalcOpticalFlowBM',
'cvCalcOpticalFlowPyrLK',
'cvCreateKalman',
'cvReleaseKalman',
'CvMat*',
'CvMat*',
'cvCreateConDensation',
'cvReleaseConDensation',
'cvConDensInitSampleSet',
'cvConDensUpdateByTime',
'cvCreateImage',
'cvCreateImageHeader',
'cvReleaseImageHeader',
'cvReleaseImage',
'cvInitImageHeader',
'cvCloneImage',
'cvSetImageCOI',
'cvGetImageCOI',
'cvSetImageROI',
'cvResetImageROI',
'cvGetImageROI',
'cvCreateMat',
'cvCreateMatHeader',
'cvReleaseMat',
'cvInitMatHeader',
'cvMat',
'cvCloneMat',
'cvCreateMatND',
'cvCreateMatNDHeader',
'cvReleaseMatND',
'cvInitMatNDHeader',
'cvCloneMatND',
'cvDecRefData',
'cvIncRefData',
'cvCreateData',
'cvReleaseData',
'cvSetData',
'cvGetRawData',
'cvGetMat',
'cvGetImage',
'cvCreateSparseMat',
'cvReleaseSparseMat',
'cvCloneSparseMat',
'cvGetSubRect',
'cvGetRow',
'cvGetRows',
'cvGetCol',
'cvGetCols',
'cvGetDiag',
'cvGetSize',
'cvInitSparseMatIterator',
'cvGetNextSparseNode',
'cvGetElemType',
'cvGetDims',
'cvGetDimSize',
'cvmGet',
'cvmSet',
'cvClearND',
'cvCopy',
'cvSet',
'cvSetZero',
'cvReshape',
'cvReshapeMatND',
'cvRepeat',
'cvFlip',
'cvSplit',
'cvMerge',
'cvLUT',
'cvConvertScale',
'cvConvertScaleAbs',
'cvAdd',
'cvAddS',
'cvAddWeighted',
'cvSub',
'cvSubS',
'cvSubRS',
'cvMul',
'cvDiv',
'cvAnd',
'cvAndS',
'cvOr',
'cvOrS',
'cvXor',
'cvXorS',
'cvNot',
'cvCmp',
'cvCmpS',
'cvInRange',
'cvInRangeS',
'cvMax',
'cvMaxS',
'cvMin',
'cvMinS',
'cvAbsDiff',
'cvAbsDiffS',
'cvCountNonZero',
'cvSum',
'cvAvg',
'cvAvgSdv',
'cvMinMaxLoc',
'cvNorm',
'cvSetIdentity',
'cvDotProduct',
'cvCrossProduct',
'cvScaleAdd',
'cvGEMM',
'cvTransform',
'cvPerspectiveTransform',
'cvMulTransposed',
'cvTrace',
'cvTranspose',
'cvDet',
'cvInvert',
'cvSolve',
'cvSVD',
'cvSVBkSb',
'cvEigenVV',
'cvCalcCovarMatrix',
'cvMahalanobis',
'cvRound',
'cvSqrt',
'cvInvSqrt',
'cvCbrt',
'cvFastArctan',
'cvIsNaN',
'cvIsInf',
'cvCartToPolar',
'cvPolarToCart',
'cvPow',
'cvExp',
'cvLog',
'cvSolveCubic',
'cvRNG',
'cvRandArr',
'cvRandInt',
'cvRandReal',
'cvDFT',
'cvGetOptimalDFTSize',
'cvMulSpectrums',
'cvDCT',
'cvLoadHaarClassifierCascade',
'cvReleaseHaarClassifierCascade',
'cvHaarDetectObjects',
'cvSetImagesForHaarClassifierCascade',
'cvRunHaarClassifierCascade',
'cvApproxChains',
'cvStartReadChainPoints',
'cvReadChainPoint',
'cvApproxPoly',
'cvBoundingRect',
'cvContourArea',
'cvArcLength',
'cvCreateContourTree',
'cvContourFromContourTree',
'cvMatchContourTrees',
'cvMaxRect',
'cvPointSeqFromMat',
'cvBoxPoints',
'cvFitEllipse2',
'cvFitLine',
'cvConvexHull2',
'cvCheckContourConvexity',
'cvConvexityDefects',
'cvPointPolygonTest',
'cvMinAreaRect2',
'cvMinEnclosingCircle',
'cvCalcPGH',
'cvSubdiv2DGetEdge',
'cvSubdiv2DRotateEdge',
'cvSubdiv2DEdgeOrg',
'cvSubdiv2DEdgeDst',
'cvCreateSubdivDelaunay2D',
'cvSubdivDelaunay2DInsert',
'cvSubdiv2DLocate',
'cvFindNearestPoint2D',
'cvCalcSubdivVoronoi2D',
'cvClearSubdivVoronoi2D',
]

View File

@ -1,31 +0,0 @@
#!/bin/bash
#cd .. && make && cd -
mkdir -p _build/html/python
mkdir -p _build/html/cpp
if true
then
rm -f *.rst
svn up
TEXINPUTS=../: python renderer.py c > a || exit
TEXINPUTS=$PWD: sphinx-build -b html -D 'html_title=OpenCV 2.0 C Reference' -d _build/doctrees . _build/html
fi
if true
then
rm -f *.rst
svn up
cp python-introduction.rst introduction.rst
TEXINPUTS=../: python renderer.py py > a || exit
cp python-introduction.rst introduction.rst
TEXINPUTS=$PWD: sphinx-build -b html -D 'highlight_language=python' -D 'html_title=OpenCV 2.0 Python Reference' -d _build/doctrees . _build/html/python
fi
if true
then
rm -f *.rst
svn up
TEXINPUTS=../: python renderer.py cpp > a || exit
TEXINPUTS=$PWD: sphinx-build -b html -D 'html_title=OpenCV 2.0 C++ Reference' -d _build/doctrees . _build/html/cpp
fi

View File

@ -1,19 +0,0 @@
The OpenCV Wiki is here: http://opencv.willowgarage.com/
Contents:
.. toctree::
:maxdepth: 2
introduction
cxcore._the_core_functionality
cv._image_processing_and_computer_vision
cvaux._extra_computer_vision_functionality
highgui._high-level_gui_and_media_io
ml._machine_learning
Indices and tables
==================
* :ref:`genindex`
* :ref:`search`

View File

@ -1,75 +0,0 @@
import sys
from pyparsing import Word, CharsNotIn, Optional, OneOrMore, ZeroOrMore, Group, ParseException, Literal, replaceWith
import pyparsing
help(pyparsing)
class Argument:
def __init__(self, s, loc, toks):
self.str = toks[1]
def __repr__(self):
return "[%s]" % self.str
def argfun(s, loc, toks):
return Argument(s, loc, toks)
class Parameter:
def __init__(self, s, loc, toks):
self.str = toks[1]
def __repr__(self):
return "{%s}" % self.str
def paramfun(s, loc, toks):
return Parameter(s, loc, toks)
class TexCmd:
def __init__(self, s, loc, toks):
self.cmd = str(toks[0])[1:]
#print 'cmd', self.cmd
self.args = toks[1].asList()
self.params = toks[2].asList()
def __repr__(self):
return self.cmd + "".join([repr(a) for a in self.args]) + "".join([repr(p) for p in self.params])
class ZeroOrMoreAsList(ZeroOrMore):
def __init__(self, *args):
ZeroOrMore.__init__(self, *args)
def listify(s, loc, toks):
return [toks]
self.setParseAction(listify)
arg = '[' + CharsNotIn("]") + ']'
arg.setParseAction(argfun)
param = '{' + Optional(CharsNotIn("}")) + '}'
param.setParseAction(paramfun)
texcmd = Word("\\", "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789") + ZeroOrMoreAsList(arg) + ZeroOrMoreAsList(param)
def texcmdfun(s, loc, toks):
if str(toks[0])[1:] == 'input':
filename = toks[2].asList()[0].str + "-py.tex"
print 'Now parsing', filename
return parsefile(filename)
else:
return TexCmd(s, loc, toks)
texcmd.setParseAction(texcmdfun)
legal = "".join([chr(x) for x in set(range(32, 127)) - set("\\")])
document = ZeroOrMore(texcmd | Word(legal)) + Literal(chr(127)).suppress()
def parsefile(filename):
f = open(filename, "rt")
lines = list(f)
def uncomment(s):
if '%' in s:
return s[:s.index('%')] + '\n'
else:
return s
lines = [uncomment(l) for l in lines]
docstr = "".join(lines) + chr(127)
# document.setFailAction(None)
return document.parseString(docstr)
for x in parsefile(sys.argv[1]):
if isinstance(x, TexCmd):
if x.cmd == 'chapter':
print repr(x)

View File

@ -1,42 +0,0 @@
\ProvidesPackage{mymath}
\newcommand{\matTT}[9]{
\[
\left|\begin{array}{ccc}
#1 & #2 & #3\\
#4 & #5 & #6\\
#7 & #8 & #9
\end{array}\right|
\]
}
\newcommand{\fork}[4]{
\left\{
\begin{array}{l l}
#1 & \mbox{#2}\\
#3 & \mbox{#4}\\
\end{array} \right.}
\newcommand{\forkthree}[6]{
\left\{
\begin{array}{l l}
#1 & \mbox{#2}\\
#3 & \mbox{#4}\\
#5 & \mbox{#6}\\
\end{array} \right.}
\newcommand{\vecthree}[3]{
\begin{bmatrix}
#1\\
#2\\
#3
\end{bmatrix}
}
\newcommand{\vecthreethree}[9]{
\begin{bmatrix}
#1 & #2 & #3\\
#4 & #5 & #6\\
#7 & #8 & #9
\end{bmatrix}
}

View File

@ -1,189 +0,0 @@
from plasTeX import Base
from plasTeX.Base.LaTeX.Verbatim import verbatim
from plasTeX.Base.LaTeX import Sectioning
import sys
class includegraphics(Base.Command):
args = '[size] file'
def invoke(self, tex):
Base.Command.invoke(self, tex)
class cvclass(Sectioning.subsection):
def invoke(self, tex):
Sectioning.subsection.invoke(self, tex)
class cvfunc(Sectioning.subsection):
def invoke(self, tex):
Sectioning.subsection.invoke(self, tex)
class cvCPyFunc(Sectioning.subsection):
def invoke(self, tex):
Sectioning.subsection.invoke(self, tex)
class cvCppFunc(Sectioning.subsection):
def invoke(self, tex):
Sectioning.subsection.invoke(self, tex)
class cvFunc(Sectioning.subsection):
args = 'title alt'
def invoke(self, tex):
Sectioning.subsection.invoke(self, tex)
class cvstruct(Sectioning.subsection):
def invoke(self, tex):
Sectioning.subsection.invoke(self, tex)
class cvmacro(Sectioning.subsection):
def invoke(self, tex):
Sectioning.subsection.invoke(self, tex)
class cross(Base.Command):
args = 'name'
def invoke(self, tex):
Base.Command.invoke(self, tex)
class label(Base.Command):
args = 'name'
def invoke(self, tex):
Base.Command.invoke(self, tex)
class url(Base.Command):
args = 'loc'
def invoke(self, tex):
Base.Command.invoke(self, tex)
class cvarg(Base.Command):
args = 'item def'
def invoke(self, tex):
Base.Command.invoke(self, tex)
class cvCross(Base.Command):
args = 'name altname'
def invoke(self, tex):
Base.Command.invoke(self, tex)
class cvCPyCross(Base.Command):
args = 'name'
def invoke(self, tex):
Base.Command.invoke(self, tex)
class cvCppCross(Base.Command):
args = 'name'
def invoke(self, tex):
Base.Command.invoke(self, tex)
class cvdefC(Base.Command):
args = 'a'
def invoke(self, tex):
Base.Command.invoke(self, tex)
class cvcode(Base.Command):
args = 'a'
def invoke(self, tex):
Base.Command.invoke(self, tex)
class cvdefPy(Base.Command):
args = 'a'
def invoke(self, tex):
Base.Command.invoke(self, tex)
class cvdefCpp(Base.Command):
args = 'a'
def invoke(self, tex):
Base.Command.invoke(self, tex)
class cvC(Base.Command):
args = 'a'
def invoke(self, tex):
Base.Command.invoke(self, tex)
class cvCpp(Base.Command):
args = 'a'
def invoke(self, tex):
Base.Command.invoke(self, tex)
class cvCPy(Base.Command):
args = 'a'
def invoke(self, tex):
Base.Command.invoke(self, tex)
class cvPy(Base.Command):
args = 'a'
def invoke(self, tex):
Base.Command.invoke(self, tex)
class xxindex(Base.Command):
args = 'entry'
def invoke(self, tex):
Base.Command.invoke(self, tex)
class lstlisting(verbatim):
def parse(self, tex):
verbatim.parse(self, tex)
return self.attributes
def section_filename(title):
"""Image Processing ==> image_processing.rst"""
lower_list = [word.lower() for word in title.split()]
return "_".join(lower_list) + ".rst"
class chapter(Sectioning.chapter):
@property
def filenameoverride(self):
if self.attributes['title'] is not None:
filename = section_filename(str(self.attributes['title']))
#assert filename in ['cxcore.rst', 'cvreference.rst']
return filename
raise AttributeError, 'This chapter does not generate a new file'
class section(Sectioning.section):
@property
def filenameoverride(self):
if self.attributes['title'] is not None:
filename = section_filename(str(self.attributes['title']))
print 'section:', filename
return filename
raise AttributeError, 'This section does not generate a new file'
class xifthenelse(Base.Command):
args = 'test then else'
class _not(Base.Command):
macroName = 'not'
class _and(Base.Command):
macroName = 'and'
class _or(Base.Command):
macroName = 'or'
class NOT(Base.Command):
pass
class AND(Base.Command):
pass
class OR(Base.Command):
pass
class openParen(Base.Command):
macroName = '('
class closeParen(Base.Command):
macroName = ')'
class isodd(Base.Command):
args = 'number:int'
class isundefined(Base.Command):
args = 'command:str'
class equal(Base.Command):
args = 'first second'
class lengthtest(Base.Command):
args = 'test'
class boolean(Base.Command):
args = 'name:str'

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -1,113 +0,0 @@
Introduction
============
Cookbook
--------
Here is a small collection of code fragments demonstrating some features
of the OpenCV Python bindings.
Convert an image from png to jpg
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
import cv
cv.SaveImage("foo.png", cv.LoadImage("foo.jpg"))
Compute the Laplacian
^^^^^^^^^^^^^^^^^^^^^
::
im = cv.LoadImage("foo.png", 1)
dst = cv.CreateImage(cv.GetSize(im), cv.IPL_DEPTH_16S, 3);
laplace = cv.Laplace(im, dst)
cv.SaveImage("foo-laplace.png", dst)
Using cvGoodFeaturesToTrack
^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
img = cv.LoadImage("foo.jpg")
eig_image = cv.CreateImage(cv.GetSize(img), cv.IPL_DEPTH_32F, 1)
temp_image = cv.CreateImage(cv.GetSize(img), cv.IPL_DEPTH_32F, 1)
# Find up to 300 corners using Harris
for (x,y) in cv.GoodFeaturesToTrack(img, eig_image, temp_image, 300, None, 1.0, use_harris = True):
print "good feature at", x,y
Using GetSubRect
^^^^^^^^^^^^^^^^
GetSubRect returns a rectangular part of another image. It does this without copying any data.
::
img = cv.LoadImage("foo.jpg")
sub = cv.GetSubRect(img, (0, 0, 32, 32)) # sub is 32x32 patch from img top-left
cv.SetZero(sub) # clear sub to zero, which also clears 32x32 pixels in img
Using CreateMat, and accessing an element
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
::
mat = cv.CreateMat(5, 5, cv.CV_32FC1)
mat[3,2] += 0.787
ROS image message to OpenCV
^^^^^^^^^^^^^^^^^^^^^^^^^^^
See this tutorial: http://www.ros.org/wiki/cv_bridge/Tutorials/UsingCvBridgeToConvertBetweenROSImagesAndOpenCVImages
PIL Image to OpenCV
^^^^^^^^^^^^^^^^^^^
(For details on PIL see the `PIL manual <http://www.pythonware.com/library/pil/handbook/image.htm>`_).
::
import Image
import cv
pi = Image.open('foo.png') # PIL image
cv_im = cv.CreateImageHeader(pi.size, cv.IPL_DEPTH_8U, 1)
cv.SetData(cv_im, pi.tostring())
OpenCV to PIL Image
^^^^^^^^^^^^^^^^^^^
::
cv_im = cv.CreateImage((320,200), cv.IPL_DEPTH_8U, 1)
pi = Image.fromstring("L", cv.GetSize(cv_im), cv_im.tostring())
NumPy and OpenCV
^^^^^^^^^^^^^^^^
Using the `array interface <http://docs.scipy.org/doc/numpy/reference/arrays.interface.html>`_, to use an OpenCV CvMat in NumPy::
import cv
import numpy
mat = cv.CreateMat(5, 5, cv.CV_32FC1)
a = numpy.asarray(mat)
and to use a NumPy array in OpenCV::
a = numpy.ones((640, 480))
mat = cv.fromarray(a)
even easier, most OpenCV functions can work on NumPy arrays directly, for example::
picture = numpy.ones((640, 480))
cv.Smooth(picture, picture, cv.CV_GAUSSIAN, 15, 15)
Given a 2D array,
the fromarray function (or the implicit version shown above)
returns a single-channel CvMat of the same size.
For a 3D array of size :math:`j \times k \times l`, it returns a
CvMat sized :math:`j \times k` with :math:`l` channels.
Alternatively, use fromarray with the allowND option to always return a cvMatND.

View File

@ -1,595 +0,0 @@
import string, re
import sys
from plasTeX.Renderers import Renderer
from plasTeX.Base.TeX import Primitives
# import generated OpenCV function names
# if the file function_names.py does not exist, it
# can be generated using the script find_function_names.sh
try:
from function_names import opencv_function_names
except:
opencv_function_names = []
pass
class XmlRenderer(Renderer):
def default(self, node):
""" Rendering method for all non-text nodes """
s = []
# Handle characters like \&, \$, \%, etc.
if len(node.nodeName) == 1 and node.nodeName not in string.letters:
return self.textDefault(node.nodeName)
# Start tag
s.append('<%s>' % node.nodeName)
# See if we have any attributes to render
if node.hasAttributes():
s.append('<attributes>')
for key, value in node.attributes.items():
# If the key is 'self', don't render it
# these nodes are the same as the child nodes
if key == 'self':
continue
s.append('<%s>%s</%s>' % (key, unicode(value), key))
s.append('</attributes>')
# Invoke rendering on child nodes
s.append(unicode(node))
# End tag
s.append('</%s>' % node.nodeName)
return u'\n'.join(s)
def textDefault(self, node):
""" Rendering method for all text nodes """
return node.replace('&','&amp;').replace('<','&lt;').replace('>','&gt;')
from plasTeX.Renderers import Renderer as BaseRenderer
class reStructuredTextRenderer(BaseRenderer):
aliases = {
'superscript': 'active::^',
'subscript': 'active::_',
'dollar': '$',
'percent': '%',
'opencurly': '{',
'closecurly': '}',
'underscore': '_',
'ampersand': '&',
'hashmark': '#',
'space': ' ',
'tilde': 'active::~',
'at': '@',
'backslash': '\\',
}
def __init__(self, *args, **kwargs):
BaseRenderer.__init__(self, *args, **kwargs)
# Load dictionary with methods
for key in vars(type(self)):
if key.startswith('do__'):
self[self.aliases[key[4:]]] = getattr(self, key)
elif key.startswith('do_'):
self[key[3:]] = getattr(self, key)
self.indent = 0
self.in_func = False
self.in_cvarg = False
self.descriptions = 0
self.after_parameters = False
self.func_short_desc = ''
def do_document(self, node):
return unicode(node)
def do_par(self, node):
if self.indent == -1:
pre = ""
post = ""
else:
pre = "\n" + (" " * self.indent)
post = "\n"
return pre + unicode(node).lstrip(" ") + post
def do_chapter(self, node):
t = str(node.attributes['title'])
section_files = []
for section in node.subsections:
try:
filename = section.filenameoverride
if filename is not None:
section_files.append(filename)
except:
pass
toc = ".. toctree::\n :maxdepth: 2\n\n"
for file in section_files:
if file[-4:] != '.rst':
print >>sys.stderr, "WARNING: unexpected file extension:", file
else:
toc += " %s\n" % file[:-4]
toc += "\n\n"
return "\n\n%s\n%s\n%s\n\n" % ('*' * len(t), t, '*' * len(t)) + toc + unicode(node)
def do_section(self, node):
t = str(node.attributes['title'])
return "\n\n%s\n%s\n\n" % (t, '=' * len(t)) + unicode(node)
def do_subsection(self, node):
t = str(node.attributes['title'])
return "\n\n%s\n%s\n\n" % (t, '-' * len(t)) + unicode(node)
def do_cvdefX(self, node, lang):
if self.language != lang:
return u""
self.indent = -1
self.in_func = False
decl = unicode(node.attributes['a']).rstrip(' ;') # remove trailing ';'
decl_list = decl.split(";")
r = u""
for d in decl_list:
r += u"\n\n.. %s:: %s\n\n" % ({'c' : 'cfunction', 'cpp' : 'cfunction', 'py' : 'function'}[self.language], d.strip())
self.indent = 4
if self.func_short_desc != '':
r += self.ind() + self.func_short_desc + '\n\n'
self.func_short_desc = ''
return r
def do_cvdefC(self, node):
return self.do_cvdefX(node, 'c')
def do_cvcode(self, node):
#body = unicode(node.source).replace(u"\n",u"").replace(u"\\newline", u"\n");
#body = body.replace(u"\\par", u"\n").replace(u"\\cvcode{", "").replace(u"\\", u"")[:-1];
body = unicode(node.source).replace(u"\\newline", u"\n").replace("_ ", "_");
body = body.replace(u"\\par", u"\n").replace(u"\\cvcode{", "").replace(u"\n\n",u"\n");
body = body.replace(u",\n", ",\n ").replace(u"\\", u"")[:-1];
lines = body.split(u"\n")
self.indent += 4
body = "\n".join([u"%s %s" % (self.ind(), s) for s in lines])
r = (u"\n\n%s::\n\n" % self.ind()) + unicode(body) + u"\n\n"
self.indent -= 4
return r
def do_cvdefCpp(self, node):
lang = 'cpp'
if self.language != lang:
return u""
self.indent = -1
self.in_func = False
decl = unicode(node.source).replace(u"\n",u"").replace(u"\\newline", u"").replace(u"_ ", u"_");
decl = decl.replace(u"\\par", u"").replace(u"\\cvdefCpp{", "").replace(u"\\", u"").rstrip(u" ;}");
decl_list = decl.split(";")
r = u""
for d in decl_list:
r += u"\n\n.. %s:: %s\n\n" % ({'c' : 'cfunction', 'cpp' : 'cfunction', 'py' : 'function'}[self.language], d.strip())
self.indent = 4
if self.func_short_desc != '':
r += self.ind() + self.func_short_desc + '\n\n'
self.func_short_desc = ''
return r
def do_cvdefPy(self, node):
return self.do_cvdefX(node, 'py')
def do_description(self, node):
self.descriptions += 1
desc = unicode(node)
self.descriptions -= 1
if self.descriptions == 0:
self.after_parameters = True
return u"\n\n" + desc + u"\n\n"
def do_includegraphics(self, node):
filename = '../' + str(node.attributes['file']).strip()
if not os.path.isfile(filename):
print >>sys.stderr, "WARNING: missing image file", filename
return u""
return u"\n\n%s.. image:: %s\n\n" % (self.ind(), filename)
def do_xfunc(self, node, a='title'):
t = self.get_func_prefix() + unicode(node.attributes[a]).strip()
print "====>", t
label = u"\n\n.. index:: %s\n\n.. _%s:\n\n" % (t, t)
self.in_func = True
self.descriptions = 0
self.after_parameters = False
self.indent = 0
#return u"" + unicode(node)
# Would like to look ahead to reorder things, but cannot see more than 2 ahead
if 0:
print "NODES:", node.source
n = node.nextSibling
while (n != None) and (n.nodeName != 'cvfunc'):
print " ", n.nodeName, len(n.childNodes)
n = n.nextSibling
print "-----"
return label + u"\n\n%s\n%s\n\n" % (t, '-' * len(t)) + unicode(node)
def do_cvfunc(self, node):
return self.do_xfunc(node)
def do_cvclass(self, node):
return self.do_xfunc(node)
def get_func_prefix(self):
return u""
if self.language == 'c':
return u"cv"
if self.language == 'cpp':
return u"cv\\:\\:"
if self.language == 'py':
return u"cv\\."
return u""
def do_cvFunc(self, node):
return self.do_xfunc(node, ['title','alt'][self.language == 'cpp'])
def do_cvCPyFunc(self, node):
return self.do_xfunc(node)
def do_cvCppFunc(self, node):
return self.do_xfunc(node)
def do_cvstruct(self, node):
t = str(node.attributes['title']).strip()
self.after_parameters = False
self.indent = 4
return u".. ctype:: %s" % t + unicode(node)
def do_cvmacro(self, node):
t = str(node.attributes['title']).strip()
self.after_parameters = False
self.indent = 4
return u".. cmacro:: %s" % t + unicode(node)
def showTree(self, node, i = 0):
n = node
while n != None:
print "%s[%s]" % (" " * i, n.nodeName)
if len(n.childNodes) != 0:
self.showTree(n.childNodes[0], i + 4)
n = n.nextSibling
def do_Huge(self, node):
return unicode(node)
def do_tabular(self, node):
if 0:
self.showTree(node)
rows = []
for row in node.childNodes:
cols = []
for col in row.childNodes:
cols.append(unicode(col).strip())
rows.append(cols)
maxes = [ 0 ] * len(rows[0])
for r in rows:
maxes = [ max(m,len(c)) for m,c in zip(maxes, r) ]
sep = "+" + "+".join([ ('-' * (m + 4)) for m in maxes]) + "+"
s = ""
s += sep + "\n"
for r in rows:
#s += "|" + "|".join([ ' ' + c.ljust(m + 3) for c,m in zip(r, maxes) ]) + "|" + "\n"
#s += sep + "\n"
s += self.ind() + "|" + "|".join([ ' ' + c.ljust(m + 3) for c,m in zip(r, maxes) ]) + "|" + "\n"
s += self.ind() + sep + "\n"
return unicode(s)
def do_verbatim(self, node):
return u"\n\n::\n\n " + unicode(node.source.replace('\n', '\n ')) + "\n\n"
def do_index(self, node):
return u""
# No idea why this does not work... JCB
return u"\n\n.. index:: (%s)\n\n" % node.attributes['entry']
def do_label(self, node):
return u""
def fixup_funcname(self, str):
"""
add parentheses to a function name if not already present
"""
str = str.strip()
if str[-1] != ')':
return str + '()'
return str
def gen_reference(self, name):
"""
try to guess whether *name* is a function, struct or macro
and if yes, generate the appropriate reference markup
"""
name = name.strip()
if name[0:2] == 'cv':
return u":cfunc:`%s`" % self.fixup_funcname(name)
elif 'cv'+name in opencv_function_names:
if self.language in ['c', 'cpp']:
return u":cfunc:`cv%s`" % self.fixup_funcname(name)
else:
return u":func:`%s`" % self.fixup_funcname(name)
elif name[0:2] == 'Cv' or name[0:3] == 'Ipl':
return u":ctype:`%s`" % name
elif name[0:2] == 'CV':
return u":cmacro:`%s`" % name
return None
def do_xcross(self, refname):
# try to guess whether t is a function, struct or macro
# and if yes, generate the appropriate reference markup
#rst_ref = self.gen_reference(refname)
#if rst_ref is not None:
# return rst_ref
return u":ref:`%s`" % refname
def do_cross(self, node):
return self.do_xcross(str(node.attributes['name']).strip())
def do_cvCross(self, node):
prefix = self.get_func_prefix()
if self.language == 'cpp':
t = prefix + str(node.attributes['altname']).strip()
return u":ref:`%s`" % t
else:
t = prefix + str(node.attributes['name']).strip()
return self.do_xcross(t)
def do_cvCPyCross(self, node):
t = self.get_func_prefix() + str(node.attributes['name']).strip()
return self.do_xcross(t)
def do_cvCppCross(self, node):
t = self.get_func_prefix() + str(node.attributes['name']).strip()
return u":ref:`%s`" % t
def ind(self):
return u" " * self.indent
def do_cvarg(self, node):
self.indent += 4
# Nested descriptions occur e.g. when a flag parameter can
# be one of several constants. We want to render the inner
# description differently than the outer parameter descriptions.
if self.in_cvarg or self.after_parameters:
defstr = unicode(node.attributes['def'])
assert not (u"\xe2" in unicode(defstr))
self.indent -= 4
param_str = u"\n%s * **%s** - %s\n"
return param_str % (self.ind(), str(node.attributes['item']).strip(), self.fix_quotes(defstr).strip(" "))
# save that we are in a paramater description
self.in_cvarg = True
defstr = unicode(node.attributes['def'])
assert not (u"\xe2" in unicode(defstr))
self.in_cvarg = False
self.indent -= 4
param_str = u"\n%s:param %s: %s"
return param_str % (self.ind(), str(node.attributes['item']).strip(), self.fix_quotes(defstr).strip())
#lines = defstr.split('\n')
#return u"\n%s%s\n%s\n" % (self.ind(), str(node.attributes['item']).strip(), "\n".join([self.ind()+" "+l for l in lines]))
def do_bgroup(self, node):
return u"bgroup(%s)" % node.source
def do_url(self, node):
return unicode(node.attributes['loc'])
def do_enumerate(self, node):
return unicode(node)
def do_itemize(self, node):
return unicode(node)
def do_item(self, node):
#if node.attributes['term'] != None:
if node.attributes.get('term',None):
self.indent += 4
defstr = unicode(node).strip()
assert not (u"\xe2" in unicode(defstr))
self.indent -= 4
return u"\n%s* %s *\n%s %s\n" % (self.ind(), unicode(node.attributes['term']).strip(), self.ind(), defstr)
else:
return u"\n\n%s* %s" % (self.ind(), unicode(node).strip())
def do_textit(self, node):
return "*%s*" % unicode(node.attributes['self'])
def do_texttt(self, node):
t = unicode(node)
# try to guess whether t is a function, struct or macro
# and if yes, generate the appropriate reference markup
rst_ref = self.gen_reference(t)
if rst_ref is not None:
return rst_ref
return u"``%s``" % t
def do__underscore(self, node):
return u"_"
def default(self, node):
print "DEFAULT dropping", node.nodeName
return unicode(node)
def do_lstlisting(self, node):
self.in_func = False
lines = node.source.split('\n')
self.indent += 2
body = "\n".join([u"%s %s" % (self.ind(), s) for s in lines[1:-1]])
r = (u"\n\n%s::\n\n" % self.ind()) + unicode(body) + u"\n\n"
if self.func_short_desc != '':
r = self.ind() + self.func_short_desc + '\n\n' + r
self.func_short_desc = ''
self.indent -= 2
return r
def do_math(self, node):
return u":math:`%s`" % node.source
def do_displaymath(self, node):
words = self.fix_quotes(node.source).strip().split()
return u"\n\n%s.. math::\n\n%s %s\n\n" % (self.ind(), self.ind(), " ".join(words[1:-1]))
def do_maketitle(self, node):
return u""
def do_setcounter(self, node):
return u""
def do_tableofcontents(self, node):
return u""
def do_titleformat(self, node):
return u""
def do_subsubsection(self, node):
return u""
def do_include(self, node):
return u""
def fix_quotes(self, s):
s = s.replace(u'\u2013', "'")
s = s.replace(u'\u2019', "'")
s = s.replace(u'\u2264', "#<2264>")
s = s.replace(u'\xd7', "#<d7>")
return s
def do_cvC(self, node):
if self.language == 'c':
return unicode(node.attributes['a'])
return unicode("")
def do_cvCpp(self, node):
if self.language == 'cpp':
return unicode(node.attributes['a'])
return unicode("")
def do_cvPy(self, node):
if self.language == 'py':
return unicode(node.attributes['a'])
return unicode("")
def do_cvCPy(self, node):
if self.language == 'c' or self.language == 'py':
return unicode(node.attributes['a'])
return unicode("")
def do_ifthenelse(self, node):
# print "IFTHENELSE: [%s],[%s],[%s]" % (node.attributes['test'], str(node.attributes['then']), node.attributes['else'])
print "CONDITION", unicode(node.attributes['test']).strip() == u'true'
if unicode(node.attributes['test']).strip() == u'true':
print "TRUE: [%s]" % str(node.attributes['then'])
return unicode(node.attributes['then'])
else:
return unicode(node.attributes['else'])
def do_equal(self, node):
first = unicode(node.attributes['first']).strip()
second = unicode(node.attributes['second']).strip()
if first == second:
return u'true'
else:
return u'false'
def textDefault(self, node):
if self.in_func:
self.func_short_desc += self.fix_quotes(unicode(node)).strip(" ")
return u""
s = unicode(node)
s = self.fix_quotes(s)
return s
return node.replace('\\_','_')
from plasTeX.TeX import TeX
import os
import pickle
def preprocess_conditionals(fname, suffix, conditionals):
print 'conditionals', conditionals
f = open("../" + fname + ".tex", 'r')
fout = open(fname + suffix + ".tex", 'w')
print 'write', fname + suffix + ".tex"
ifstack=[True]
for l in f.readlines():
ll = l.lstrip()
if ll.startswith("\\if"):
ifstack.append(conditionals.get(ll.rstrip()[3:], False))
elif ll.startswith("\\else"):
ifstack[-1] = not ifstack[-1]
elif ll.startswith("\\fi"):
ifstack.pop()
elif not False in ifstack:
fout.write(l)
f.close()
fout.close()
def parse_documentation_source(language):
# Instantiate a TeX processor and parse the input text
tex = TeX()
tex.ownerDocument.config['files']['split-level'] = 0
master_f = open("../online-opencv.tex", "rt")
out_master_f = open(("../online-opencv-%s.tex" % language), "wt")
flist = []
for l in master_f.readlines():
outl = l
if l.startswith("\\newcommand{\\targetlang}{}"):
outl = l.replace("}", ("%s}" % language))
elif l.startswith("\\input{"):
flist.append(re.findall(r"\{(.+)\}", l)[0])
outl = l.replace("}", ("-%s}" % language))
out_master_f.write(outl)
master_f.close()
out_master_f.close()
index_f = open("index.rst.copy", "rt")
index_lines = list(index_f.readlines())
index_f.close()
out_index_f = open("index.rst", "wt")
header_line = "OpenCV |version| %s Reference" % {"py": "Python", "c": "C", "cpp": "C++"}[language]
index_lines = [header_line + "\n", "="*len(header_line) + "\n", "\n"] + index_lines
for l in index_lines:
out_index_f.write(l)
out_index_f.close()
for f in flist:
preprocess_conditionals(f, '-' + language,
{'C':language=='c', 'Python':language=='py',
'Py':language=='py', 'CPy':(language=='py' or language == 'c'),
'Cpp':language=='cpp', 'plastex':True})
if 1:
tex.input("\\input{online-opencv-%s.tex}" % language)
else:
src0 = r'''
\documentclass{book}
\usepackage{myopencv}
\begin{document}'''
src1 = r'''
\end{document}
'''
lines = list(open("../CvReference.tex"))
LINES = 80
tex.input(src0 + "".join(lines[:LINES]) + src1)
return tex.parse()
language = sys.argv[1]
document = parse_documentation_source(language)
rest = reStructuredTextRenderer()
rest.language = language
rest.render(document)