diff --git a/doc/FAQ.tex b/doc/FAQ.tex deleted file mode 100644 index d412d8ecec..0000000000 --- a/doc/FAQ.tex +++ /dev/null @@ -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} diff --git a/doc/latex2sphinx/_static/insertIframe.js b/doc/_static/insertIframe.js similarity index 100% rename from doc/latex2sphinx/_static/insertIframe.js rename to doc/_static/insertIframe.js diff --git a/doc/latex2sphinx/_themes/blue/layout.html b/doc/_themes/blue/layout.html similarity index 100% rename from doc/latex2sphinx/_themes/blue/layout.html rename to doc/_themes/blue/layout.html diff --git a/doc/latex2sphinx/_themes/blue/theme.conf b/doc/_themes/blue/theme.conf similarity index 100% rename from doc/latex2sphinx/_themes/blue/theme.conf rename to doc/_themes/blue/theme.conf diff --git a/doc/common.m4 b/doc/common.m4 deleted file mode 100644 index a379190065..0000000000 --- a/doc/common.m4 +++ /dev/null @@ -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`'') diff --git a/doc/cvcam.rtf b/doc/cvcam.rtf deleted file mode 100644 index 5797a8d194..0000000000 --- a/doc/cvcam.rtf +++ /dev/null @@ -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; iheight; 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 }} \ No newline at end of file diff --git a/doc/go b/doc/go deleted file mode 100644 index d6f07a0815..0000000000 --- a/doc/go +++ /dev/null @@ -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 diff --git a/doc/goman b/doc/goman deleted file mode 100644 index de86424e6e..0000000000 --- a/doc/goman +++ /dev/null @@ -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 diff --git a/doc/helvetica.sty b/doc/helvetica.sty deleted file mode 100644 index dacc129a10..0000000000 --- a/doc/helvetica.sty +++ /dev/null @@ -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'. diff --git a/doc/latex2sphinx/buildall b/doc/latex2sphinx/buildall deleted file mode 100644 index 1fe8b00228..0000000000 --- a/doc/latex2sphinx/buildall +++ /dev/null @@ -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 - - diff --git a/doc/latex2sphinx/buildall_pdf b/doc/latex2sphinx/buildall_pdf deleted file mode 100644 index 176985dde2..0000000000 --- a/doc/latex2sphinx/buildall_pdf +++ /dev/null @@ -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 diff --git a/doc/latex2sphinx/building.jpg b/doc/latex2sphinx/building.jpg deleted file mode 100644 index 6056492f2f..0000000000 Binary files a/doc/latex2sphinx/building.jpg and /dev/null differ diff --git a/doc/latex2sphinx/conf.py b/doc/latex2sphinx/conf.py deleted file mode 100644 index 4f9d644973..0000000000 --- a/doc/latex2sphinx/conf.py +++ /dev/null @@ -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 -# " v 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 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}'} diff --git a/doc/latex2sphinx/latex.py b/doc/latex2sphinx/latex.py deleted file mode 100644 index 6e51aa83b3..0000000000 --- a/doc/latex2sphinx/latex.py +++ /dev/null @@ -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 `__' % (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") - diff --git a/doc/latex2sphinx/latexparser.py b/doc/latex2sphinx/latexparser.py deleted file mode 100644 index dd4ae104f4..0000000000 --- a/doc/latex2sphinx/latexparser.py +++ /dev/null @@ -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], []) diff --git a/doc/latex2sphinx/lena.jpg b/doc/latex2sphinx/lena.jpg deleted file mode 100644 index f06aa74a57..0000000000 Binary files a/doc/latex2sphinx/lena.jpg and /dev/null differ diff --git a/doc/latex2sphinx/mymath.sty b/doc/latex2sphinx/mymath.sty deleted file mode 100644 index 491c160cc3..0000000000 --- a/doc/latex2sphinx/mymath.sty +++ /dev/null @@ -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} -} - diff --git a/doc/latex2sphinx/opencv-logo2.png b/doc/latex2sphinx/opencv-logo2.png deleted file mode 100644 index cdd5428e0f..0000000000 Binary files a/doc/latex2sphinx/opencv-logo2.png and /dev/null differ diff --git a/doc/latex2sphinx/pythonapi.py b/doc/latex2sphinx/pythonapi.py deleted file mode 100644 index 83c04fdb70..0000000000 --- a/doc/latex2sphinx/pythonapi.py +++ /dev/null @@ -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]) diff --git a/doc/latex2sphinx/qfile.py b/doc/latex2sphinx/qfile.py deleted file mode 100644 index 6c2f2a9343..0000000000 --- a/doc/latex2sphinx/qfile.py +++ /dev/null @@ -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() diff --git a/doc/opencv.tex b/doc/opencv.tex deleted file mode 100644 index 8d7b47be2d..0000000000 --- a/doc/opencv.tex +++ /dev/null @@ -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 Acrobat’s bookmarks - %pdftoolbar=true, % show Acrobat’s toolbar? - %pdfmenubar=true, % show Acrobat’s 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. diff --git a/doc/opencvref_body.tex b/doc/opencvref_body.tex deleted file mode 100644 index 2fff7a9c5f..0000000000 --- a/doc/opencvref_body.tex +++ /dev/null @@ -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 - - diff --git a/doc/papers/algo_tracking.pdf b/doc/papers/algo_tracking.pdf deleted file mode 100644 index 17743e4540..0000000000 Binary files a/doc/papers/algo_tracking.pdf and /dev/null differ diff --git a/doc/papers/avbpa99.ps b/doc/papers/avbpa99.ps deleted file mode 100644 index f6504568f3..0000000000 Binary files a/doc/papers/avbpa99.ps and /dev/null differ diff --git a/doc/papers/camshift.pdf b/doc/papers/camshift.pdf deleted file mode 100644 index 002f64325d..0000000000 Binary files a/doc/papers/camshift.pdf and /dev/null differ diff --git a/doc/plastex/Makefile b/doc/plastex/Makefile deleted file mode 100644 index 36e11747d4..0000000000 --- a/doc/plastex/Makefile +++ /dev/null @@ -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 ' where 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." diff --git a/doc/plastex/TODO b/doc/plastex/TODO deleted file mode 100644 index ff2510fa9c..0000000000 --- a/doc/plastex/TODO +++ /dev/null @@ -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 diff --git a/doc/plastex/_themes/blue/layout.html b/doc/plastex/_themes/blue/layout.html deleted file mode 100644 index f688b3ab7c..0000000000 --- a/doc/plastex/_themes/blue/layout.html +++ /dev/null @@ -1,26 +0,0 @@ -{% extends "basic/layout.html" %} - -{% block document %} -
- {%- if not embedded %}{% if not theme_nosidebar|tobool %} -
- {%- endif %}{% endif %} -
- {% block body %} {% endblock %} -
- - {%- if not embedded %}{% if not theme_nosidebar|tobool %} -
- {%- endif %}{% endif %} -
-{% endblock %} - diff --git a/doc/plastex/_themes/blue/theme.conf b/doc/plastex/_themes/blue/theme.conf deleted file mode 100644 index dbd8fd8823..0000000000 --- a/doc/plastex/_themes/blue/theme.conf +++ /dev/null @@ -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 diff --git a/doc/plastex/conf.py b/doc/plastex/conf.py deleted file mode 100644 index edeb733d23..0000000000 --- a/doc/plastex/conf.py +++ /dev/null @@ -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 -# " v 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 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' diff --git a/doc/plastex/faq.rst b/doc/plastex/faq.rst deleted file mode 100644 index 06ec8f8035..0000000000 --- a/doc/plastex/faq.rst +++ /dev/null @@ -1,12 +0,0 @@ - - -*** -FAQ -*** - -.. toctree:: - :maxdepth: 2 - - first_section - - diff --git a/doc/plastex/faq_general.rst b/doc/plastex/faq_general.rst deleted file mode 100644 index 257d6a9b5f..0000000000 --- a/doc/plastex/faq_general.rst +++ /dev/null @@ -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. - diff --git a/doc/plastex/faq_technical.rst b/doc/plastex/faq_technical.rst deleted file mode 100644 index eda08a30d1..0000000000 --- a/doc/plastex/faq_technical.rst +++ /dev/null @@ -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. - diff --git a/doc/plastex/find_function_names.sh b/doc/plastex/find_function_names.sh deleted file mode 100644 index 9dd8bb5a99..0000000000 --- a/doc/plastex/find_function_names.sh +++ /dev/null @@ -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 diff --git a/doc/plastex/function_names.py b/doc/plastex/function_names.py deleted file mode 100644 index 875cfe153f..0000000000 --- a/doc/plastex/function_names.py +++ /dev/null @@ -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', -] diff --git a/doc/plastex/go b/doc/plastex/go deleted file mode 100644 index 7819101f76..0000000000 --- a/doc/plastex/go +++ /dev/null @@ -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 diff --git a/doc/plastex/index.rst.copy b/doc/plastex/index.rst.copy deleted file mode 100644 index 757fd1a855..0000000000 --- a/doc/plastex/index.rst.copy +++ /dev/null @@ -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` diff --git a/doc/plastex/latex.py b/doc/plastex/latex.py deleted file mode 100644 index 04bfca1416..0000000000 --- a/doc/plastex/latex.py +++ /dev/null @@ -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) diff --git a/doc/plastex/mymath.sty b/doc/plastex/mymath.sty deleted file mode 100644 index 491c160cc3..0000000000 --- a/doc/plastex/mymath.sty +++ /dev/null @@ -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} -} - diff --git a/doc/plastex/myopencv.py b/doc/plastex/myopencv.py deleted file mode 100644 index 06ac4af4d2..0000000000 --- a/doc/plastex/myopencv.py +++ /dev/null @@ -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' diff --git a/doc/plastex/opencv-logo2.png b/doc/plastex/opencv-logo2.png deleted file mode 100644 index cdd5428e0f..0000000000 Binary files a/doc/plastex/opencv-logo2.png and /dev/null differ diff --git a/doc/plastex/python-introduction.rst b/doc/plastex/python-introduction.rst deleted file mode 100644 index b2807d38b1..0000000000 --- a/doc/plastex/python-introduction.rst +++ /dev/null @@ -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 `_). - -:: - - 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 `_, 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. diff --git a/doc/plastex/renderer.py b/doc/plastex/renderer.py deleted file mode 100644 index 4238685aea..0000000000 --- a/doc/plastex/renderer.py +++ /dev/null @@ -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('') - 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' % (key, unicode(value), key)) - s.append('') - - # Invoke rendering on child nodes - s.append(unicode(node)) - - # End tag - s.append('' % node.nodeName) - - return u'\n'.join(s) - - def textDefault(self, node): - """ Rendering method for all text nodes """ - return node.replace('&','&').replace('<','<').replace('>','>') - -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', "#") - 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)