parent
12d98a7d18
commit
f82c04f426
43 changed files with 0 additions and 4218 deletions
@ -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} |
|
@ -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`'') |
|
@ -1,732 +0,0 @@ |
|||||||
{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset204\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fswiss\fcharset204\fprq2{\*\panose 020b0604020202020204}Arial;} |
|
||||||
{\f34\froman\fcharset0\fprq2 Times New Roman;}{\f32\froman\fcharset238\fprq2 Times New Roman CE;}{\f35\froman\fcharset161\fprq2 Times New Roman Greek;}{\f36\froman\fcharset162\fprq2 Times New Roman Tur;} |
|
||||||
{\f37\froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\f38\froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f39\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f42\fswiss\fcharset0\fprq2 Arial;}{\f40\fswiss\fcharset238\fprq2 Arial CE;} |
|
||||||
{\f43\fswiss\fcharset161\fprq2 Arial Greek;}{\f44\fswiss\fcharset162\fprq2 Arial Tur;}{\f45\fswiss\fcharset177\fprq2 Arial (Hebrew);}{\f46\fswiss\fcharset178\fprq2 Arial (Arabic);}{\f47\fswiss\fcharset186\fprq2 Arial Baltic;}} |
|
||||||
{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0; |
|
||||||
\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;\red160\green0\blue160;\red136\green0\blue0;}{\stylesheet{\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 |
|
||||||
\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\s1\ql \li0\ri0\sb360\sa60\keepn\pagebb\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\f1\fs52\lang1033\langfe1033\kerning32\cgrid\langnp1033\langfenp1033 |
|
||||||
\sbasedon0 \snext0 \sautoupd heading 1;}{\s2\qc \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 2;}{ |
|
||||||
\s3\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\fs40\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 heading 3;}{\*\cs10 \additive Default Paragraph Font;}{ |
|
||||||
\s15\ql \li0\ri0\sb120\sa120\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\caps\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd toc 1;}{ |
|
||||||
\s16\ql \li240\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin240\itap0 \scaps\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd toc 2;}{ |
|
||||||
\s17\ql \li480\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin480\itap0 \i\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd toc 3;}{ |
|
||||||
\s18\ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd toc 4;}{ |
|
||||||
\s19\ql \li960\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin960\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd toc 5;}{ |
|
||||||
\s20\ql \li1200\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin1200\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd toc 6;}{ |
|
||||||
\s21\ql \li1440\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin1440\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd toc 7;}{ |
|
||||||
\s22\ql \li1680\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin1680\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd toc 8;}{ |
|
||||||
\s23\ql \li1920\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin1920\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext0 \sautoupd toc 9;}{\*\cs24 \additive \ul\cf2 \sbasedon10 Hyperlink;}{\*\cs25 \additive \ul\cf12 |
|
||||||
\sbasedon10 FollowedHyperlink;}}{\info{\title }{\author vzaguskX}{\operator vpisarev}{\creatim\yr2002\mo11\dy22\hr18\min6}{\revtim\yr2002\mo11\dy22\hr18\min6}{\version2}{\edmins0}{\nofpages16}{\nofwords2873}{\nofchars16377}{\*\company iNNL} |
|
||||||
{\nofcharsws20112}{\vern8269}}\paperw11906\paperh16838\margl1701\margr850\margt1134\margb1134 \widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\hyphcaps0\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1701 |
|
||||||
\dgvorigin1134\dghshow1\dgvshow1\jexpand\viewkind4\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule \fet0\sectd |
|
||||||
\linex0\headery708\footery708\colsx708\endnhere\sectlinegrid360\sectdefaultcl {\*\pnseclvl1\pnucrm\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang{\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang |
|
||||||
{\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang{\pntxta )}}{\*\pnseclvl5\pndec\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl7 |
|
||||||
\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang{\pntxtb (}{\pntxta )}}\pard\plain |
|
||||||
\s3\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs40\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { |
|
||||||
\par }\pard\plain \qc \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\fs20\lang1024\langfe1024\noproof |
|
||||||
{\shpgrp{\*\shpinst\shpleft360\shptop4192\shpright8640\shpbottom7252\shpfhdr0\shpbxcolumn\shpbxignore\shpbypara\shpbyignore\shpwr3\shpwrk0\shpfblwtxt0\shpz0\shplid1026 |
|
||||||
{\sp{\sn groupLeft}{\sv 1813}}{\sp{\sn groupTop}{\sv 5094}}{\sp{\sn groupRight}{\sv 10093}}{\sp{\sn groupBottom}{\sv 8154}}{\sp{\sn fFlipH}{\sv 0}}{\sp{\sn fFlipV}{\sv 0}}{\sp{\sn posh}{\sv 0}}{\sp{\sn posv}{\sv 0}}{\sp{\sn fLayoutInCell}{\sv 1}} |
|
||||||
{\sp{\sn fLayoutInCell}{\sv 1}}{\shp{\*\shpinst\shplid1027{\sp{\sn relLeft}{\sv 1903}}{\sp{\sn relTop}{\sv 6894}}{\sp{\sn relRight}{\sv 10003}}{\sp{\sn relBottom}{\sv 8154}} |
|
||||||
{\sp{\sn fRelFlipH}{\sv 0}}{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 65536}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn posh}{\sv 2}}{\sp{\sn posrelh}{\sv 1}}{\sp{\sn posrelv}{\sv 1}} |
|
||||||
{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt \pard\plain \s2\qc \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { |
|
||||||
\fs52\charscalex150 Reference manual |
|
||||||
\par }}}}{\shp{\*\shpinst\shplid1028{\sp{\sn relLeft}{\sv 1813}}{\sp{\sn relTop}{\sv 5094}}{\sp{\sn relRight}{\sv 10093}}{\sp{\sn relBottom}{\sv 7074}}{\sp{\sn fRelFlipH}{\sv 0}} |
|
||||||
{\sp{\sn fRelFlipV}{\sv 0}}{\sp{\sn shapeType}{\sv 202}}{\sp{\sn lTxid}{\sv 131072}}{\sp{\sn fFilled}{\sv 0}}{\sp{\sn fLine}{\sv 0}}{\sp{\sn posh}{\sv 2}}{\sp{\sn posrelh}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\sp{\sn fLayoutInCell}{\sv 1}}{\shptxt |
|
||||||
\pard\plain \s3\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs40\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {CvCam |
|
||||||
\par }}}}}{\shprslt{\*\do\dobxcolumn\dobypara\dodhgt8192\dpgroup\dpcount3\dpx360\dpy4192\dpxsize8280\dpysize3060\dptxbx\dptxlrtb{\dptxbxtext\pard\plain \s2\qc \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 |
|
||||||
\b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\fs52\charscalex150 Reference manual |
|
||||||
\par }}\dpx90\dpy1800\dpxsize8100\dpysize1260\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat0\dplinehollow\dptxbx\dptxlrtb{\dptxbxtext\pard\plain |
|
||||||
\s3\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs40\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {CvCam |
|
||||||
\par }}\dpx0\dpy0\dpxsize8280\dpysize1980\dpfillfgcr255\dpfillfgcg255\dpfillfgcb255\dpfillbgcr255\dpfillbgcg255\dpfillbgcb255\dpfillpat0\dplinehollow\dpendgroup\dpx0\dpy0\dpxsize0\dpysize0}}}}{\page }{\f1\fs72 Contents}{\field\fldedit{\*\fldinst {\f1\fs72 |
|
||||||
TOC \\o "1-3" \\h \\z }}{\fldrslt {\lang1024\langfe1024\noproof |
|
||||||
\par }\pard\plain \s15\ql \li0\ri0\sb120\sa120\widctlpar\tqr\tldot\tx9345\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\caps\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{ |
|
||||||
\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241033"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300033003300000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Introduction}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst { |
|
||||||
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241033 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300033003300000000}}}{\fldrslt { |
|
||||||
\lang1024\langfe1024\noproof\webhidden 3}}}}}{\b0\caps0\lang1024\langfe1024\noproof |
|
||||||
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241034"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300033003400000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Common Usage}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst { |
|
||||||
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241034 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300033003400000000}}}{\fldrslt { |
|
||||||
\lang1024\langfe1024\noproof\webhidden 5}}}}}{\b0\caps0\lang1024\langfe1024\noproof |
|
||||||
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241035"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300033003500000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Howto:}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst { |
|
||||||
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241035 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300033003500000000}}}{\fldrslt { |
|
||||||
\lang1024\langfe1024\noproof\webhidden 8}}}}}{\b0\caps0\lang1024\langfe1024\noproof |
|
||||||
\par }\pard\plain \s16\ql \li240\ri0\widctlpar\tqr\tldot\tx9345\aspalpha\aspnum\faauto\adjustright\rin0\lin240\itap0 \scaps\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{ |
|
||||||
\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241036"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300033003600000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Begin work with cvcam}{\lang1024\langfe1024\noproof\webhidden \tab } |
|
||||||
{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241036 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300033003600000000}} |
|
||||||
}{\fldrslt {\lang1024\langfe1024\noproof\webhidden 8}}}}}{\scaps0\lang1024\langfe1024\noproof |
|
||||||
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241037"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300033003700000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Select a camera}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst { |
|
||||||
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241037 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300033003700000000}}}{\fldrslt { |
|
||||||
\lang1024\langfe1024\noproof\webhidden 8}}}}}{\scaps0\lang1024\langfe1024\noproof |
|
||||||
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241038"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300033003800000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Set up camera(s)}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst { |
|
||||||
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241038 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300033003800000000}}}{\fldrslt { |
|
||||||
\lang1024\langfe1024\noproof\webhidden 8}}}}}{\scaps0\lang1024\langfe1024\noproof |
|
||||||
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241039"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300033003900000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Render the video stream}{\lang1024\langfe1024\noproof\webhidden \tab } |
|
||||||
{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241039 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300033003900000000}} |
|
||||||
}{\fldrslt {\lang1024\langfe1024\noproof\webhidden 9}}}}}{\scaps0\lang1024\langfe1024\noproof |
|
||||||
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241040"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003000000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Make the settings active}{\lang1024\langfe1024\noproof\webhidden \tab } |
|
||||||
{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241040 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003000000000}} |
|
||||||
}{\fldrslt {\lang1024\langfe1024\noproof\webhidden 9}}}}}{\scaps0\lang1024\langfe1024\noproof |
|
||||||
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241041"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003100000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Control the video}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst { |
|
||||||
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241041 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003100000000}}}{\fldrslt { |
|
||||||
\lang1024\langfe1024\noproof\webhidden 9}}}}}{\scaps0\lang1024\langfe1024\noproof |
|
||||||
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241042"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003200000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Display cameras property pages}{\lang1024\langfe1024\noproof\webhidden \tab } |
|
||||||
{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241042 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003200000000}} |
|
||||||
}{\fldrslt {\lang1024\langfe1024\noproof\webhidden 9}}}}}{\scaps0\lang1024\langfe1024\noproof |
|
||||||
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241043"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003300000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Process video frames}{\lang1024\langfe1024\noproof\webhidden \tab } |
|
||||||
{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241043 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003300000000}} |
|
||||||
}{\fldrslt {\lang1024\langfe1024\noproof\webhidden 9}}}}}{\scaps0\lang1024\langfe1024\noproof |
|
||||||
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241044"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003400000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Get the pointer to last frame}{\lang1024\langfe1024\noproof\webhidden \tab } |
|
||||||
{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241044 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003400000000}} |
|
||||||
}{\fldrslt {\lang1024\langfe1024\noproof\webhidden 10}}}}}{\scaps0\lang1024\langfe1024\noproof |
|
||||||
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241045"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003500000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Play an avi file and process it\rquote s frames if needed}{ |
|
||||||
\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241045 \\h }{\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003500000000}}}{\fldrslt {\lang1024\langfe1024\noproof\webhidden 10}}}}}{\scaps0\lang1024\langfe1024\noproof |
|
||||||
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241046"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003600000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Work with multiple cameras under linux}{\lang1024\langfe1024\noproof\webhidden \tab |
|
||||||
}{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241046 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003600000000}} |
|
||||||
}{\fldrslt {\lang1024\langfe1024\noproof\webhidden 11}}}}}{\scaps0\lang1024\langfe1024\noproof |
|
||||||
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241047"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003700000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Work with multiple cameras under Windows}{\lang1024\langfe1024\noproof\webhidden |
|
||||||
\tab }{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241047 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003700000000}} |
|
||||||
}{\fldrslt {\lang1024\langfe1024\noproof\webhidden 11}}}}}{\scaps0\lang1024\langfe1024\noproof |
|
||||||
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241048"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003800000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Finish working with cvcam}{\lang1024\langfe1024\noproof\webhidden \tab } |
|
||||||
{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241048 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003800000000}} |
|
||||||
}{\fldrslt {\lang1024\langfe1024\noproof\webhidden 11}}}}}{\scaps0\lang1024\langfe1024\noproof |
|
||||||
\par }\pard\plain \s15\ql \li0\ri0\sb120\sa120\widctlpar\tqr\tldot\tx9345\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \b\caps\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{ |
|
||||||
\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241049"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003900000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof Cvcam Reference}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst { |
|
||||||
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241049 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300034003900000000}}}{\fldrslt { |
|
||||||
\lang1024\langfe1024\noproof\webhidden 12}}}}}{\b0\caps0\lang1024\langfe1024\noproof |
|
||||||
\par }\pard\plain \s16\ql \li240\ri0\widctlpar\tqr\tldot\tx9345\aspalpha\aspnum\faauto\adjustright\rin0\lin240\itap0 \scaps\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{ |
|
||||||
\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241050"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003000000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof cvcam API}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst { |
|
||||||
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241050 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003000000000}}}{\fldrslt { |
|
||||||
\lang1024\langfe1024\noproof\webhidden 12}}}}}{\scaps0\lang1024\langfe1024\noproof |
|
||||||
\par }\pard\plain \s17\ql \li480\ri0\widctlpar\tqr\tldot\tx9345\aspalpha\aspnum\faauto\adjustright\rin0\lin480\itap0 \i\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{ |
|
||||||
\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241051"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003100000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof cvcamExit}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst { |
|
||||||
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241051 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003100000000}}}{\fldrslt { |
|
||||||
\lang1024\langfe1024\noproof\webhidden 12}}}}}{\i0\lang1024\langfe1024\noproof |
|
||||||
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241052"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003200000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof cvcamGetCamerasCount}{\lang1024\langfe1024\noproof\webhidden \tab } |
|
||||||
{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241052 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003200000000}} |
|
||||||
}{\fldrslt {\lang1024\langfe1024\noproof\webhidden 12}}}}}{\i0\lang1024\langfe1024\noproof |
|
||||||
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241053"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003300000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof cvcamGetProperty}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst { |
|
||||||
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241053 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003300000000}}}{\fldrslt { |
|
||||||
\lang1024\langfe1024\noproof\webhidden 12}}}}}{\i0\lang1024\langfe1024\noproof |
|
||||||
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241054"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003400000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof cvcamInit}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst { |
|
||||||
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241054 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003400000000}}}{\fldrslt { |
|
||||||
\lang1024\langfe1024\noproof\webhidden 13}}}}}{\i0\lang1024\langfe1024\noproof |
|
||||||
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241055"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003500000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof cvcamPause}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst { |
|
||||||
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241055 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003500000000}}}{\fldrslt { |
|
||||||
\lang1024\langfe1024\noproof\webhidden 13}}}}}{\i0\lang1024\langfe1024\noproof |
|
||||||
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241056"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003600000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof cvcamPlayAVI}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst { |
|
||||||
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241056 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003600000000}}}{\fldrslt { |
|
||||||
\lang1024\langfe1024\noproof\webhidden 14}}}}}{\i0\lang1024\langfe1024\noproof |
|
||||||
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241057"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003700000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof cvcamResume}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst { |
|
||||||
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241057 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003700000000}}}{\fldrslt { |
|
||||||
\lang1024\langfe1024\noproof\webhidden 15}}}}}{\i0\lang1024\langfe1024\noproof |
|
||||||
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241058"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003800000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof cvcamSelectCamera}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst { |
|
||||||
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241058 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003800000000}}}{\fldrslt { |
|
||||||
\lang1024\langfe1024\noproof\webhidden 15}}}}}{\i0\lang1024\langfe1024\noproof |
|
||||||
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241059"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003900000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof cvcamSetProperty}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst { |
|
||||||
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241059 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300035003900000000}}}{\fldrslt { |
|
||||||
\lang1024\langfe1024\noproof\webhidden 16}}}}}{\i0\lang1024\langfe1024\noproof |
|
||||||
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241060"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300036003000000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof cvcamStart}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst { |
|
||||||
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241060 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300036003000000000}}}{\fldrslt { |
|
||||||
\lang1024\langfe1024\noproof\webhidden 16}}}}}{\i0\lang1024\langfe1024\noproof |
|
||||||
\par }{\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241061"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300036003100000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof cvcamStop}{\lang1024\langfe1024\noproof\webhidden \tab }{\field{\*\fldinst { |
|
||||||
\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241061 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300036003100000000}}}{\fldrslt { |
|
||||||
\lang1024\langfe1024\noproof\webhidden 16}}}}}{\i0\lang1024\langfe1024\noproof |
|
||||||
\par }\pard\plain \s16\ql \li240\ri0\widctlpar\tqr\tldot\tx9345\aspalpha\aspnum\faauto\adjustright\rin0\lin240\itap0 \scaps\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\field\fldedit{\*\fldinst {\cs24\ul\cf2\lang1024\langfe1024\noproof }{ |
|
||||||
\lang1024\langfe1024\noproof HYPERLINK \\l "_Toc517241062"}{\cs24\ul\cf2\lang1024\langfe1024\noproof }{\ul\cf2\lang1024\langfe1024\noproof {\*\datafield |
|
||||||
08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300036003200000000}}}{\fldrslt {\cs24\ul\cf2\lang1024\langfe1024\noproof cvcam Properties Interface}{\lang1024\langfe1024\noproof\webhidden \tab } |
|
||||||
{\field{\*\fldinst {\lang1024\langfe1024\noproof\webhidden PAGEREF _Toc517241062 \\h }{\lang1024\langfe1024\noproof {\*\datafield 08d0c9ea79f9bace118c8200aa004ba90b02000000080000000e0000005f0054006f006300350031003700320034003100300036003200000000}} |
|
||||||
}{\fldrslt {\lang1024\langfe1024\noproof\webhidden 17}}}}}{\scaps0\lang1024\langfe1024\noproof |
|
||||||
\par }\pard\plain \s1\ql \li0\ri0\sb360\sa60\keepn\pagebb\widctlpar\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \b\f1\fs52\lang1033\langfe1033\kerning32\cgrid\langnp1033\langfenp1033 }}\pard\plain |
|
||||||
\s1\ql \li0\ri0\sb360\sa60\keepn\pagebb\widctlpar\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \b\f1\fs52\lang1033\langfe1033\kerning32\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241033}Introduction{\*\bkmkend _Toc517241033} |
|
||||||
|
|
||||||
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\tab |
|
||||||
CvCam is a universal cross-platform module for processing video stream from digital video cameras. It is implemented as a dynamic link library (DLL) for Windows and as a shared object library (so) for linux systems and provides a simple and convenient App |
|
||||||
lication Programming Interface (API) for reading and controlling video stream, processing its frames and rendering the results. CvCam is distributed as a part of Intel\rquote |
|
||||||
s OpenCV project under the same license and uses some functionality of the Open Source Computer Vision Library. |
|
||||||
\par }\pard\plain \s1\ql \li0\ri0\sb360\sa60\keepn\pagebb\widctlpar\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \b\f1\fs52\lang1033\langfe1033\kerning32\cgrid\langnp1033\langfenp1033 {\page {\*\bkmkstart _Toc517241034}Common Usage |
|
||||||
{\*\bkmkend _Toc517241034} |
|
||||||
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\tab |
|
||||||
The simplest way to use CvCam from a C++ program for a single video source is shown at the following listing: |
|
||||||
\par |
|
||||||
\par |
|
||||||
\par }{\fs20 #include \'93cvcam.h\'94 |
|
||||||
\par void callback(IplImage* image); |
|
||||||
\par int main() |
|
||||||
\par \{ |
|
||||||
\par \tab int ncams = cvcamGetCamerascount( );//returns the number of available cameras in the |
|
||||||
\par \tab \tab \tab \tab \tab \tab //system |
|
||||||
\par \tab cvcamSetProperty(0, CVCAM_PROP_ENABLE, &cvcamone); //Selects the 1-st found |
|
||||||
\par \tab \tab \tab \tab \tab \tab \tab \tab \tab //camera |
|
||||||
\par \tab cvcamSetProperty(0, CVCAM_PROP_RENDER, &cvcamone) //We\rquote ll render stream |
|
||||||
\par \tab \tab \tab \tab \tab \tab \tab \tab \tab //from this source |
|
||||||
\par \tab //here I assume your create a window and store it\rquote s id in MyWin variable. |
|
||||||
\par \tab //MyWin is of type HWND on Windows and Window on linux |
|
||||||
\par |
|
||||||
\par \tab cvcamSetProperty(0, CVCAM_PROP_WINDOW, &MyWin); // Selects a window for |
|
||||||
\par \tab \tab \tab \tab \tab \tab \tab \tab //video rendering |
|
||||||
\par \tab cvcamSetProperty(0, CVCAM_PROP_CALLBACK, callback);//this callback will |
|
||||||
\par \tab \tab \tab \tab \tab \tab \tab \tab //process every frame |
|
||||||
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20 cvcamInit( ); |
|
||||||
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20 \tab cvcamStart( ); |
|
||||||
\par \tab //Your app is working |
|
||||||
\par \tab cvcamStop( ); |
|
||||||
\par \tab cvcamExit( ); |
|
||||||
\par \tab return 0; |
|
||||||
\par \} |
|
||||||
\par void callback(IplImage* image)//Draws blue horizontal lines across the image |
|
||||||
\par \{ |
|
||||||
\par IplImage* image1 = image; |
|
||||||
\par int i,j; |
|
||||||
\par |
|
||||||
\par assert (image); |
|
||||||
\par |
|
||||||
\par for(i=0; i<image1->height; i+=10) |
|
||||||
\par \{ |
|
||||||
\par for(j=(image1->widthStep)*i; j<(image1->widthStep)*(i+1); |
|
||||||
\par j+=image1->nChannels) |
|
||||||
\par \{ |
|
||||||
\par image1->imageData[j] = (char)255; |
|
||||||
\par image1->imageData[j+1] = 0; |
|
||||||
\par image1->imageData[j+2] = 0; |
|
||||||
\par |
|
||||||
\par |
|
||||||
\par \} |
|
||||||
\par |
|
||||||
\par \} |
|
||||||
\par |
|
||||||
\par \} |
|
||||||
\par |
|
||||||
\par \tab }{The first function to be called is }{\fs20 cvcamGetCamerasCount( );}{ It prepares library and returns the number of available cameras at the system. On Linux it\rquote |
|
||||||
s also important to call it before your initialize the X window system as it prepares X to work with linux threads. Your can also call }{\fs20 XInitThreads( )}{ at the beginning of your app instead. |
|
||||||
\par |
|
||||||
\par \tab The next step is to choose a camera and set it up. }{\fs20 cvcamSetProperty( int camera, char* property, void* arg)}{ can do this for you. See}{\b CvCam Properties Interface }{for complete list of properties and arguments. The first argument for |
|
||||||
this function is the number of the camera for which the property is set, the second is a property\rquote |
|
||||||
s name and the third is a pointer to some data, which actual type depends on the property. In the example above we selected a camera and told CvCam to render it into the window we specified. |
|
||||||
\par |
|
||||||
\par \tab The third optional step is frame processing with a callback. You can provide a function, which will be called on every frame and can change it\rquote s data. It should be of type void and takes a pointer to a IplImage structure, declared in \'93ipl.h |
|
||||||
\'94 header file. This is done by }{\fs20 CVCAM_PROP_CALLBACK}{ property and the third argument to }{\fs20 cvcamSetProperty}{ is a pointer to your callback function; |
|
||||||
\par |
|
||||||
\par \tab Next step is calling }{\fs20 cvcamInit( ),}{ after which everything is ready for streaming; |
|
||||||
\par |
|
||||||
\par \tab }{\fs20 cvcamStart( )}{ just starts the stream. It won\rquote t block your app and returns immediately. The stream continues until }{\fs20 cvcamStop( )}{ is called. |
|
||||||
\par |
|
||||||
\par \tab And the last is }{\fs20 cvcamExit( )}{ \endash Frees all resources used by CvCam.}{\fs20 |
|
||||||
\par }\pard\plain \s1\ql \li0\ri0\sb360\sa60\keepn\pagebb\widctlpar\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \b\f1\fs52\lang1033\langfe1033\kerning32\cgrid\langnp1033\langfenp1033 {\page {\*\bkmkstart _Toc517241035}Howto: |
|
||||||
{\*\bkmkend _Toc517241035} |
|
||||||
\par }\pard\plain \s2\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241036}Begin work with cvcam{\*\bkmkend _Toc517241036} |
|
||||||
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\tab Call }{\fs20 cvcamGetCamerasCount()}{ |
|
||||||
. This not only returns the number of cameras in the system, but also prepares cvcam. Under linux be sure to do this call before initializing X, or to call }{\fs20 XInitThreads()}{ before it. |
|
||||||
\par }\pard\plain \s2\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241037}Select a camera{\*\bkmkend _Toc517241037} |
|
||||||
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\tab You can select single or multiple cameras in 2 ways. The first is using a camera selection dialog with }{ |
|
||||||
\fs20 cvcamSelectCamera}{. See an example below: |
|
||||||
\par |
|
||||||
\par }{\cf11 //Prototype |
|
||||||
\par }\pard \ql \li0\ri0\widctlpar\faauto\rin0\lin0\itap0 {\fs20\cf11 /*Pops up a camera(s) selection dialog |
|
||||||
\par Return value - number of cameras selected (0,1 or 2); |
|
||||||
\par Argument: an array of selected cameras numbers |
|
||||||
\par NULL if none selected. Should be released with free() when not needed. |
|
||||||
\par if NULL passed, not used. |
|
||||||
\par */ |
|
||||||
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20\cf17 CVCAM_API}{\fs20\cf1 }{\fs20\cf2 int}{\fs20\cf1 }{\fs20\cf18 cvcamSelectCamera}{\fs20\cf1 (}{\fs20\cf2 int}{\fs20\cf1 ** }{\fs20\cf15 out}{\fs20\cf1 ); |
|
||||||
\par |
|
||||||
\par FunctionThatSelectsCamera() |
|
||||||
\par \{ |
|
||||||
\par \tab int* out; |
|
||||||
\par \tab int nselected = cvcamSelectCamera(&out); |
|
||||||
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20\cf1 if(nselected>0) |
|
||||||
\par \tab {\*\bkmkstart OLE_LINK1}printf(\'93the 1-st selected camera is camera number %d\'94, out[0]);{\*\bkmkend OLE_LINK1} |
|
||||||
\par if(nselected == 2) |
|
||||||
\par \tab printf(\'93the 2-nd selected camera is camera number %d\'94, out[1]); |
|
||||||
\par |
|
||||||
\par free(out); |
|
||||||
\par return; |
|
||||||
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20\cf1 |
|
||||||
\par |
|
||||||
\par \} |
|
||||||
\par |
|
||||||
\par }{\cf1 Note: if you don\rquote t need selected cameras numbers, simply call }{\fs20\cf18 cvcamSelectCamera(NULL)}{\cf18 |
|
||||||
\par Note2: Linux version of cvcam currently has no implementation of }{\fs20\cf18 cvcamSelectCamera}{\cf18 . |
|
||||||
\par }{\fs20\cf18 |
|
||||||
\par }{\cf18 The second, non-dialog way is to use CVCAM_PROP_ENABLE property like this: |
|
||||||
\par }{\fs20\cf18 int desiredcamera = 0;//for example |
|
||||||
\par cvcamSetProperty(desiredcamera, CVCAM_PROP_ENABLE,CVCAMTRUE); |
|
||||||
\par |
|
||||||
\par }\pard\plain \s2\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241038}Set up camera(s){\*\bkmkend _Toc517241038} |
|
||||||
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { |
|
||||||
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {See }{\b CvCam Properties Interface.}{\b\fs20 |
|
||||||
\par |
|
||||||
\par }\pard\plain \s2\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241039}Render the video stream{\*\bkmkend _Toc517241039} |
|
||||||
|
|
||||||
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\tab 1. Tell cvcam to render your camera: |
|
||||||
\par \tab \tab }{\fs20 cvcamSetProperty(YourCamera, CVCAM_PROP_RENDER, CVCAMTRUE) |
|
||||||
\par }{\tab 2. Select the window |
|
||||||
\par }\pard \ql \fi720\li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {\fs20 cvcamWindow mywin = \'85;//here I mean your initialize mywin with some |
|
||||||
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20 \tab \tab \tab \tab \tab // existing window id/ |
|
||||||
\par }\pard \ql \fi720\li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {\fs20 cvcamSetProperty(YourCamera, CVCAM_PROP_WINDOW, &mywin);}{ |
|
||||||
\par |
|
||||||
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {3.Set output width and height of the video. |
|
||||||
\par }\pard \ql \fi720\li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {\fs20 int width = 320; |
|
||||||
\par int height = 240; |
|
||||||
\par cvcamSetProperty(YourCamera, CVCAM_PROP_RNDWIDTH, &width); |
|
||||||
\par cvcamSetProperty(YourCamera, CVCAM_PROP_RNDHEIGHT, &height);}{ |
|
||||||
\par |
|
||||||
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {Note: if your pass NULL as a window, or don\rquote t set it, it\rquote ll be created under Windows systems |
|
||||||
\par Note 2: If you don\rquote t set width and height those of the source are used. |
|
||||||
\par Note 3 : cvcamWindow has type HWND under Windows and type Window under linux. |
|
||||||
\par }\pard\plain \s2\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241040}Make the settings active{\*\bkmkend _Toc517241040} |
|
||||||
|
|
||||||
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\tab Call }{\fs20 cvcamInit();}{ |
|
||||||
\par }\pard\plain \s2\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241041}Control the video{\*\bkmkend _Toc517241041} |
|
||||||
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\tab Call }{\fs20 cvcamStart(); |
|
||||||
\par \tab cvcamStop(); |
|
||||||
\par \tab cvcamPause(); |
|
||||||
\par \tab cvcamResume();}{ |
|
||||||
\par \tab They take no arguments and return 0 on success. |
|
||||||
\par }\pard\plain \s2\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241042}Display cameras property pages{\*\bkmkend _Toc517241042 |
|
||||||
} |
|
||||||
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {To display the property page for camera YourCamera call |
|
||||||
\par }{\fs20\cf18 cvcamGetProperty}{\fs20\cf1 (}{\fs20 YourCamera}{\fs20\cf1 , }{\fs20\cf15 CVCAM_CAMERAPROPS}{\fs20\cf1 , }{\fs20\cf17 NULL}{\fs20\cf1 ); |
|
||||||
\par |
|
||||||
\par }{\cf1 To display the video format property page for the same camera call |
|
||||||
\par }{\fs20\cf18 cvcamGetProperty}{\fs20\cf1 (}{\fs20 YourCamera}{\fs20\cf1 , }{\fs20\cf15 CVCAM_VIDEOFORMAT}{\fs20\cf1 , }{\fs20\cf17 NULL}{\fs20\cf1 );}{ |
|
||||||
\par |
|
||||||
\par Note: a camera may have no one or both property pages under Windows and the content of the pages depends on the particular driver. |
|
||||||
\par Note2: Property pages are displayed only for enabled camera(s) and after a call to }{\fs20 cvcamInit()}{ under Windows. |
|
||||||
\par }\pard\plain \s2\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241043}Process video frames{\*\bkmkend _Toc517241043} |
|
||||||
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {You can set your own callback function, which will process every captured frame and change it\rquote |
|
||||||
s data. It can be done with }{\fs20\cf15 CVCAM_PROP_CALLBACK }{\fs20 property. |
|
||||||
\par void callback(IplImage* image) |
|
||||||
\par \{ |
|
||||||
\par \tab //Do everything you want with the image |
|
||||||
\par \} |
|
||||||
\par cvcamSetProperty(0, }{\fs20\cf15 CVCAM_PROP_CALLBACK}{\fs20 , callback) |
|
||||||
\par |
|
||||||
\par }{Note:under linux callback currently is called on every frame being rendered or got with \'93raw_image\'94 property. |
|
||||||
\par Under windows \endash on every frame captured. |
|
||||||
\par }\pard\plain \s2\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241044}Get the pointer to last frame{\*\bkmkend _Toc517241044} |
|
||||||
|
|
||||||
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {//Example for camera 0 |
|
||||||
\par \tab }{\fs20 IplImage* image; |
|
||||||
\par \tab CvcamPause(); |
|
||||||
\par \tab cvcamGetProperty(0,\'94raw_image\'94,&image) |
|
||||||
\par \tab //Do what you want with the image |
|
||||||
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20 cvcamResume();}{ |
|
||||||
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 { |
|
||||||
\par Note: you don\rquote t need to free the data pointed to by image. |
|
||||||
\par Note2: You should use }{\fs20 cvcamPause}{ and }{\fs20 cvcamResume}{ to prevent changes of the data. |
|
||||||
\par Note3. This isn\rquote t currently implemented under Windows |
|
||||||
\par }\pard\plain \s2\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241045}Play an avi file and process it\rquote |
|
||||||
s frames if needed{\*\bkmkend _Toc517241045} |
|
||||||
\par }\pard\plain \ql \li0\ri0\widctlpar\faauto\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\tab Use cvcamPlayAVI(\tab }{\fs20 const}{ }{\fs20 char* file, |
|
||||||
\par \tab \tab \tab void* window, |
|
||||||
\par \tab \tab \tab int width, |
|
||||||
\par \tab \tab \tab int height, |
|
||||||
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20 \tab \tab \tab void* callback) |
|
||||||
\par |
|
||||||
\par }{The default call }{\fs20 cvcamPlayAVI(0,0,0,0,0)}{ opens an \'93open file\'94 dialog and if a file was chosen creates a video window and plays the fil |
|
||||||
e into it without any procession. If an existing file name is passed as a first argument this file is played. The second argument is a window id to play video into it (HWND or Window depending on platform) |
|
||||||
\par Width and Height specify the size of the output video window. If 0 passed, those that are set in the file are used. Callback is quiet as for processing video from camera \endash void callback(IplImage* image). |
|
||||||
\par |
|
||||||
\par }{\i Example(C++ for Windows ): |
|
||||||
\par |
|
||||||
\par \tab }{\fs20 extern "C" |
|
||||||
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20 \{ |
|
||||||
\par }\pard \ql \fi720\li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {\fs20 #include "highgui.h" |
|
||||||
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20 \} |
|
||||||
\par int main() |
|
||||||
\par \{ |
|
||||||
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20 \tab \tab char* filename = \'93C:\\cartoon.avi\'94; |
|
||||||
\par \tab \tab |
|
||||||
\par \tab \tab named_window("cvcam window", 0); |
|
||||||
\par HWND mywin = get_hwnd_byname("cvcam window"); |
|
||||||
\par \tab \tab cvcamPlayAVI( filename, mywin, 320, 240, mycallback); |
|
||||||
\par \tab \tab return 0; |
|
||||||
\par \tab \} |
|
||||||
\par \tab |
|
||||||
\par \tab void mycallback(IplImage* img) //Paints top half of image black |
|
||||||
\par \tab \{ |
|
||||||
\par \tab \tab memset(img->imageData, 0, img->imageSize/2); |
|
||||||
\par |
|
||||||
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20 \} |
|
||||||
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20 \tab |
|
||||||
\par }{ |
|
||||||
\par Note: This function blocks the calling thread until the file finishes playing. |
|
||||||
\par Note: this function isn\rquote t implemented under Linux yet}{\fs20 .}{ |
|
||||||
\par }\pard\plain \s2\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241046}Work with multiple cameras under linux |
|
||||||
{\*\bkmkend _Toc517241046} |
|
||||||
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { |
|
||||||
Selecting multiple cameras under linux with setting CVCAM_PROP_ENABLE property will make them all to work independently |
|
||||||
\par |
|
||||||
\par }\pard\plain \s2\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241047}Work with multiple cameras under Windows |
|
||||||
{\*\bkmkend _Toc517241047} |
|
||||||
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Enab |
|
||||||
ling two cameras under Windows results in activating cvSyncFilter, which synchronizes the streams and enables setting stereo callback for 2 synchronous frames. Set it as below: |
|
||||||
\par }{\fs20 |
|
||||||
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20 void stereocallback(IplImage* image1, IplImage* image2); |
|
||||||
\par cvcamSetProperty(0, CVCAM_STEREO_CALLBACK , stereocallback); |
|
||||||
\par |
|
||||||
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20 Note: single callbacks for each camera are not active in this mode currently; |
|
||||||
\par }\pard\plain \s2\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241048}Finish working with cvcam{\*\bkmkend _Toc517241048} |
|
||||||
|
|
||||||
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Call cvcamExit(); |
|
||||||
\par |
|
||||||
\par }\pard\plain \s1\ql \li0\ri0\sb360\sa60\keepn\pagebb\widctlpar\aspalpha\aspnum\faauto\outlinelevel0\adjustright\rin0\lin0\itap0 \b\f1\fs52\lang1033\langfe1033\kerning32\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241049}Cvcam Reference |
|
||||||
{\*\bkmkend _Toc517241049} |
|
||||||
\par }\pard\plain \s2\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241050}cvcam API{\*\bkmkend _Toc517241050} |
|
||||||
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { |
|
||||||
\par }\pard\plain \s3\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs40\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241051}cvcamExit{\*\bkmkend _Toc517241051} |
|
||||||
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { |
|
||||||
\par Declaration: |
|
||||||
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20 int cvcamExit(); |
|
||||||
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 { |
|
||||||
\par Parameters: |
|
||||||
\par \tab None. |
|
||||||
\par |
|
||||||
\par Return Value: |
|
||||||
\par \tab Always 0. |
|
||||||
\par |
|
||||||
\par Remarks: |
|
||||||
\par \tab Frees all resources, used by cvcam. |
|
||||||
\par }{\fs20\cf18 |
|
||||||
\par }\pard\plain \s3\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs40\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241052}cvcamGetCamerasCount{\*\bkmkend _Toc517241052} |
|
||||||
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { |
|
||||||
\par Declaration: |
|
||||||
\par \tab }{\fs20 int cvcamGetCamerasCount();}{ |
|
||||||
\par |
|
||||||
\par Parameters: |
|
||||||
\par \tab None. |
|
||||||
\par |
|
||||||
\par Return Value: |
|
||||||
\par \tab Number of found cameras. |
|
||||||
\par |
|
||||||
\par Remarks: |
|
||||||
\par \tab The first procedure to call in most every cvcam based program. Initializes the cvcam library. Under linux initializes X window system to work with multiple threads also. |
|
||||||
\par |
|
||||||
\par |
|
||||||
\par }{\fs20\cf1 |
|
||||||
\par }\pard\plain \s3\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs40\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241053}cvcamGetProperty{\*\bkmkend _Toc517241053} |
|
||||||
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { |
|
||||||
\par |
|
||||||
\par Declaration: |
|
||||||
\par }{\fs20 cvcamGetProperty(int camera, const char* property, void* value); |
|
||||||
\par }{ |
|
||||||
\par |
|
||||||
\par Parameters: |
|
||||||
\par }\pard \ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {int }{\b camera}{ (in) \endash a number of the camera in 0-based index of cameras found in the\tab \tab \tab system. |
|
||||||
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 { |
|
||||||
\par }\pard \ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {const char* }{\b property}{ (in) \endash a name of the property (See cvcam Properties Interface for\tab \tab \tab details). |
|
||||||
\par |
|
||||||
\par void* }{\b value}{ (out) \endash depends on the property\rquote s name. (See cvcam Properties Interface for\tab \tab details). |
|
||||||
\par |
|
||||||
\par |
|
||||||
\par |
|
||||||
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 { |
|
||||||
\par |
|
||||||
\par |
|
||||||
\par Return Value: |
|
||||||
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {0 on success, negative error code for error. |
|
||||||
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 { |
|
||||||
\par Remarks: |
|
||||||
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {If successful, }{\b value}{ will contain the value of the specified }{\b property }{for the specified\tab }{\b camera}{. (See cvcam Properties Interface for details). |
|
||||||
|
|
||||||
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 { |
|
||||||
\par }\pard\plain \s3\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs40\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { |
|
||||||
\par {\*\bkmkstart _Toc517241054}cvcamInit{\*\bkmkend _Toc517241054} |
|
||||||
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { |
|
||||||
\par |
|
||||||
\par Declaration: |
|
||||||
\par \tab }{\fs20 int cvcamInit();}{ |
|
||||||
\par |
|
||||||
\par Parameters: |
|
||||||
\par \tab None. |
|
||||||
\par |
|
||||||
\par Return Value: |
|
||||||
\par \tab 1 on success, 0 on error. |
|
||||||
\par |
|
||||||
\par Remarks: |
|
||||||
\par }\pard \ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {This function makes the settings, set by cvcamSetProperty active and does the final step of cvcam initialization. Don\rquote t be confused \endash it\rquote |
|
||||||
s not the first function, you call. It assumes that cvcamGetCamerasCount has already been called and usually that some properties have been set. |
|
||||||
\par }\pard\plain \s3\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs40\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { |
|
||||||
\par }{\cf1 {\*\bkmkstart _Toc517241055}cvcamPause{\*\bkmkend _Toc517241055} |
|
||||||
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { |
|
||||||
\par Declaration: |
|
||||||
\par \tab }{\fs20 int cvcamPause();}{ |
|
||||||
\par |
|
||||||
\par Parameters: |
|
||||||
\par \tab None. |
|
||||||
\par |
|
||||||
\par Return Value: |
|
||||||
\par \tab Always 0. |
|
||||||
\par |
|
||||||
\par Remarks: |
|
||||||
\par \tab Just pauses the video stream if it is running. |
|
||||||
\par |
|
||||||
\par }\pard\plain \s3\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs40\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241056}cvcamPlayAVI{\*\bkmkend _Toc517241056} |
|
||||||
\par |
|
||||||
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Declaration: |
|
||||||
\par }\pard \ql \fi720\li0\ri0\widctlpar\faauto\rin0\lin0\itap0 {\fs20 int cvcamPlayAVI(const char* file, |
|
||||||
\par }\pard \ql \li0\ri0\widctlpar\faauto\rin0\lin0\itap0 {\fs20 \tab \tab void* window, |
|
||||||
\par \tab \tab int width, |
|
||||||
\par \tab \tab int height, |
|
||||||
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20 \tab \tab void* callback)}{ |
|
||||||
\par |
|
||||||
\par Parameters: |
|
||||||
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {const char* }{\b file}{ (in) \endash the name of an existing file on disk or NULL . |
|
||||||
\par }\pard \ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 { |
|
||||||
\par void* }{\b window}{ (in) \endash an existing HWND (Windows systems) or Window(Linux systems) or NULL. |
|
||||||
\par |
|
||||||
\par int }{\b width}{ (in) \endash width of the displayed video; |
|
||||||
\par |
|
||||||
\par int }{\b height}{ (in) \endash height of the displayed video; |
|
||||||
\par |
|
||||||
\par void* }{\b callback }{(in) \endash a pointer to a callback function }{\fs20 void callback(IplImage* img), }{which\tab \tab will process every frame before displaying it.}{\fs20 |
|
||||||
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 { |
|
||||||
\par Return Value: |
|
||||||
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 { 0 on success, -1 on eror. |
|
||||||
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 { |
|
||||||
\par Remarks: |
|
||||||
\par \tab Plays the }{\b file }{of type .avi into a specified }{\b window}{. The output video size is set to |
|
||||||
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\b width }{x }{\b height. }{Every frame is processed with a }{\b callback }{before displaying. |
|
||||||
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\tab |
|
||||||
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {If the }{\b file }{parameter}{\b }{is NULL, the \'93file open\'94 dialog is displayed. |
|
||||||
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\tab |
|
||||||
\par \tab If the }{\b window }{is NULL it\rquote ll be created. |
|
||||||
\par |
|
||||||
\par \tab If }{\b width}{ or }{\b height}{ is 0, it is set to the size specified inside the avi file being played. |
|
||||||
\par |
|
||||||
\par \tab If }{\b callback}{ is NULL the frames won\rquote t be processed, just displayed as is. |
|
||||||
\par \tab You can also define your callback function }{\fs20 void callback(IplImage* }{\b\fs20 img}{\fs20 ) }{and pass a pointer to \tab it as a }{\b callback }{parameter. It will be called before displaying each frame with the }{\b img \tab }{ |
|
||||||
parameter containing the data of frame going to be displayed. IplImage structure is \tab declared in \'93ipl.h\'94, which is included from \'93cv.h\'94 as follows: |
|
||||||
\par |
|
||||||
\par }\pard \ql \li1440\ri0\widctlpar\faauto\rin0\lin1440\itap0 {\fs20 typedef struct _IplImage \{ |
|
||||||
\par int nSize; /* size of iplImage struct */ |
|
||||||
\par int ID; /* version */ |
|
||||||
\par int nChannels; |
|
||||||
\par int alphaChannel; |
|
||||||
\par int depth; /* pixel depth in bits */ |
|
||||||
\par char colorModel[4]; |
|
||||||
\par char channelSeq[4]; |
|
||||||
\par int dataOrder; |
|
||||||
\par int origin; |
|
||||||
\par int align; /* 4 or 8 byte align */ |
|
||||||
\par int width; |
|
||||||
\par int height; |
|
||||||
\par struct _IplROI *roi; |
|
||||||
\par struct _IplImage |
|
||||||
\par *maskROI; /* poiner to maskROI if any */ |
|
||||||
\par void *imageId; /* use of the application */ |
|
||||||
\par struct |
|
||||||
\par _IplTileInfo *tileInfo; /* contains information on tiling */ |
|
||||||
\par int imageSize; /* useful size in bytes */ |
|
||||||
\par char *imageData; /* pointer to aligned image */ |
|
||||||
\par int widthStep; /* size of aligned line in bytes */ |
|
||||||
\par int BorderMode[4]; /* */ |
|
||||||
\par int BorderConst[4]; /* */ |
|
||||||
\par char *imageDataOrigin; /* ptr to full, nonaligned image */ |
|
||||||
\par }\pard \ql \fi720\li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {\fs20 \} IplImage; |
|
||||||
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\fs20 |
|
||||||
\par \tab }{This function blocks the calling thread until the file finishes or error occurs and then \tab returns. |
|
||||||
\par }\pard \ql \fi720\li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 { |
|
||||||
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {\tab |
|
||||||
\par |
|
||||||
\par }\pard\plain \s3\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs40\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\cf1 {\*\bkmkstart _Toc517241057}cvcamResume{\*\bkmkend _Toc517241057} |
|
||||||
\par }{ |
|
||||||
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Declaration: |
|
||||||
\par \tab }{\fs20 int cvcamResume();}{ |
|
||||||
\par |
|
||||||
\par Parameters: |
|
||||||
\par \tab None. |
|
||||||
\par |
|
||||||
\par Return Value: |
|
||||||
\par \tab Always 0. |
|
||||||
\par |
|
||||||
\par Remarks: |
|
||||||
\par \tab Resumes the video if it is paused. |
|
||||||
\par |
|
||||||
\par }\pard\plain \s3\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs40\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241058}cvcamSelectCamera{\*\bkmkend _Toc517241058} |
|
||||||
\par |
|
||||||
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Declaration: |
|
||||||
\par \tab }{\fs20 int cvcamSelectCamera(int** }{\b\fs20 out}{\fs20 );}{ |
|
||||||
\par |
|
||||||
\par Parameters: |
|
||||||
\par \tab int** }{\b out}{ (out) \endash an address of a pointer to int or NULL |
|
||||||
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {If not NULL will contain an array of selected cameras indexes. |
|
||||||
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 { |
|
||||||
\par Return Value: |
|
||||||
\par \tab The number of selected cameras \endash 0, 1 or 2. |
|
||||||
\par |
|
||||||
\par Remarks: |
|
||||||
\par }\pard \ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {This function pops up a dialog box, which suggests to select one or 2 cameras to work with. If }{\b out }{is}{\b }{not NULL, and user has selected some |
|
||||||
camera(s), the array of their indexes is placed into *}{\b out}{. Use }{\fs20 free()}{ to release this array after you don\rquote t need it more. |
|
||||||
\par }\pard\plain \s3\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs40\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { |
|
||||||
\par {\*\bkmkstart _Toc517241059}cvcamSetProperty{\*\bkmkend _Toc517241059} |
|
||||||
\par }{\cf15 |
|
||||||
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Declaration: |
|
||||||
\par \tab }{\fs20 int cvcamSetProperty(int camera, const char* property, void* value);}{ |
|
||||||
\par |
|
||||||
\par Parameters: |
|
||||||
\par }\pard \ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {int }{\b camera}{ (in) \endash a number of the camera in 0-based index of cameras found in the\tab \tab \tab system. |
|
||||||
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 { |
|
||||||
\par }\pard \ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {const char* }{\b property}{ (in) \endash a name of the property (See cvcam Properties Interface for\tab \tab \tab details). |
|
||||||
\par }\pard\plain \s18\ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { |
|
||||||
\par }\pard\plain \ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {void* }{\b value}{ (in) \endash depends on the property\rquote s name. (See cvcam Properties Interface for |
|
||||||
\tab \tab details). |
|
||||||
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 { |
|
||||||
\par Return Value: |
|
||||||
\par \tab 0 on success, negative error code for error. |
|
||||||
\par |
|
||||||
\par Remarks: |
|
||||||
\par }\pard \ql \li720\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin720\itap0 {Sets the value of the specified }{\b property}{ of the specified }{\b camera}{ to }{\b value}{. (See\tab cvcam Properties Interface for details). |
|
||||||
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 { |
|
||||||
\par |
|
||||||
\par }\pard\plain \s3\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs40\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241060}cvcamStart{\*\bkmkend _Toc517241060} |
|
||||||
\par |
|
||||||
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Declaration: |
|
||||||
\par \tab }{\fs20 int cvcamStart(); |
|
||||||
\par }{ |
|
||||||
\par |
|
||||||
\par Parameters: |
|
||||||
\par \tab None. |
|
||||||
\par |
|
||||||
\par Return Value: |
|
||||||
\par }\pard \ql \fi720\li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 {0 on success, -1 on failure. |
|
||||||
\par }\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 { |
|
||||||
\par Remarks: |
|
||||||
\par \tab Starts the video stream for all enabled cameras. |
|
||||||
\par }\pard\plain \s3\ql \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel2\adjustright\rin0\lin0\itap0 \b\fs40\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 { |
|
||||||
\par {\*\bkmkstart _Toc517241061}cvcamStop{\*\bkmkend _Toc517241061} |
|
||||||
\par }{\cf1 |
|
||||||
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {Declaration: |
|
||||||
\par \tab }{\fs20 int cvcamStop(); |
|
||||||
\par }{ |
|
||||||
\par Parameters: |
|
||||||
\par \tab None. |
|
||||||
\par |
|
||||||
\par Return Value: |
|
||||||
\par \tab Always 0. |
|
||||||
\par |
|
||||||
\par Remarks: |
|
||||||
\par \tab Stops the video stream. |
|
||||||
\par }\pard \ql \li0\ri0\widctlpar\faauto\rin0\lin0\itap0 {\fs20\cf1 |
|
||||||
\par |
|
||||||
\par }\pard\plain \s2\qc \li0\ri0\keepn\widctlpar\aspalpha\aspnum\faauto\outlinelevel1\adjustright\rin0\lin0\itap0 \b\f1\fs44\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {{\*\bkmkstart _Toc517241062}cvcam Properties Interface{\*\bkmkend _Toc517241062} |
|
||||||
|
|
||||||
\par }\pard\plain \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {There is a list of properties which can be set for each camera. There are 2 functions to work with them: |
|
||||||
\par \tab }{\fs20 cvcamGetProperty(int cameraindex, const char* property, void* value); |
|
||||||
\par \tab cvcamSetProperty(int cameraindex, const char* property, void* value); |
|
||||||
\par }{ |
|
||||||
\par The first argument is the number that identifies the camera, the second is the name of the property. The act |
|
||||||
ual type of the 3-rd argument depends on the property. Some of the properties can be set and got, some only set or only got. See the table below for detailes |
|
||||||
\par |
|
||||||
\par |
|
||||||
\par }\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt |
|
||||||
\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx2875\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963 |
|
||||||
\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 |
|
||||||
\cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 { |
|
||||||
Property name\cell Action\cell argument\cell Can be get/set\cell Platform |
|
||||||
\par Win/Lin\cell }\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv |
|
||||||
\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx2875\clvertalt\clbrdrt\brdrs\brdrw10 |
|
||||||
\clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt |
|
||||||
\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\row |
|
||||||
}\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt |
|
||||||
\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx2875\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963 |
|
||||||
\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 |
|
||||||
\cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 { |
|
||||||
\fs20\cf15 CVCAM_PROP_ENABLE}{\cell Selects/deselects the camera\cell CVCAMTRUE/ |
|
||||||
\par CVCAMFALSE |
|
||||||
\par For Set, pointer to int for Get\cell SG\cell WL\cell }\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 |
|
||||||
\trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx2875 |
|
||||||
\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 |
|
||||||
\cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr |
|
||||||
\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\row }\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\fs20\cf15 CVCAM_PROP_RENDER}{\cell Renders the cam\cell CVCAMTRUE/ |
|
||||||
\par CVCAMFALSE |
|
||||||
\par For Set, pointer to int for Get\cell SG\cell WL\cell }\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 |
|
||||||
\trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx2875 |
|
||||||
\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 |
|
||||||
\cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr |
|
||||||
\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\row }\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\fs20\cf15 CVCAM_PROP_WINDOW}{\cell Selects a window for rendering camera\rquote s stream\cell |
|
||||||
Pointer to HWND(Win) or pointer to Window(Lin)\cell SG\cell WL\cell }\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr |
|
||||||
\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 |
|
||||||
\cellx2875\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 |
|
||||||
\cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr |
|
||||||
\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\row }\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\fs20\cf15 CVCAM_PROP_CALLBACK}{\cell Sets a callback function which processes every frame\cell |
|
||||||
void (*callback)(IplImage* image)\cell S\cell WL\cell }\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr |
|
||||||
\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 |
|
||||||
\cellx2875\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 |
|
||||||
\cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr |
|
||||||
\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\row }\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\fs20\cf15 CVCAM_DESCRIPTION}{\cell Gets string name and some other info about the camera\cell A pointer to struct }{ |
|
||||||
\fs20 CameraDescription |
|
||||||
\par Under windows only DeviceDescription field is active}{\cell G\cell WL\cell }\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 |
|
||||||
\trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 |
|
||||||
\cltxlrtb\clftsWidth1 \cellx2875\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr |
|
||||||
\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb |
|
||||||
\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\row }\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\fs20\cf15 CVCAM_VIDEOFORMAT}{\cell Displays videoformat dialog box for the camera\cell NULL\cell |
|
||||||
G\cell WL\cell }\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv |
|
||||||
\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx2875\clvertalt\clbrdrt\brdrs\brdrw10 |
|
||||||
\clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt |
|
||||||
\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\row |
|
||||||
}\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\fs20\cf15 CVCAM_CAMERAPROPS}{\cell Displays camera properties dialog box for the camera\cell NULL\cell G\cell WL\cell }\pard |
|
||||||
\ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 |
|
||||||
\trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx2875\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl |
|
||||||
\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt |
|
||||||
\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\row |
|
||||||
}\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\fs20\cf15 CVCAM_RNDWIDTH}{\cell Sets the width of the output video\cell Pointer to int containing width\cell SG\cell WL\cell }\pard |
|
||||||
\ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 |
|
||||||
\trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx2875\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl |
|
||||||
\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt |
|
||||||
\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\row |
|
||||||
}\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\fs20\cf15 CVCAM_RNDHEIGHT}{\cell Sets the height of the output video\cell Pointer to int containing height\cell SG\cell WL\cell }\pard |
|
||||||
\ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 |
|
||||||
\trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx2875\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl |
|
||||||
\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt |
|
||||||
\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\row |
|
||||||
}\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\fs20\cf15 CVCAM_STEREO_CALLBACK\cell }{Sets the callback which will be called on every two synchronous frames from 2 cameras\cell |
|
||||||
Void (*callback)(IplImage* Image1, IplImage* image2)\cell S\cell W\cell }\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 |
|
||||||
\trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 |
|
||||||
\cltxlrtb\clftsWidth1 \cellx2875\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr |
|
||||||
\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb |
|
||||||
\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\row }\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\fs20\cf15 CVCAM_PROP_RAW\cell }{Gets the last frame\cell IplImage**\cell G\cell L\cell }\pard |
|
||||||
\ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 |
|
||||||
\trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx2875\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl |
|
||||||
\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt |
|
||||||
\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\row |
|
||||||
}\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 \trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt |
|
||||||
\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx2875\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963 |
|
||||||
\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 |
|
||||||
\cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 { |
|
||||||
\fs20\cf15 CVCAM_PROP_SETFORMAT\cell }{Sets video format in non-dialog way\cell A pointer to struct videoformat.For Set should be initialized with desired values\cell SG\cell L\cell }\pard |
|
||||||
\ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {\trowd \trgaph108\trleft-108\trbrdrt\brdrs\brdrw10 \trbrdrl\brdrs\brdrw10 \trbrdrb\brdrs\brdrw10 \trbrdrr\brdrs\brdrw10 \trbrdrh\brdrs\brdrw10 \trbrdrv\brdrs\brdrw10 |
|
||||||
\trftsWidth1\trautofit1\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx2875\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl |
|
||||||
\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx4963\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx7536\clvertalt\clbrdrt |
|
||||||
\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx8407\clvertalt\clbrdrt\brdrs\brdrw10 \clbrdrl\brdrs\brdrw10 \clbrdrb\brdrs\brdrw10 \clbrdrr\brdrs\brdrw10 \cltxlrtb\clftsWidth1 \cellx9463\row |
|
||||||
}\pard \ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 { |
|
||||||
\par }} |
|
@ -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 |
|
@ -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 |
|
@ -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'. |
|
@ -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 |
|
||||||
|
|
||||||
|
|
@ -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 |
|
Before Width: | Height: | Size: 78 KiB |
@ -1,206 +0,0 @@ |
|||||||
# -*- coding: utf-8 -*- |
|
||||||
# |
|
||||||
# opencv documentation build configuration file, created by |
|
||||||
# sphinx-quickstart on Thu Jun 4 21:06:43 2009. |
|
||||||
# |
|
||||||
# This file is execfile()d with the current directory set to its containing dir. |
|
||||||
# |
|
||||||
# Note that not all possible configuration values are present in this |
|
||||||
# autogenerated file. |
|
||||||
# |
|
||||||
# All configuration values have a default; values that are commented out |
|
||||||
# serve to show the default. |
|
||||||
|
|
||||||
import sys, os |
|
||||||
|
|
||||||
# If extensions (or modules to document with autodoc) are in another directory, |
|
||||||
# add these directories to sys.path here. If the directory is relative to the |
|
||||||
# documentation root, use os.path.abspath to make it absolute, like shown here. |
|
||||||
#sys.path.append(os.path.abspath('.')) |
|
||||||
|
|
||||||
# -- General configuration ----------------------------------------------------- |
|
||||||
|
|
||||||
# Add any Sphinx extension module names here, as strings. They can be extensions |
|
||||||
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. |
|
||||||
extensions = ['sphinx.ext.pngmath', 'sphinx.ext.doctest'] # , 'sphinx.ext.intersphinx'] |
|
||||||
doctest_test_doctest_blocks = 'block' |
|
||||||
|
|
||||||
# Add any paths that contain templates here, relative to this directory. |
|
||||||
templates_path = ['_templates'] |
|
||||||
|
|
||||||
# The suffix of source filenames. |
|
||||||
source_suffix = '.rst' |
|
||||||
|
|
||||||
# The encoding of source files. |
|
||||||
#source_encoding = 'utf-8' |
|
||||||
|
|
||||||
# The master toctree document. |
|
||||||
master_doc = 'index' |
|
||||||
|
|
||||||
# General information about the project. |
|
||||||
project = u'opencv' |
|
||||||
copyright = u'2010, authors' |
|
||||||
|
|
||||||
# The version info for the project you're documenting, acts as replacement for |
|
||||||
# |version| and |release|, also used in various other places throughout the |
|
||||||
# built documents. |
|
||||||
# |
|
||||||
# The short X.Y version. |
|
||||||
version = '2.2' |
|
||||||
# The full version, including alpha/beta/rc tags. |
|
||||||
release = '2.2' |
|
||||||
|
|
||||||
# The language for content autogenerated by Sphinx. Refer to documentation |
|
||||||
# for a list of supported languages. |
|
||||||
#language = None |
|
||||||
|
|
||||||
# There are two options for replacing |today|: either, you set today to some |
|
||||||
# non-false value, then it is used: |
|
||||||
#today = '' |
|
||||||
# Else, today_fmt is used as the format for a strftime call. |
|
||||||
#today_fmt = '%B %d, %Y' |
|
||||||
|
|
||||||
# List of documents that shouldn't be included in the build. |
|
||||||
#unused_docs = [] |
|
||||||
|
|
||||||
# List of directories, relative to source directory, that shouldn't be searched |
|
||||||
# for source files. |
|
||||||
exclude_trees = ['_build'] |
|
||||||
|
|
||||||
# The reST default role (used for this markup: `text`) to use for all documents. |
|
||||||
#default_role = None |
|
||||||
|
|
||||||
# If true, '()' will be appended to :func: etc. cross-reference text. |
|
||||||
#add_function_parentheses = True |
|
||||||
|
|
||||||
# If true, the current module name will be prepended to all description |
|
||||||
# unit titles (such as .. function::). |
|
||||||
#add_module_names = True |
|
||||||
|
|
||||||
# If true, sectionauthor and moduleauthor directives will be shown in the |
|
||||||
# output. They are ignored by default. |
|
||||||
#show_authors = False |
|
||||||
|
|
||||||
# The name of the Pygments (syntax highlighting) style to use. |
|
||||||
pygments_style = 'sphinx' |
|
||||||
|
|
||||||
# A list of ignored prefixes for module index sorting. |
|
||||||
#modindex_common_prefix = [] |
|
||||||
|
|
||||||
|
|
||||||
# -- Options for HTML output --------------------------------------------------- |
|
||||||
|
|
||||||
# The theme to use for HTML and HTML Help pages. Major themes that come with |
|
||||||
# Sphinx are currently 'default' and 'sphinxdoc'. |
|
||||||
html_theme = 'blue' |
|
||||||
|
|
||||||
# Theme options are theme-specific and customize the look and feel of a theme |
|
||||||
# further. For a list of options available for each theme, see the |
|
||||||
# documentation. |
|
||||||
html_theme_options = { |
|
||||||
"lang" : "%LANG%" # buildall substitutes this for c, cpp, py |
|
||||||
} |
|
||||||
|
|
||||||
# Add any paths that contain custom themes here, relative to this directory. |
|
||||||
html_theme_path = ['../_themes'] |
|
||||||
|
|
||||||
# The name for this set of Sphinx documents. If None, it defaults to |
|
||||||
# "<project> v<release> documentation". |
|
||||||
#html_title = None |
|
||||||
|
|
||||||
# A shorter title for the navigation bar. Default is the same as html_title. |
|
||||||
#html_short_title = None |
|
||||||
|
|
||||||
# The name of an image file (relative to this directory) to place at the top |
|
||||||
# of the sidebar. |
|
||||||
html_logo = '../opencv-logo2.png' |
|
||||||
|
|
||||||
# The name of an image file (within the static path) to use as favicon of the |
|
||||||
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 |
|
||||||
# pixels large. |
|
||||||
#html_favicon = None |
|
||||||
|
|
||||||
# Add any paths that contain custom static files (such as style sheets) here, |
|
||||||
# relative to this directory. They are copied after the builtin static files, |
|
||||||
# so a file named "default.css" will overwrite the builtin "default.css". |
|
||||||
html_static_path = ['../_static'] |
|
||||||
|
|
||||||
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, |
|
||||||
# using the given strftime format. |
|
||||||
#html_last_updated_fmt = '%b %d, %Y' |
|
||||||
|
|
||||||
# If true, SmartyPants will be used to convert quotes and dashes to |
|
||||||
# typographically correct entities. |
|
||||||
#html_use_smartypants = True |
|
||||||
|
|
||||||
# Custom sidebar templates, maps document names to template names. |
|
||||||
#html_sidebars = {} |
|
||||||
|
|
||||||
# Additional templates that should be rendered to pages, maps page names to |
|
||||||
# template names. |
|
||||||
#html_additional_pages = {} |
|
||||||
|
|
||||||
# If false, no module index is generated. |
|
||||||
#html_use_modindex = True |
|
||||||
|
|
||||||
# If false, no index is generated. |
|
||||||
#html_use_index = True |
|
||||||
|
|
||||||
# If true, the index is split into individual pages for each letter. |
|
||||||
#html_split_index = False |
|
||||||
|
|
||||||
# If true, links to the reST sources are added to the pages. |
|
||||||
#html_show_sourcelink = True |
|
||||||
|
|
||||||
# If true, an OpenSearch description file will be output, and all pages will |
|
||||||
# contain a <link> tag referring to it. The value of this option must be the |
|
||||||
# base URL from which the finished HTML is served. |
|
||||||
#html_use_opensearch = '' |
|
||||||
|
|
||||||
# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). |
|
||||||
#html_file_suffix = '' |
|
||||||
|
|
||||||
# Output file base name for HTML help builder. |
|
||||||
htmlhelp_basename = 'opencvdoc' |
|
||||||
|
|
||||||
|
|
||||||
# -- Options for LaTeX output -------------------------------------------------- |
|
||||||
|
|
||||||
# The paper size ('letter' or 'a4'). |
|
||||||
#latex_paper_size = 'letter' |
|
||||||
|
|
||||||
# The font size ('10pt', '11pt' or '12pt'). |
|
||||||
#latex_font_size = '10pt' |
|
||||||
|
|
||||||
# Grouping the document tree into LaTeX files. List of tuples |
|
||||||
# (source start file, target name, title, author, documentclass [howto/manual]). |
|
||||||
latex_documents = [ |
|
||||||
('index', 'opencv.tex', u'opencv Documentation', |
|
||||||
u'author', 'manual'), |
|
||||||
] |
|
||||||
|
|
||||||
# The name of an image file (relative to this directory) to place at the top of |
|
||||||
# the title page. |
|
||||||
#latex_logo = None |
|
||||||
|
|
||||||
# For "manual" documents, if this is true, then toplevel headings are parts, |
|
||||||
# not chapters. |
|
||||||
#latex_use_parts = False |
|
||||||
|
|
||||||
# Additional stuff for the LaTeX preamble. |
|
||||||
#latex_preamble = '' |
|
||||||
|
|
||||||
# Documents to append as an appendix to all manuals. |
|
||||||
#latex_appendices = [] |
|
||||||
|
|
||||||
# If false, no module index is generated. |
|
||||||
#latex_use_modindex = True |
|
||||||
|
|
||||||
pngmath_latex_preamble = '\usepackage{mymath}\usepackage{amsmath}\usepackage{bbm}\usepackage[usenames]{color}' |
|
||||||
|
|
||||||
# intersphinx_mapping = { |
|
||||||
# 'http://docs.python.org/': None, |
|
||||||
# } |
|
||||||
intersphinx_mapping = {} |
|
||||||
|
|
||||||
latex_elements = {'preamble': '\usepackage{mymath}\usepackage{amssymb}\usepackage{amsmath}\usepackage{bbm}'} |
|
@ -1,781 +0,0 @@ |
|||||||
import sys |
|
||||||
from latexparser import latexparser, TexCmd |
|
||||||
import distutils.dep_util |
|
||||||
import os |
|
||||||
import cPickle as pickle |
|
||||||
import pyparsing as pp |
|
||||||
import StringIO |
|
||||||
from qfile import QOpen |
|
||||||
from string import Template |
|
||||||
from random import random |
|
||||||
import urllib |
|
||||||
|
|
||||||
# useful things for pyparsing |
|
||||||
def returnList(x): |
|
||||||
def listify(s, loc, toks): |
|
||||||
return [toks] |
|
||||||
x.setParseAction(listify) |
|
||||||
return x |
|
||||||
def returnTuple(x): |
|
||||||
def listify(s, loc, toks): |
|
||||||
return [tuple(toks)] |
|
||||||
x.setParseAction(listify) |
|
||||||
return x |
|
||||||
def CommaList(word): |
|
||||||
return returnList(pp.Optional(word + pp.ZeroOrMore(pp.Suppress(',') + word))) |
|
||||||
def sl(s): |
|
||||||
return pp.Suppress(pp.Literal(s)) |
|
||||||
|
|
||||||
import pythonapi |
|
||||||
|
|
||||||
python_api = pythonapi.reader("../../modules/python/api") |
|
||||||
|
|
||||||
|
|
||||||
class SphinxWriter: |
|
||||||
def __init__(self, filename, language, abspath): |
|
||||||
assert language in ['py', 'c', 'cpp'] |
|
||||||
self.language = language |
|
||||||
|
|
||||||
self.abspath = abspath |
|
||||||
os.path.abspath(os.path.dirname(filename)) |
|
||||||
|
|
||||||
self.f_index = QOpen(os.path.join(self.language, filename), 'wt') |
|
||||||
self.f = self.f_index |
|
||||||
self.f_chapter = None |
|
||||||
self.f_section = None |
|
||||||
self.indent = 0 |
|
||||||
self.state = None |
|
||||||
self.envstack = [] |
|
||||||
self.tags = {} |
|
||||||
self.errors = open('errors.%s' % language, 'wt') |
|
||||||
self.unhandled_commands = set() |
|
||||||
self.freshline = True |
|
||||||
self.function_props = {} |
|
||||||
self.covered = set() # covered functions, used for error report |
|
||||||
self.description = "" |
|
||||||
self.cur_module = "" |
|
||||||
|
|
||||||
def write(self, s): |
|
||||||
self.freshline = len(s) > 0 and (s[-1] == '\n') |
|
||||||
self.f.write(s.replace('\n', '\n' + self.indent * " ")) |
|
||||||
|
|
||||||
def appendspace(self): |
|
||||||
""" append a space to the output - if we're not at the start of a line """ |
|
||||||
if not self.freshline: |
|
||||||
self.write(' ') |
|
||||||
|
|
||||||
def doplain(self, s): |
|
||||||
if (len(s) > 1) and (s[0] == '$' and s[-1] == '$') and self.state != 'math': |
|
||||||
s = ":math:`%s`" % s[1:-1].strip() |
|
||||||
elif self.state != 'math': |
|
||||||
s.replace('\\_', '_') |
|
||||||
if len(s) > 0 and s[-1] == '\n': |
|
||||||
s = s[:-1] |
|
||||||
if self.state == 'fpreamble': |
|
||||||
self.description += s |
|
||||||
else: |
|
||||||
self.write(s) |
|
||||||
|
|
||||||
def docmd(self, c): |
|
||||||
if self.state == 'math': |
|
||||||
if c.cmd != ']': |
|
||||||
self.default_cmd(c) |
|
||||||
else: |
|
||||||
self.indent -= 1 |
|
||||||
self.state = None |
|
||||||
self.write('\n\n') |
|
||||||
else: |
|
||||||
if c.cmd == '\n': |
|
||||||
self.write('\\\n') |
|
||||||
else: |
|
||||||
if c.cmd == '[': |
|
||||||
meth = self.cmd_gomath |
|
||||||
else: |
|
||||||
cname = "cmd_" + c.cmd |
|
||||||
meth = getattr(self, cname, self.unrecognized_cmd) |
|
||||||
meth(c) |
|
||||||
|
|
||||||
def cmd_gomath(self, c): |
|
||||||
self.state = 'math' |
|
||||||
print >>self, "\n\n.. math::" |
|
||||||
self.indent += 1 |
|
||||||
print >>self |
|
||||||
|
|
||||||
def cmd_chapter(self, c): |
|
||||||
filename = str(c.params[0]).lower().replace(' ', '_').replace('/','_').replace('.','_') |
|
||||||
self.f_index.write(" %s\n" % filename) |
|
||||||
self.f_chapter = QOpen(os.path.join(self.language, filename + '.rst'), 'wt') |
|
||||||
self.f_section = None |
|
||||||
self.f = self.f_chapter |
|
||||||
self.indent = 0 |
|
||||||
title = str(c.params[0]) |
|
||||||
print >>self, '*' * len(title) |
|
||||||
print >>self, title |
|
||||||
print >>self, '*' * len(title) |
|
||||||
print >>self |
|
||||||
self.chapter_intoc = False |
|
||||||
|
|
||||||
def cmd_section(self, c): |
|
||||||
filename = str(c.params[0]).lower().replace(' ', '_').replace('/','_') |
|
||||||
if len(self.cur_module) > 0: |
|
||||||
filename = self.cur_module + "_" + filename |
|
||||||
if not self.chapter_intoc: |
|
||||||
self.chapter_intoc = True |
|
||||||
print >>self.f_chapter |
|
||||||
print >>self.f_chapter, '.. toctree::' |
|
||||||
print >>self.f_chapter, ' :maxdepth: 2' |
|
||||||
print >>self.f_chapter |
|
||||||
self.f_chapter.write(" %s\n" % filename) |
|
||||||
self.f_section = QOpen(os.path.join(self.language, filename + '.rst'), 'wt') |
|
||||||
self.f = self.f_section |
|
||||||
self.indent = 0 |
|
||||||
title = self.render(c.params[0].str) |
|
||||||
print >>self, title |
|
||||||
print >>self, '=' * len(title) |
|
||||||
print >>self |
|
||||||
print >>self, '.. highlight:: %s' % {'c': 'c', 'cpp': 'cpp', 'py': 'python'}[self.language] |
|
||||||
print >>self |
|
||||||
|
|
||||||
def cmd_subsection(self, c): |
|
||||||
print >>self |
|
||||||
nm = str(c.params[0]) |
|
||||||
print >>self, nm |
|
||||||
print >>self, '-' * len(nm) |
|
||||||
print >>self |
|
||||||
self.function_props = {} |
|
||||||
self.covered.add(nm) |
|
||||||
|
|
||||||
def cmd_includegraphics(self, c): |
|
||||||
filename = os.path.join('..', '..', str(c.params[0])) |
|
||||||
print >>self, "\n\n.. image:: %s\n\n" % filename |
|
||||||
|
|
||||||
def cmd_renewcommand(self, c): |
|
||||||
self.indent = 0 |
|
||||||
command = self.render(c.params[0].str) |
|
||||||
if command == 'curModule': |
|
||||||
self.cur_module = self.render(c.params[1].str) |
|
||||||
|
|
||||||
def wikiLink(self, name): |
|
||||||
return '`id=%s Comments from the Wiki <http://opencv.willowgarage.com/wiki/documentation/%s/%s/%s>`__' % (random(), self.language, self.cur_module, urllib.quote(name) ) |
|
||||||
|
|
||||||
def cmd_cvCppCross(self, c): |
|
||||||
self.write(":func:`%s`" % str(c.params[0])) |
|
||||||
|
|
||||||
def cmd_cvCPyCross(self, c): |
|
||||||
self.write(":ref:`%s`" % str(c.params[0])) |
|
||||||
|
|
||||||
def cmd_cross(self, c): |
|
||||||
self.write(":ref:`%s`" % str(c.params[0])) |
|
||||||
|
|
||||||
def cmd_cvCross(self, c): |
|
||||||
self.write(":ref:`%s`" % str(c.params[0])) |
|
||||||
|
|
||||||
def cmd_cvclass(self, c): |
|
||||||
self.indent = 0 |
|
||||||
self.state = None |
|
||||||
nm = self.render(list(c.params[0].str)) |
|
||||||
print >>self, "\n.. index:: %s\n" % nm |
|
||||||
print >>self, ".. _%s:\n" % nm |
|
||||||
print >>self, nm |
|
||||||
print >>self, '-' * len(nm) |
|
||||||
print >>self |
|
||||||
print >>self, self.wikiLink(nm) |
|
||||||
print >>self |
|
||||||
if self.language == 'py': |
|
||||||
print >>self, ".. class:: " + nm + "\n" |
|
||||||
else: |
|
||||||
print >>self, ".. ctype:: " + nm + "\n" |
|
||||||
print >>self |
|
||||||
self.addtag(nm, c) |
|
||||||
self.state = 'class' |
|
||||||
|
|
||||||
def cmd_index(self, c): |
|
||||||
pass |
|
||||||
|
|
||||||
def cmd_hyperref(self, c): |
|
||||||
pass |
|
||||||
|
|
||||||
def cmd_footnote(self, c): |
|
||||||
pass |
|
||||||
|
|
||||||
def cmd_textasciitilde(self, c): |
|
||||||
self.write('~') |
|
||||||
|
|
||||||
def addtag(self, nm, c): |
|
||||||
if nm == "": |
|
||||||
self.report_error(c, "empty name") |
|
||||||
self.tags[nm] = "%s\t%s\t%d" % (nm, os.path.join(os.getcwd(), c.filename), c.lineno) |
|
||||||
|
|
||||||
def cmd_cvfunc(self, c): |
|
||||||
self.cmd_cvCPyFunc(c) |
|
||||||
|
|
||||||
def cmd_cvCPyFunc(self, c): |
|
||||||
self.indent = 0 |
|
||||||
nm = self.render(c.params[0].str) |
|
||||||
print >>self, "\n.. index:: %s\n" % nm |
|
||||||
print >>self, ".. _%s:\n" % nm |
|
||||||
print >>self, nm |
|
||||||
print >>self, '-' * len(nm) |
|
||||||
print >>self |
|
||||||
print >>self, self.wikiLink(nm) |
|
||||||
print >>self |
|
||||||
self.state = 'fpreamble' |
|
||||||
if self.description != "": |
|
||||||
self.report_error(c, "overflow - preceding cvfunc (starting %s) not terminated?" % repr(self.description[:30])) |
|
||||||
self.description = "" |
|
||||||
self.addtag(nm, c) |
|
||||||
|
|
||||||
self.function_props = {'name' : nm} |
|
||||||
self.covered.add(nm) |
|
||||||
|
|
||||||
def cmd_cvCppFunc(self, c): |
|
||||||
self.indent = 0 |
|
||||||
nm = self.render(c.params[0].str) |
|
||||||
print >>self, "\n.. index:: %s\n" % nm |
|
||||||
if 0: |
|
||||||
print >>self, "\n.. _%s:\n" % nm |
|
||||||
print >>self |
|
||||||
print >>self, 'cv::%s' % nm |
|
||||||
print >>self, '-' * (4+len(nm)) |
|
||||||
print >>self |
|
||||||
print >>self, self.wikiLink(nm) |
|
||||||
print >>self |
|
||||||
self.state = 'fpreamble' |
|
||||||
if self.description != "": |
|
||||||
self.report_error(c, "overflow - preceding cvfunc (starting %s) not terminated?" % repr(self.description[:30])) |
|
||||||
self.description = "" |
|
||||||
self.addtag(nm, c) |
|
||||||
|
|
||||||
self.function_props = {'name' : nm} |
|
||||||
self.covered.add(nm) |
|
||||||
|
|
||||||
def cmd_cvdefC(self, c): |
|
||||||
if self.language != 'c': |
|
||||||
return |
|
||||||
s = str(c.params[0]).replace('\\_', '_') |
|
||||||
s = s.replace('\\par', '') |
|
||||||
s = s.replace('\n', ' ') |
|
||||||
s = s.replace(';', '') |
|
||||||
self.indent = 0 |
|
||||||
for proto in s.split('\\newline'): |
|
||||||
if proto.strip() != "": |
|
||||||
print >>self, "\n\n.. cfunction:: " + proto.strip() + "\n" |
|
||||||
# print >>self, "=", repr(c.params[0].str) |
|
||||||
print >>self, ' ' + self.description |
|
||||||
self.description = "" |
|
||||||
print >>self |
|
||||||
self.state = None |
|
||||||
self.function_props['defpy'] = s |
|
||||||
|
|
||||||
def cmd_cvdefCpp(self, c): |
|
||||||
if self.language != 'cpp': |
|
||||||
return |
|
||||||
s = str(c.params[0]).replace('\\_', '_') |
|
||||||
s = s.replace('\\par', '') |
|
||||||
s = s.replace('\n', ' ') |
|
||||||
s = s.replace(';', '') |
|
||||||
self.indent = 0 |
|
||||||
for proto in s.split('\\newline'): |
|
||||||
if proto.strip() != "": |
|
||||||
print >>self, "\n\n.. cfunction:: " + proto.strip() + "\n" |
|
||||||
# print >>self, "=", repr(c.params[0].str) |
|
||||||
if self.description != "": |
|
||||||
print >>self, ' ' + self.description |
|
||||||
else: |
|
||||||
self.report_error(c, 'empty description') |
|
||||||
self.description = "" |
|
||||||
print >>self |
|
||||||
self.state = None |
|
||||||
self.function_props['defpy'] = s |
|
||||||
|
|
||||||
def cmd_cvdefPy(self, c): |
|
||||||
if self.language != 'py': |
|
||||||
return |
|
||||||
s = str(c.params[0]).replace('\\_', '_') |
|
||||||
self.indent = 0 |
|
||||||
print >>self, ".. function:: " + s + "\n" |
|
||||||
# print >>self, "=", repr(c.params[0].str) |
|
||||||
print >>self, ' ' + self.description |
|
||||||
print >>self |
|
||||||
self.description = "" |
|
||||||
self.state = None |
|
||||||
self.function_props['defpy'] = s |
|
||||||
|
|
||||||
pp.ParserElement.setDefaultWhitespaceChars(" \n\t") |
|
||||||
|
|
||||||
ident = pp.Word(pp.alphanums + "_.+-") |
|
||||||
ident_or_tuple = ident | (sl('(') + CommaList(ident) + sl(')')) |
|
||||||
initializer = ident_or_tuple |
|
||||||
arg = returnList(ident + pp.Optional(sl('=') + initializer)) |
|
||||||
|
|
||||||
decl = ident + sl('(') + CommaList(arg) + sl(')') + sl("->") + ident_or_tuple + pp.StringEnd() |
|
||||||
|
|
||||||
try: |
|
||||||
l = decl.parseString(s) |
|
||||||
if str(l[0]) != self.function_props['name']: |
|
||||||
self.report_error(c, 'Decl "%s" does not match function name "%s"' % (str(l[0]), self.function_props['name'])) |
|
||||||
self.function_props['signature'] = l |
|
||||||
if l[0] in python_api: |
|
||||||
(ins, outs) = python_api[l[0]] |
|
||||||
ins = [a for a in ins if not 'O' in a.flags] |
|
||||||
if outs != None: |
|
||||||
outs = outs.split(',') |
|
||||||
if len(ins) != len(l[1]): |
|
||||||
self.report_error(c, "function %s documented arity %d, code arity %d" % (l[0], len(l[1]), len(ins))) |
|
||||||
if outs == None: |
|
||||||
if l[2] != 'None': |
|
||||||
self.report_error(c, "function %s documented None, but code has %s" % (l[0], l[2])) |
|
||||||
else: |
|
||||||
if isinstance(l[2], str): |
|
||||||
doc_outs = [l[2]] |
|
||||||
else: |
|
||||||
doc_outs = l[2] |
|
||||||
if len(outs) != len(doc_outs): |
|
||||||
self.report_error(c, "function %s output code tuple %d, documented %d" % (l[0], len(outs), len(doc_outs))) |
|
||||||
else: |
|
||||||
# self.report_error(c, "function %s documented but not found in code" % l[0]) |
|
||||||
pass |
|
||||||
except pp.ParseException, pe: |
|
||||||
self.report_error(c, str(pe)) |
|
||||||
print s |
|
||||||
print pe |
|
||||||
|
|
||||||
def report_error(self, c, msg): |
|
||||||
print >>self.errors, "%s:%d: [%s] Error %s" % (c.filename, c.lineno, self.language, msg) |
|
||||||
|
|
||||||
def cmd_begin(self, c): |
|
||||||
if len(c.params) == 0: |
|
||||||
self.report_error(c, "Malformed begin") |
|
||||||
return |
|
||||||
self.write('\n') |
|
||||||
s = str(c.params[0]) |
|
||||||
self.envstack.append((s, (c.filename, c.lineno))) |
|
||||||
if s == 'description': |
|
||||||
if self.language == 'py' and 'name' in self.function_props and not 'defpy' in self.function_props: |
|
||||||
self.report_error(c, "No cvdefPy for function %s" % self.function_props['name']) |
|
||||||
self.indent += 1 |
|
||||||
elif s == 'lstlisting': |
|
||||||
# Set indent to zero while collecting code; so later write will not double-indent |
|
||||||
self.saved_f = self.f |
|
||||||
self.saved_indent = self.indent |
|
||||||
self.f = StringIO.StringIO() |
|
||||||
self.indent = 0 |
|
||||||
elif s in ['itemize', 'enumerate']: |
|
||||||
self.indent += 1 |
|
||||||
elif s == 'tabular': |
|
||||||
self.f = StringIO.StringIO() |
|
||||||
else: |
|
||||||
self.default_cmd(c) |
|
||||||
|
|
||||||
def cmd_item(self, c): |
|
||||||
if len(self.ee()) == 0: |
|
||||||
self.report_error(c, "item without environment") |
|
||||||
return |
|
||||||
self.indent -= 1 |
|
||||||
markup = {'itemize' : '*', 'enumerate' : '#.', 'description' : '*'}[self.ee()[-1]] |
|
||||||
if len(c.args) > 0: |
|
||||||
markup += " " + self.render([c.args[0].str]) |
|
||||||
if len(c.params) > 0: |
|
||||||
markup += " " + self.render(c.params[0].str) |
|
||||||
self.write("\n\n" + markup) |
|
||||||
self.indent += 1 |
|
||||||
|
|
||||||
def cmd_end(self, c): |
|
||||||
if len(c.params) != 1: |
|
||||||
self.report_error(c, "Malformed end") |
|
||||||
return |
|
||||||
if len(self.envstack) == 0: |
|
||||||
self.report_error(c, "end with no env") |
|
||||||
return |
|
||||||
self.write('\n') |
|
||||||
s = str(c.params[0]) |
|
||||||
if self.envstack == []: |
|
||||||
print "Cannot pop at", (c.filename, c.lineno) |
|
||||||
if self.envstack[-1][0] != s: |
|
||||||
self.report_error(c, "end{%s} does not match current stack %s" % (s, repr(self.envstack))) |
|
||||||
self.envstack.pop() |
|
||||||
if s == 'description': |
|
||||||
self.indent -= 1 |
|
||||||
if self.indent == 0: |
|
||||||
self.function_props['done'] = True |
|
||||||
elif s in ['itemize', 'enumerate']: |
|
||||||
self.indent -= 1 |
|
||||||
elif s == 'tabular': |
|
||||||
tabletxt = self.f.getvalue() |
|
||||||
self.f = self.f_section |
|
||||||
self.f.write(self.handle_table(tabletxt)) |
|
||||||
elif s == 'lstlisting': |
|
||||||
listing = self.f.getvalue() |
|
||||||
|
|
||||||
self.f = self.saved_f |
|
||||||
self.indent = self.saved_indent |
|
||||||
print >>self |
|
||||||
if self.language == 'py': |
|
||||||
ckeys = ['#define', 'void', '#include', ';\n'] |
|
||||||
found = [repr(k) for k in ckeys if k in listing] |
|
||||||
if len(found) > 0: |
|
||||||
self.report_error(c, 'listing is probably C, found %s' % ",".join(found)) |
|
||||||
if (self.language == 'py') and ('>>>' in listing): |
|
||||||
print >>self, "\n.. doctest::\n" |
|
||||||
else: |
|
||||||
print >>self, "\n::\n" |
|
||||||
self.indent += 1 |
|
||||||
print >>self |
|
||||||
self.write(listing) |
|
||||||
self.indent -= 1 |
|
||||||
print >>self |
|
||||||
print >>self |
|
||||||
print >>self, ".." # otherwise a following :param: gets treated as more listing |
|
||||||
elif s == 'document': |
|
||||||
pass |
|
||||||
else: |
|
||||||
self.default_cmd(c) |
|
||||||
|
|
||||||
def cmd_label(self, c): |
|
||||||
pass |
|
||||||
|
|
||||||
def cmd_lstinputlisting(self, c): |
|
||||||
s = str(c.params[0]) |
|
||||||
print >>self.f, ".. include:: %s" % os.path.normpath(os.path.join(self.abspath, s)) |
|
||||||
print >>self.f, " :literal:" |
|
||||||
print >>self.f |
|
||||||
|
|
||||||
# Conditionals |
|
||||||
def cmd_cvC(self, c): |
|
||||||
self.do_conditional(['c'], c) |
|
||||||
def cmd_cvCpp(self, c): |
|
||||||
self.do_conditional(['cpp'], c) |
|
||||||
def cmd_cvPy(self, c): |
|
||||||
self.do_conditional(['py'], c) |
|
||||||
def cmd_cvCPy(self, c): |
|
||||||
self.do_conditional(['c', 'py'], c) |
|
||||||
def do_conditional(self, langs, c): |
|
||||||
if self.language in langs: |
|
||||||
self.doL(c.params[0].str, False) |
|
||||||
|
|
||||||
def render(self, L): |
|
||||||
""" return L rendered as a string """ |
|
||||||
save = self.f |
|
||||||
self.f = StringIO.StringIO() |
|
||||||
for x in L: |
|
||||||
if isinstance(x, TexCmd): |
|
||||||
self.docmd(x) |
|
||||||
else: |
|
||||||
self.doplain(x) |
|
||||||
r = self.f.getvalue() |
|
||||||
self.f = save |
|
||||||
return r |
|
||||||
|
|
||||||
def cmd_cvarg(self, c): |
|
||||||
if len(c.params) != 2: |
|
||||||
self.report_error(c, "Malformed cvarg") |
|
||||||
return |
|
||||||
e = self.ee() |
|
||||||
if self.state == 'class': |
|
||||||
nm = self.render(c.params[0].str) |
|
||||||
if '->' in nm: |
|
||||||
print >>self, "\n\n.. method:: %s\n\n" % nm |
|
||||||
else: |
|
||||||
print >>self, "\n\n.. attribute:: %s\n\n" % nm |
|
||||||
self.indent += 1 |
|
||||||
print >>self |
|
||||||
self.doL(c.params[1].str, False) |
|
||||||
self.indent -= 1 |
|
||||||
print >>self |
|
||||||
return |
|
||||||
is_func_arg = (e == ['description']) and (not 'done' in self.function_props) |
|
||||||
if is_func_arg: |
|
||||||
nm = self.render(c.params[0].str) |
|
||||||
print >>self, '\n:param %s: ' % nm, |
|
||||||
type = None # Try to figure out the argument type |
|
||||||
# For now, multiple args get a pass |
|
||||||
if (self.language == 'py') and ('signature' in self.function_props) and (not ',' in nm): |
|
||||||
sig = self.function_props['signature'] |
|
||||||
argnames = [a[0] for a in sig[1]] |
|
||||||
if isinstance(sig[2], str): |
|
||||||
resnames = [sig[2]] |
|
||||||
else: |
|
||||||
resnames = list(sig[2]) |
|
||||||
if not nm in argnames + resnames: |
|
||||||
self.report_error(c, "Argument %s is not mentioned in signature (%s) (%s)" % (nm, ", ".join(argnames), ", ".join(resnames))) |
|
||||||
|
|
||||||
api = python_api.get(self.function_props['name'], None) |
|
||||||
if api: |
|
||||||
(ins, outs) = api |
|
||||||
adict = dict([(a.nm, a) for a in ins]) |
|
||||||
arg = adict.get(nm, None) |
|
||||||
if arg: |
|
||||||
type = arg.ty |
|
||||||
else: |
|
||||||
self.report_error(c, 'cannot find arg %s in code' % nm) |
|
||||||
elif len(e) > 0 and e[-1] == 'description': |
|
||||||
print >>self, '\n* **%s** ' % self.render(c.params[0].str), |
|
||||||
else: |
|
||||||
self.report_error(c, "unexpected env (%s) for cvarg" % ",".join(e)) |
|
||||||
self.indent += 1 |
|
||||||
self.doL(c.params[1].str, False) |
|
||||||
self.indent -= 1 |
|
||||||
print >>self |
|
||||||
if is_func_arg and type: |
|
||||||
type = type.replace('*', '') |
|
||||||
translate = { |
|
||||||
"ints" : "sequence of int", |
|
||||||
"floats" : "sequence of float", |
|
||||||
"IplImages" : "sequence of :class:`IplImage`", |
|
||||||
"double" : "float", |
|
||||||
"int" : "int", |
|
||||||
"float" : "float", |
|
||||||
"char" : "str", |
|
||||||
"cvarrseq" : ":class:`CvArr` or :class:`CvSeq`", |
|
||||||
"CvPoint2D32fs" : "sequence of (float, float)", |
|
||||||
"pts_npts_contours" : "list of lists of (x,y) pairs", |
|
||||||
"CvSeqOfCvSURFPoint" : ":class:`CvSeq` of :class:`CvSURFPoint`", |
|
||||||
"CvSeqOfCvSURFDescriptor" : ":class:`CvSeq` of list of float", |
|
||||||
"cvpoint2d32f_count" : "int", |
|
||||||
"ranges" : "list of tuples of ints", |
|
||||||
"PyObject" : "object", |
|
||||||
"edgeorpoint" : ":class:`CvSubdiv2DEdge`, :class:`CvSubdiv2DPoint`", |
|
||||||
} |
|
||||||
print >>self, "\n:type %s: %s" % (nm, translate.get(type, ':class:`%s`' % type)) |
|
||||||
|
|
||||||
def cmd_genc(self, c): pass |
|
||||||
def cmd_genpy(self, c): pass |
|
||||||
def cmd_author(self, c): pass |
|
||||||
def cmd_date(self, c): pass |
|
||||||
def cmd_def(self, c): pass |
|
||||||
def cmd_documentclass(self, c): pass |
|
||||||
def cmd_maketitle(self, c): pass |
|
||||||
def cmd_newcommand(self, c): pass |
|
||||||
def cmd_newline(self, c): pass |
|
||||||
def cmd_setcounter(self, c): pass |
|
||||||
def cmd_tableofcontents(self, c): pass |
|
||||||
def cmd_targetlang(self, c): pass |
|
||||||
def cmd_usepackage(self, c): pass |
|
||||||
def cmd_title(self, c): pass |
|
||||||
def cmd_par(self, c): pass |
|
||||||
def cmd_hline(self, c): |
|
||||||
print >>self, "\\hline" |
|
||||||
|
|
||||||
def cmd_cite(self, c): |
|
||||||
# XXX jcb - these references are crashing Sphinx 0.65 |
|
||||||
# self.write("[%s]_" % str(c.params[0])) |
|
||||||
self.write("%s" % str(c.params[0])) |
|
||||||
|
|
||||||
def cmd_href(self, c): |
|
||||||
if len(c.params) == 2: |
|
||||||
self.write("`%s <%s>`_" % (str(c.params[1]), self.render(c.params[0].str))) |
|
||||||
else: |
|
||||||
self.report_error(c, "href should have two params") |
|
||||||
|
|
||||||
def cmd_url(self, c): |
|
||||||
self.write(str(c.params[0])) |
|
||||||
|
|
||||||
def cmd_emph(self, c): |
|
||||||
self.write("*" + self.render(c.params[0].str) + "*") |
|
||||||
|
|
||||||
def cmd_textit(self, c): |
|
||||||
self.write("*" + self.render(c.params[0].str) + "*") |
|
||||||
|
|
||||||
def cmd_textbf(self, c): |
|
||||||
self.write("**" + self.render(c.params[0].str) + "**") |
|
||||||
|
|
||||||
def cmd_texttt(self, c): |
|
||||||
self.write("``" + self.render(c.params[0].str) + "``") |
|
||||||
|
|
||||||
def cmd_code(self, c): |
|
||||||
self.cmd_texttt(c) |
|
||||||
|
|
||||||
def default_cmd(self, c): |
|
||||||
if self.f == self.f_section: |
|
||||||
self.write(repr(c)) |
|
||||||
|
|
||||||
def unrecognized_cmd(self, c): |
|
||||||
# if writing the index or chapter heading, anything goes |
|
||||||
if not self.f in [self.f_index, self.f_chapter]: |
|
||||||
self.write(c.cmd) |
|
||||||
if (not 'lstlisting' in self.ee()) and (not c.cmd in "#{}%&*\\_^"): |
|
||||||
if not c.cmd in self.unhandled_commands: |
|
||||||
self.report_error(c, 'unhandled command %s' % c.cmd) |
|
||||||
self.unhandled_commands.add(c.cmd) |
|
||||||
|
|
||||||
def doL(self, L, newlines = True): |
|
||||||
for x in L: |
|
||||||
pos0 = self.f.tell() |
|
||||||
if isinstance(x, TexCmd): |
|
||||||
self.docmd(x) |
|
||||||
else: |
|
||||||
if 'lstlisting' in self.ee() or not newlines: |
|
||||||
self.doplain(x) |
|
||||||
else: |
|
||||||
self.doplain(x.lstrip()) |
|
||||||
pos1 = self.f.tell() |
|
||||||
if pos0 != pos1: |
|
||||||
if self.state in ['math'] or not newlines: |
|
||||||
self.appendspace() |
|
||||||
else: |
|
||||||
if not 'lstlisting' in self.ee(): |
|
||||||
self.write('\n') |
|
||||||
|
|
||||||
def handle_table(self, s): |
|
||||||
oneline = s.replace('\n', ' ').strip() |
|
||||||
rows = [r.strip() for r in oneline.split('\\hline')] |
|
||||||
tab = [] |
|
||||||
for r in rows: |
|
||||||
if r != "": |
|
||||||
cols = [c.strip() for c in r.split('&')] |
|
||||||
tab.append(cols) |
|
||||||
widths = [max([len(r[i]) for r in tab]) for i in range(len(tab[0]))] |
|
||||||
|
|
||||||
st = "" # Sphinx table |
|
||||||
|
|
||||||
if 0: |
|
||||||
sep = "+" + "+".join(["-" * w for w in widths]) + "+" |
|
||||||
st += sep + '\n' |
|
||||||
for r in tab: |
|
||||||
st += "|" + "|".join([c.center(w) for (c, w) in zip(r, widths)]) + "|" + '\n' |
|
||||||
st += sep + '\n' |
|
||||||
|
|
||||||
st = '.. table::\n\n' |
|
||||||
sep = " ".join(["=" * w for w in widths]) |
|
||||||
st += ' ' + sep + '\n' |
|
||||||
for y,r in enumerate(tab): |
|
||||||
st += ' ' + " ".join([c.ljust(w) for (c, w) in zip(r, widths)]) + '\n' |
|
||||||
if y == 0: |
|
||||||
st += ' ' + sep + '\n' |
|
||||||
st += ' ' + sep + '\n' |
|
||||||
return st |
|
||||||
|
|
||||||
def ee(self): |
|
||||||
""" Return tags of the envstack. envstack[0] is 'document', so skip it """ |
|
||||||
return [n for (n,_) in self.envstack[1:]] |
|
||||||
|
|
||||||
def get_tags(self): |
|
||||||
return self.tags |
|
||||||
|
|
||||||
def close(self): |
|
||||||
|
|
||||||
if self.envstack != []: |
|
||||||
print >>self.errors, "Error envstack not empty at end of doc: " + repr(self.envstack) |
|
||||||
print >>self.errors, "Unrecognized commands:" |
|
||||||
for c in sorted(self.unhandled_commands): |
|
||||||
print >>self.errors, "\n " + c |
|
||||||
print >>self.errors |
|
||||||
if self.language == 'py': |
|
||||||
print >>self.errors, "The following functions are undocumented" |
|
||||||
for f in sorted(set(python_api) - self.covered): |
|
||||||
print >>self.errors, ' ', f |
|
||||||
|
|
||||||
print >>self.f_index, " bibliography" |
|
||||||
print >>self.f_index, """ |
|
||||||
|
|
||||||
Indices and tables |
|
||||||
================== |
|
||||||
|
|
||||||
* :ref:`genindex` |
|
||||||
* :ref:`search` |
|
||||||
""" |
|
||||||
|
|
||||||
# Quick and dirty bibtex parser |
|
||||||
|
|
||||||
def parseBib(filename, language): |
|
||||||
pp.ParserElement.setDefaultWhitespaceChars(" \n\t") |
|
||||||
entry = returnList(pp.Word('@', pp.alphanums) + sl('{') + |
|
||||||
pp.Word(pp.alphanums + "_") + sl(',') + |
|
||||||
CommaList(returnTuple(pp.Word(pp.alphanums) + sl('=') + pp.QuotedString('{', endQuoteChar = '}'))) + |
|
||||||
pp.Suppress(pp.Optional(',')) + |
|
||||||
sl('}')) |
|
||||||
r = (pp.ZeroOrMore(entry) | pp.Suppress('#' + pp.ZeroOrMore(pp.CharsNotIn('\n'))) + pp.StringEnd()).parseFile(filename) |
|
||||||
|
|
||||||
bibliography = QOpen(os.path.join(language, "bibliography.rst"), 'wt') |
|
||||||
print >>bibliography, "Bibliography" |
|
||||||
print >>bibliography, "============" |
|
||||||
print >>bibliography |
|
||||||
|
|
||||||
for _,e in sorted([(str(x[1]), x) for x in r]): |
|
||||||
(etype, tag, attrs) = str(e[0][1:]), str(e[1]), dict([(str(a), str(b)) for (a,b) in e[2]]) |
|
||||||
|
|
||||||
representations = { |
|
||||||
'article' : '$author, "$title". $journal $volume $number, pp $pages ($year)', |
|
||||||
'inproceedings' : '$author "$title", $booktitle, $year', |
|
||||||
'misc' : '$author "$title", $year', |
|
||||||
'techreport' : '$author "$title", $edition, $edition ($year)', |
|
||||||
} |
|
||||||
if etype in representations: |
|
||||||
if 0: |
|
||||||
print >>bibliography, tag |
|
||||||
print >>bibliography, "^" * len(tag) |
|
||||||
print >>bibliography |
|
||||||
|
|
||||||
print >>bibliography, ".. [%s] %s" % (tag, Template(representations[etype]).safe_substitute(attrs)) |
|
||||||
print >>bibliography |
|
||||||
bibliography.close() |
|
||||||
|
|
||||||
if 1: |
|
||||||
fulldoc = latexparser(sys.argv[1]) |
|
||||||
|
|
||||||
abspath = os.path.abspath(os.path.dirname(sys.argv[1])) |
|
||||||
|
|
||||||
raw = open('raw.full', 'w') |
|
||||||
for x in fulldoc: |
|
||||||
print >>raw, repr(x) |
|
||||||
raw.close() |
|
||||||
|
|
||||||
# Filter on target language |
|
||||||
def preprocess_conditionals(fd, conditionals): |
|
||||||
r = [] |
|
||||||
ifstack = [] |
|
||||||
for x in fd: |
|
||||||
if isinstance(x, TexCmd): |
|
||||||
ll = x.cmd.rstrip() |
|
||||||
loc = (x.filename, x.lineno) |
|
||||||
if ll.startswith("if"): |
|
||||||
# print " " * len(ifstack), '{', loc |
|
||||||
ifstack.append((conditionals.get(ll[2:], False), loc)) |
|
||||||
elif ll.startswith("else"): |
|
||||||
ifstack[-1] = (not ifstack[-1][0], ifstack[-1][1]) |
|
||||||
elif ll.startswith("fi"): |
|
||||||
ifstack.pop() |
|
||||||
# print " " * len(ifstack), '}', loc |
|
||||||
elif not False in [p for (p,_) in ifstack]: |
|
||||||
r.append(x) |
|
||||||
else: |
|
||||||
if not False in [p for (p,_) in ifstack]: |
|
||||||
r.append(x) |
|
||||||
if ifstack != []: |
|
||||||
print "unterminated if", ifstack |
|
||||||
sys.exit(0) |
|
||||||
return r |
|
||||||
|
|
||||||
tags = {} |
|
||||||
for language in sys.argv[2:]: |
|
||||||
doc = preprocess_conditionals(fulldoc, { |
|
||||||
'C' : language=='c', |
|
||||||
'Python' : language=='py', |
|
||||||
'Py' : language=='py', |
|
||||||
'CPy' : (language=='py' or language == 'c'), |
|
||||||
'Cpp' : language=='cpp', |
|
||||||
'plastex' : True}) |
|
||||||
|
|
||||||
raw = open('raw.%s' % language, 'w') |
|
||||||
for x in doc: |
|
||||||
print >>raw, repr(x) |
|
||||||
raw.close() |
|
||||||
sr = SphinxWriter('index.rst', language, abspath) |
|
||||||
print >>sr, """ |
|
||||||
OpenCV |version| %s Reference |
|
||||||
================================= |
|
||||||
|
|
||||||
The OpenCV Wiki is here: http://opencv.willowgarage.com/ |
|
||||||
|
|
||||||
Contents: |
|
||||||
|
|
||||||
.. toctree:: |
|
||||||
:maxdepth: 2 |
|
||||||
|
|
||||||
""" % {'c': 'C', 'cpp': 'C++', 'py': 'Python'}[language] |
|
||||||
sr.doL(doc) |
|
||||||
sr.close() |
|
||||||
parseBib('../opencv.bib', language) |
|
||||||
tags.update(sr.get_tags()) |
|
||||||
open('TAGS', 'w').write("\n".join(sorted(tags.values())) + "\n") |
|
||||||
|
|
@ -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], []) |
|
Before Width: | Height: | Size: 90 KiB |
@ -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} |
|
||||||
} |
|
||||||
|
|
Before Width: | Height: | Size: 1.4 KiB |
@ -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]) |
|
@ -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() |
|
@ -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. |
|
@ -1,78 +0,0 @@ |
|||||||
\input{core_introduction} |
|
||||||
|
|
||||||
\chapter{core. The Core Functionality} |
|
||||||
\renewcommand{\curModule}{core} |
|
||||||
\input{core_basic_structures} |
|
||||||
\input{core_array_operations} |
|
||||||
\input{core_dynamic_structures} |
|
||||||
\input{core_drawing_functions} |
|
||||||
\input{core_persistence} |
|
||||||
\input{core_clustering_search} |
|
||||||
\input{core_utilities_system_functions} |
|
||||||
|
|
||||||
|
|
||||||
\chapter{imgproc. Image Processing} |
|
||||||
\renewcommand{\curModule}{imgproc} |
|
||||||
\input{imgproc_histograms} |
|
||||||
\input{imgproc_image_filtering} |
|
||||||
\input{imgproc_image_warping} |
|
||||||
\input{imgproc_image_transform} |
|
||||||
\input{imgproc_struct_shape_analysis} |
|
||||||
\input{imgproc_planar_subdivisions} |
|
||||||
\input{imgproc_motion_tracking} |
|
||||||
\input{imgproc_feature_detection} |
|
||||||
\input{imgproc_object_detection} |
|
||||||
|
|
||||||
\chapter{features2d. Feature Detection and Descriptor Extraction} |
|
||||||
\renewcommand{\curModule}{features2d} |
|
||||||
\input{features2d_detection_description} |
|
||||||
\input{features2d_common_detection_description} |
|
||||||
\input{features2d_object_categorization} |
|
||||||
|
|
||||||
\chapter{flann. Clustering and Search in Multi-Dimensional Spaces} |
|
||||||
\renewcommand{\curModule}{flann} |
|
||||||
\input{flann} |
|
||||||
|
|
||||||
\chapter{objdetect. Object Detection} |
|
||||||
\renewcommand{\curModule}{objdetect} |
|
||||||
\input{objdetect} |
|
||||||
|
|
||||||
\chapter{video. Video Analysis} |
|
||||||
\renewcommand{\curModule}{video} |
|
||||||
\input{video_motion_tracking} |
|
||||||
|
|
||||||
\chapter{highgui. High-level GUI and Media I/O} |
|
||||||
\renewcommand{\curModule}{highgui} |
|
||||||
\input{highgui} |
|
||||||
\ifPy %Qt is for C and Cpp, so do nothing |
|
||||||
\else |
|
||||||
\input{highgui_qt} |
|
||||||
\fi |
|
||||||
|
|
||||||
\chapter{calib3d. Camera Calibration, Pose Estimation and Stereo} |
|
||||||
\renewcommand{\curModule}{calib3d} |
|
||||||
\input{calib3d} |
|
||||||
|
|
||||||
|
|
||||||
\chapter{ml. Machine Learning} |
|
||||||
\renewcommand{\curModule}{ml} |
|
||||||
\input{ml} |
|
||||||
|
|
||||||
|
|
||||||
\ifCpp |
|
||||||
\chapter{gpu. GPU-based Functionality} |
|
||||||
\renewcommand{\curModule}{gpu} |
|
||||||
\input{gpu_introduction} |
|
||||||
\input{gpu_initialization} |
|
||||||
\input{gpu_data_structures} |
|
||||||
\input{gpu_matrix_operations} |
|
||||||
\input{gpu_per_element_operations} |
|
||||||
\input{gpu_image_processing} |
|
||||||
\input{gpu_matrix_reductions} |
|
||||||
\input{gpu_object_detection} |
|
||||||
\input{gpu_features2d} |
|
||||||
\input{gpu_image_filtering} |
|
||||||
\input{gpu_calib3d} |
|
||||||
\fi |
|
||||||
|
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,88 +0,0 @@ |
|||||||
# Makefile for Sphinx documentation
|
|
||||||
#
|
|
||||||
|
|
||||||
# You can set these variables from the command line.
|
|
||||||
SPHINXOPTS =
|
|
||||||
SPHINXBUILD = sphinx-build
|
|
||||||
PAPER =
|
|
||||||
|
|
||||||
# Internal variables.
|
|
||||||
PAPEROPT_a4 = -D latex_paper_size=a4
|
|
||||||
PAPEROPT_letter = -D latex_paper_size=letter
|
|
||||||
ALLSPHINXOPTS = -d _build/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) .
|
|
||||||
|
|
||||||
.PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest |
|
||||||
|
|
||||||
help: |
|
||||||
@echo "Please use \`make <target>' where <target> is one of"
|
|
||||||
@echo " html to make standalone HTML files"
|
|
||||||
@echo " dirhtml to make HTML files named index.html in directories"
|
|
||||||
@echo " pickle to make pickle files"
|
|
||||||
@echo " json to make JSON files"
|
|
||||||
@echo " htmlhelp to make HTML files and a HTML help project"
|
|
||||||
@echo " qthelp to make HTML files and a qthelp project"
|
|
||||||
@echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter"
|
|
||||||
@echo " changes to make an overview of all changed/added/deprecated items"
|
|
||||||
@echo " linkcheck to check all external links for integrity"
|
|
||||||
@echo " doctest to run all doctests embedded in the documentation (if enabled)"
|
|
||||||
|
|
||||||
clean: |
|
||||||
-rm -rf _build/*
|
|
||||||
|
|
||||||
html: |
|
||||||
$(SPHINXBUILD) -b html $(ALLSPHINXOPTS) _build/html
|
|
||||||
@echo
|
|
||||||
@echo "Build finished. The HTML pages are in _build/html."
|
|
||||||
|
|
||||||
dirhtml: |
|
||||||
$(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) _build/dirhtml
|
|
||||||
@echo
|
|
||||||
@echo "Build finished. The HTML pages are in _build/dirhtml."
|
|
||||||
|
|
||||||
pickle: |
|
||||||
$(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) _build/pickle
|
|
||||||
@echo
|
|
||||||
@echo "Build finished; now you can process the pickle files."
|
|
||||||
|
|
||||||
json: |
|
||||||
$(SPHINXBUILD) -b json $(ALLSPHINXOPTS) _build/json
|
|
||||||
@echo
|
|
||||||
@echo "Build finished; now you can process the JSON files."
|
|
||||||
|
|
||||||
htmlhelp: |
|
||||||
$(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) _build/htmlhelp
|
|
||||||
@echo
|
|
||||||
@echo "Build finished; now you can run HTML Help Workshop with the" \
|
|
||||||
".hhp project file in _build/htmlhelp."
|
|
||||||
|
|
||||||
qthelp: |
|
||||||
$(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) _build/qthelp
|
|
||||||
@echo
|
|
||||||
@echo "Build finished; now you can run "qcollectiongenerator" with the" \
|
|
||||||
".qhcp project file in _build/qthelp, like this:"
|
|
||||||
@echo "# qcollectiongenerator _build/qthelp/opencv.qhcp"
|
|
||||||
@echo "To view the help file:"
|
|
||||||
@echo "# assistant -collectionFile _build/qthelp/opencv.qhc"
|
|
||||||
|
|
||||||
latex: |
|
||||||
$(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) _build/latex
|
|
||||||
@echo
|
|
||||||
@echo "Build finished; the LaTeX files are in _build/latex."
|
|
||||||
@echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \
|
|
||||||
"run these through (pdf)latex."
|
|
||||||
|
|
||||||
changes: |
|
||||||
$(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) _build/changes
|
|
||||||
@echo
|
|
||||||
@echo "The overview file is in _build/changes."
|
|
||||||
|
|
||||||
linkcheck: |
|
||||||
$(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) _build/linkcheck
|
|
||||||
@echo
|
|
||||||
@echo "Link check complete; look for any errors in the above output " \
|
|
||||||
"or in _build/linkcheck/output.txt."
|
|
||||||
|
|
||||||
doctest: |
|
||||||
$(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) _build/doctest
|
|
||||||
@echo "Testing of doctests in the sources finished, look at the " \
|
|
||||||
"results in _build/doctest/output.txt."
|
|
@ -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 |
|
@ -1,26 +0,0 @@ |
|||||||
{% extends "basic/layout.html" %} |
|
||||||
|
|
||||||
{% block document %} |
|
||||||
<div class="documentwrapper"> |
|
||||||
{%- if not embedded %}{% if not theme_nosidebar|tobool %} |
|
||||||
<div class="bodywrapper"> |
|
||||||
{%- endif %}{% endif %} |
|
||||||
<div class="body"> |
|
||||||
{% block body %} {% endblock %} |
|
||||||
</div> |
|
||||||
<div class="feedback"> |
|
||||||
<h2>Help and Feedback</h2> |
|
||||||
You did not find what you were looking for? |
|
||||||
<ul> |
|
||||||
<li>Try the <a href="faq.html">FAQ</a>.</li> |
|
||||||
<li>Ask a question in the <a href="http://tech.groups.yahoo.com/group/OpenCV/">user group/mailing list</a>.</li> |
|
||||||
<li>If you think something is missing or wrong in the documentation, |
|
||||||
please file a <a href="https://code.ros.org/trac/opencv/wiki">bug report</a>.</li> |
|
||||||
</ul> |
|
||||||
</div> |
|
||||||
{%- if not embedded %}{% if not theme_nosidebar|tobool %} |
|
||||||
</div> |
|
||||||
{%- endif %}{% endif %} |
|
||||||
</div> |
|
||||||
{% endblock %} |
|
||||||
|
|
@ -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 |
|
@ -1,197 +0,0 @@ |
|||||||
# -*- coding: utf-8 -*- |
|
||||||
# |
|
||||||
# opencv documentation build configuration file, created by |
|
||||||
# sphinx-quickstart on Thu Jun 4 21:06:43 2009. |
|
||||||
# |
|
||||||
# This file is execfile()d with the current directory set to its containing dir. |
|
||||||
# |
|
||||||
# Note that not all possible configuration values are present in this |
|
||||||
# autogenerated file. |
|
||||||
# |
|
||||||
# All configuration values have a default; values that are commented out |
|
||||||
# serve to show the default. |
|
||||||
|
|
||||||
import sys, os |
|
||||||
|
|
||||||
# If extensions (or modules to document with autodoc) are in another directory, |
|
||||||
# add these directories to sys.path here. If the directory is relative to the |
|
||||||
# documentation root, use os.path.abspath to make it absolute, like shown here. |
|
||||||
#sys.path.append(os.path.abspath('.')) |
|
||||||
|
|
||||||
# -- General configuration ----------------------------------------------------- |
|
||||||
|
|
||||||
# Add any Sphinx extension module names here, as strings. They can be extensions |
|
||||||
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. |
|
||||||
extensions = ['sphinx.ext.pngmath'] |
|
||||||
|
|
||||||
# Add any paths that contain templates here, relative to this directory. |
|
||||||
templates_path = ['_templates'] |
|
||||||
|
|
||||||
# The suffix of source filenames. |
|
||||||
source_suffix = '.rst' |
|
||||||
|
|
||||||
# The encoding of source files. |
|
||||||
#source_encoding = 'utf-8' |
|
||||||
|
|
||||||
# The master toctree document. |
|
||||||
master_doc = 'index' |
|
||||||
|
|
||||||
# General information about the project. |
|
||||||
project = u'opencv' |
|
||||||
copyright = u'2009, authors' |
|
||||||
|
|
||||||
# The version info for the project you're documenting, acts as replacement for |
|
||||||
# |version| and |release|, also used in various other places throughout the |
|
||||||
# built documents. |
|
||||||
# |
|
||||||
# The short X.Y version. |
|
||||||
version = '2.0' |
|
||||||
# The full version, including alpha/beta/rc tags. |
|
||||||
release = '2.0+ SVN' |
|
||||||
|
|
||||||
# The language for content autogenerated by Sphinx. Refer to documentation |
|
||||||
# for a list of supported languages. |
|
||||||
#language = None |
|
||||||
|
|
||||||
# There are two options for replacing |today|: either, you set today to some |
|
||||||
# non-false value, then it is used: |
|
||||||
#today = '' |
|
||||||
# Else, today_fmt is used as the format for a strftime call. |
|
||||||
#today_fmt = '%B %d, %Y' |
|
||||||
|
|
||||||
# List of documents that shouldn't be included in the build. |
|
||||||
#unused_docs = [] |
|
||||||
|
|
||||||
# List of directories, relative to source directory, that shouldn't be searched |
|
||||||
# for source files. |
|
||||||
exclude_trees = ['_build'] |
|
||||||
|
|
||||||
# The reST default role (used for this markup: `text`) to use for all documents. |
|
||||||
#default_role = None |
|
||||||
|
|
||||||
# If true, '()' will be appended to :func: etc. cross-reference text. |
|
||||||
#add_function_parentheses = True |
|
||||||
|
|
||||||
# If true, the current module name will be prepended to all description |
|
||||||
# unit titles (such as .. function::). |
|
||||||
#add_module_names = True |
|
||||||
|
|
||||||
# If true, sectionauthor and moduleauthor directives will be shown in the |
|
||||||
# output. They are ignored by default. |
|
||||||
#show_authors = False |
|
||||||
|
|
||||||
# The name of the Pygments (syntax highlighting) style to use. |
|
||||||
pygments_style = 'sphinx' |
|
||||||
|
|
||||||
# A list of ignored prefixes for module index sorting. |
|
||||||
#modindex_common_prefix = [] |
|
||||||
|
|
||||||
|
|
||||||
# -- Options for HTML output --------------------------------------------------- |
|
||||||
|
|
||||||
# The theme to use for HTML and HTML Help pages. Major themes that come with |
|
||||||
# Sphinx are currently 'default' and 'sphinxdoc'. |
|
||||||
html_theme = 'blue' |
|
||||||
|
|
||||||
# Theme options are theme-specific and customize the look and feel of a theme |
|
||||||
# further. For a list of options available for each theme, see the |
|
||||||
# documentation. |
|
||||||
#html_theme_options = {} |
|
||||||
|
|
||||||
# Add any paths that contain custom themes here, relative to this directory. |
|
||||||
html_theme_path = ['_themes'] |
|
||||||
|
|
||||||
# The name for this set of Sphinx documents. If None, it defaults to |
|
||||||
# "<project> v<release> documentation". |
|
||||||
#html_title = None |
|
||||||
|
|
||||||
# A shorter title for the navigation bar. Default is the same as html_title. |
|
||||||
#html_short_title = None |
|
||||||
|
|
||||||
# The name of an image file (relative to this directory) to place at the top |
|
||||||
# of the sidebar. |
|
||||||
html_logo = 'opencv-logo2.png' |
|
||||||
|
|
||||||
# The name of an image file (within the static path) to use as favicon of the |
|
||||||
# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 |
|
||||||
# pixels large. |
|
||||||
#html_favicon = None |
|
||||||
|
|
||||||
# Add any paths that contain custom static files (such as style sheets) here, |
|
||||||
# relative to this directory. They are copied after the builtin static files, |
|
||||||
# so a file named "default.css" will overwrite the builtin "default.css". |
|
||||||
html_static_path = ['_static'] |
|
||||||
|
|
||||||
# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, |
|
||||||
# using the given strftime format. |
|
||||||
#html_last_updated_fmt = '%b %d, %Y' |
|
||||||
|
|
||||||
# If true, SmartyPants will be used to convert quotes and dashes to |
|
||||||
# typographically correct entities. |
|
||||||
#html_use_smartypants = True |
|
||||||
|
|
||||||
# Custom sidebar templates, maps document names to template names. |
|
||||||
#html_sidebars = {} |
|
||||||
|
|
||||||
# Additional templates that should be rendered to pages, maps page names to |
|
||||||
# template names. |
|
||||||
#html_additional_pages = {} |
|
||||||
|
|
||||||
# If false, no module index is generated. |
|
||||||
#html_use_modindex = True |
|
||||||
|
|
||||||
# If false, no index is generated. |
|
||||||
#html_use_index = True |
|
||||||
|
|
||||||
# If true, the index is split into individual pages for each letter. |
|
||||||
#html_split_index = False |
|
||||||
|
|
||||||
# If true, links to the reST sources are added to the pages. |
|
||||||
#html_show_sourcelink = True |
|
||||||
|
|
||||||
# If true, an OpenSearch description file will be output, and all pages will |
|
||||||
# contain a <link> tag referring to it. The value of this option must be the |
|
||||||
# base URL from which the finished HTML is served. |
|
||||||
#html_use_opensearch = '' |
|
||||||
|
|
||||||
# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). |
|
||||||
#html_file_suffix = '' |
|
||||||
|
|
||||||
# Output file base name for HTML help builder. |
|
||||||
htmlhelp_basename = 'opencvdoc' |
|
||||||
|
|
||||||
|
|
||||||
# -- Options for LaTeX output -------------------------------------------------- |
|
||||||
|
|
||||||
# The paper size ('letter' or 'a4'). |
|
||||||
#latex_paper_size = 'letter' |
|
||||||
|
|
||||||
# The font size ('10pt', '11pt' or '12pt'). |
|
||||||
#latex_font_size = '10pt' |
|
||||||
|
|
||||||
# Grouping the document tree into LaTeX files. List of tuples |
|
||||||
# (source start file, target name, title, author, documentclass [howto/manual]). |
|
||||||
latex_documents = [ |
|
||||||
('index', 'opencv.tex', u'opencv Documentation', |
|
||||||
u'author', 'manual'), |
|
||||||
] |
|
||||||
|
|
||||||
# The name of an image file (relative to this directory) to place at the top of |
|
||||||
# the title page. |
|
||||||
#latex_logo = None |
|
||||||
|
|
||||||
# For "manual" documents, if this is true, then toplevel headings are parts, |
|
||||||
# not chapters. |
|
||||||
#latex_use_parts = False |
|
||||||
|
|
||||||
# Additional stuff for the LaTeX preamble. |
|
||||||
#latex_preamble = '' |
|
||||||
|
|
||||||
# Documents to append as an appendix to all manuals. |
|
||||||
#latex_appendices = [] |
|
||||||
|
|
||||||
# If false, no module index is generated. |
|
||||||
#latex_use_modindex = True |
|
||||||
|
|
||||||
pngmath_latex_preamble = '\usepackage{mymath}\usepackage{amsmath}\usepackage{bbm}\usepackage[usenames]{color}' |
|
||||||
highlight_language = 'c' |
|
@ -1,12 +0,0 @@ |
|||||||
|
|
||||||
|
|
||||||
*** |
|
||||||
FAQ |
|
||||||
*** |
|
||||||
|
|
||||||
.. toctree:: |
|
||||||
:maxdepth: 2 |
|
||||||
|
|
||||||
first_section |
|
||||||
|
|
||||||
|
|
@ -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. |
|
||||||
|
|
@ -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. |
|
||||||
|
|
@ -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 |
|
@ -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', |
|
||||||
] |
|
@ -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 |
|
@ -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` |
|
@ -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) |
|
@ -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} |
|
||||||
} |
|
||||||
|
|
@ -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' |
|
Before Width: | Height: | Size: 1.4 KiB |
@ -1,113 +0,0 @@ |
|||||||
Introduction |
|
||||||
============ |
|
||||||
|
|
||||||
Cookbook |
|
||||||
-------- |
|
||||||
|
|
||||||
Here is a small collection of code fragments demonstrating some features |
|
||||||
of the OpenCV Python bindings. |
|
||||||
|
|
||||||
Convert an image from png to jpg |
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
||||||
|
|
||||||
:: |
|
||||||
|
|
||||||
import cv |
|
||||||
cv.SaveImage("foo.png", cv.LoadImage("foo.jpg")) |
|
||||||
|
|
||||||
Compute the Laplacian |
|
||||||
^^^^^^^^^^^^^^^^^^^^^ |
|
||||||
|
|
||||||
:: |
|
||||||
|
|
||||||
im = cv.LoadImage("foo.png", 1) |
|
||||||
dst = cv.CreateImage(cv.GetSize(im), cv.IPL_DEPTH_16S, 3); |
|
||||||
laplace = cv.Laplace(im, dst) |
|
||||||
cv.SaveImage("foo-laplace.png", dst) |
|
||||||
|
|
||||||
|
|
||||||
Using cvGoodFeaturesToTrack |
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
||||||
|
|
||||||
:: |
|
||||||
|
|
||||||
img = cv.LoadImage("foo.jpg") |
|
||||||
eig_image = cv.CreateImage(cv.GetSize(img), cv.IPL_DEPTH_32F, 1) |
|
||||||
temp_image = cv.CreateImage(cv.GetSize(img), cv.IPL_DEPTH_32F, 1) |
|
||||||
# Find up to 300 corners using Harris |
|
||||||
for (x,y) in cv.GoodFeaturesToTrack(img, eig_image, temp_image, 300, None, 1.0, use_harris = True): |
|
||||||
print "good feature at", x,y |
|
||||||
|
|
||||||
Using GetSubRect |
|
||||||
^^^^^^^^^^^^^^^^ |
|
||||||
|
|
||||||
GetSubRect returns a rectangular part of another image. It does this without copying any data. |
|
||||||
|
|
||||||
:: |
|
||||||
|
|
||||||
img = cv.LoadImage("foo.jpg") |
|
||||||
sub = cv.GetSubRect(img, (0, 0, 32, 32)) # sub is 32x32 patch from img top-left |
|
||||||
cv.SetZero(sub) # clear sub to zero, which also clears 32x32 pixels in img |
|
||||||
|
|
||||||
Using CreateMat, and accessing an element |
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
||||||
|
|
||||||
:: |
|
||||||
|
|
||||||
mat = cv.CreateMat(5, 5, cv.CV_32FC1) |
|
||||||
mat[3,2] += 0.787 |
|
||||||
|
|
||||||
|
|
||||||
ROS image message to OpenCV |
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^ |
|
||||||
|
|
||||||
See this tutorial: http://www.ros.org/wiki/cv_bridge/Tutorials/UsingCvBridgeToConvertBetweenROSImagesAndOpenCVImages |
|
||||||
|
|
||||||
PIL Image to OpenCV |
|
||||||
^^^^^^^^^^^^^^^^^^^ |
|
||||||
|
|
||||||
(For details on PIL see the `PIL manual <http://www.pythonware.com/library/pil/handbook/image.htm>`_). |
|
||||||
|
|
||||||
:: |
|
||||||
|
|
||||||
import Image |
|
||||||
import cv |
|
||||||
pi = Image.open('foo.png') # PIL image |
|
||||||
cv_im = cv.CreateImageHeader(pi.size, cv.IPL_DEPTH_8U, 1) |
|
||||||
cv.SetData(cv_im, pi.tostring()) |
|
||||||
|
|
||||||
OpenCV to PIL Image |
|
||||||
^^^^^^^^^^^^^^^^^^^ |
|
||||||
|
|
||||||
:: |
|
||||||
|
|
||||||
cv_im = cv.CreateImage((320,200), cv.IPL_DEPTH_8U, 1) |
|
||||||
pi = Image.fromstring("L", cv.GetSize(cv_im), cv_im.tostring()) |
|
||||||
|
|
||||||
NumPy and OpenCV |
|
||||||
^^^^^^^^^^^^^^^^ |
|
||||||
|
|
||||||
Using the `array interface <http://docs.scipy.org/doc/numpy/reference/arrays.interface.html>`_, to use an OpenCV CvMat in NumPy:: |
|
||||||
|
|
||||||
import cv |
|
||||||
import numpy |
|
||||||
mat = cv.CreateMat(5, 5, cv.CV_32FC1) |
|
||||||
a = numpy.asarray(mat) |
|
||||||
|
|
||||||
and to use a NumPy array in OpenCV:: |
|
||||||
|
|
||||||
a = numpy.ones((640, 480)) |
|
||||||
mat = cv.fromarray(a) |
|
||||||
|
|
||||||
even easier, most OpenCV functions can work on NumPy arrays directly, for example:: |
|
||||||
|
|
||||||
picture = numpy.ones((640, 480)) |
|
||||||
cv.Smooth(picture, picture, cv.CV_GAUSSIAN, 15, 15) |
|
||||||
|
|
||||||
Given a 2D array, |
|
||||||
the fromarray function (or the implicit version shown above) |
|
||||||
returns a single-channel CvMat of the same size. |
|
||||||
For a 3D array of size :math:`j \times k \times l`, it returns a |
|
||||||
CvMat sized :math:`j \times k` with :math:`l` channels. |
|
||||||
|
|
||||||
Alternatively, use fromarray with the allowND option to always return a cvMatND. |
|
@ -1,595 +0,0 @@ |
|||||||
import string, re |
|
||||||
import sys |
|
||||||
from plasTeX.Renderers import Renderer |
|
||||||
from plasTeX.Base.TeX import Primitives |
|
||||||
|
|
||||||
# import generated OpenCV function names |
|
||||||
# if the file function_names.py does not exist, it |
|
||||||
# can be generated using the script find_function_names.sh |
|
||||||
try: |
|
||||||
from function_names import opencv_function_names |
|
||||||
except: |
|
||||||
opencv_function_names = [] |
|
||||||
pass |
|
||||||
|
|
||||||
class XmlRenderer(Renderer): |
|
||||||
|
|
||||||
def default(self, node): |
|
||||||
""" Rendering method for all non-text nodes """ |
|
||||||
s = [] |
|
||||||
|
|
||||||
# Handle characters like \&, \$, \%, etc. |
|
||||||
if len(node.nodeName) == 1 and node.nodeName not in string.letters: |
|
||||||
return self.textDefault(node.nodeName) |
|
||||||
|
|
||||||
# Start tag |
|
||||||
s.append('<%s>' % node.nodeName) |
|
||||||
|
|
||||||
# See if we have any attributes to render |
|
||||||
if node.hasAttributes(): |
|
||||||
s.append('<attributes>') |
|
||||||
for key, value in node.attributes.items(): |
|
||||||
# If the key is 'self', don't render it |
|
||||||
# these nodes are the same as the child nodes |
|
||||||
if key == 'self': |
|
||||||
continue |
|
||||||
s.append('<%s>%s</%s>' % (key, unicode(value), key)) |
|
||||||
s.append('</attributes>') |
|
||||||
|
|
||||||
# Invoke rendering on child nodes |
|
||||||
s.append(unicode(node)) |
|
||||||
|
|
||||||
# End tag |
|
||||||
s.append('</%s>' % node.nodeName) |
|
||||||
|
|
||||||
return u'\n'.join(s) |
|
||||||
|
|
||||||
def textDefault(self, node): |
|
||||||
""" Rendering method for all text nodes """ |
|
||||||
return node.replace('&','&').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', "#<d7>") |
|
||||||
return s |
|
||||||
|
|
||||||
def do_cvC(self, node): |
|
||||||
if self.language == 'c': |
|
||||||
return unicode(node.attributes['a']) |
|
||||||
return unicode("") |
|
||||||
|
|
||||||
def do_cvCpp(self, node): |
|
||||||
if self.language == 'cpp': |
|
||||||
return unicode(node.attributes['a']) |
|
||||||
return unicode("") |
|
||||||
|
|
||||||
def do_cvPy(self, node): |
|
||||||
if self.language == 'py': |
|
||||||
return unicode(node.attributes['a']) |
|
||||||
return unicode("") |
|
||||||
|
|
||||||
def do_cvCPy(self, node): |
|
||||||
if self.language == 'c' or self.language == 'py': |
|
||||||
return unicode(node.attributes['a']) |
|
||||||
return unicode("") |
|
||||||
|
|
||||||
def do_ifthenelse(self, node): |
|
||||||
# print "IFTHENELSE: [%s],[%s],[%s]" % (node.attributes['test'], str(node.attributes['then']), node.attributes['else']) |
|
||||||
print "CONDITION", unicode(node.attributes['test']).strip() == u'true' |
|
||||||
if unicode(node.attributes['test']).strip() == u'true': |
|
||||||
print "TRUE: [%s]" % str(node.attributes['then']) |
|
||||||
return unicode(node.attributes['then']) |
|
||||||
else: |
|
||||||
return unicode(node.attributes['else']) |
|
||||||
|
|
||||||
def do_equal(self, node): |
|
||||||
first = unicode(node.attributes['first']).strip() |
|
||||||
second = unicode(node.attributes['second']).strip() |
|
||||||
if first == second: |
|
||||||
return u'true' |
|
||||||
else: |
|
||||||
return u'false' |
|
||||||
|
|
||||||
def textDefault(self, node): |
|
||||||
if self.in_func: |
|
||||||
self.func_short_desc += self.fix_quotes(unicode(node)).strip(" ") |
|
||||||
return u"" |
|
||||||
|
|
||||||
s = unicode(node) |
|
||||||
s = self.fix_quotes(s) |
|
||||||
return s |
|
||||||
return node.replace('\\_','_') |
|
||||||
|
|
||||||
|
|
||||||
from plasTeX.TeX import TeX |
|
||||||
import os |
|
||||||
import pickle |
|
||||||
|
|
||||||
def preprocess_conditionals(fname, suffix, conditionals): |
|
||||||
print 'conditionals', conditionals |
|
||||||
f = open("../" + fname + ".tex", 'r') |
|
||||||
fout = open(fname + suffix + ".tex", 'w') |
|
||||||
print 'write', fname + suffix + ".tex" |
|
||||||
ifstack=[True] |
|
||||||
for l in f.readlines(): |
|
||||||
ll = l.lstrip() |
|
||||||
if ll.startswith("\\if"): |
|
||||||
ifstack.append(conditionals.get(ll.rstrip()[3:], False)) |
|
||||||
elif ll.startswith("\\else"): |
|
||||||
ifstack[-1] = not ifstack[-1] |
|
||||||
elif ll.startswith("\\fi"): |
|
||||||
ifstack.pop() |
|
||||||
elif not False in ifstack: |
|
||||||
fout.write(l) |
|
||||||
f.close() |
|
||||||
fout.close() |
|
||||||
|
|
||||||
def parse_documentation_source(language): |
|
||||||
# Instantiate a TeX processor and parse the input text |
|
||||||
tex = TeX() |
|
||||||
tex.ownerDocument.config['files']['split-level'] = 0 |
|
||||||
master_f = open("../online-opencv.tex", "rt") |
|
||||||
out_master_f = open(("../online-opencv-%s.tex" % language), "wt") |
|
||||||
flist = [] |
|
||||||
|
|
||||||
for l in master_f.readlines(): |
|
||||||
outl = l |
|
||||||
if l.startswith("\\newcommand{\\targetlang}{}"): |
|
||||||
outl = l.replace("}", ("%s}" % language)) |
|
||||||
elif l.startswith("\\input{"): |
|
||||||
flist.append(re.findall(r"\{(.+)\}", l)[0]) |
|
||||||
outl = l.replace("}", ("-%s}" % language)) |
|
||||||
out_master_f.write(outl) |
|
||||||
|
|
||||||
master_f.close() |
|
||||||
out_master_f.close() |
|
||||||
|
|
||||||
index_f = open("index.rst.copy", "rt") |
|
||||||
index_lines = list(index_f.readlines()) |
|
||||||
index_f.close() |
|
||||||
out_index_f = open("index.rst", "wt") |
|
||||||
header_line = "OpenCV |version| %s Reference" % {"py": "Python", "c": "C", "cpp": "C++"}[language] |
|
||||||
index_lines = [header_line + "\n", "="*len(header_line) + "\n", "\n"] + index_lines |
|
||||||
for l in index_lines: |
|
||||||
out_index_f.write(l) |
|
||||||
out_index_f.close() |
|
||||||
|
|
||||||
for f in flist: |
|
||||||
preprocess_conditionals(f, '-' + language, |
|
||||||
{'C':language=='c', 'Python':language=='py', |
|
||||||
'Py':language=='py', 'CPy':(language=='py' or language == 'c'), |
|
||||||
'Cpp':language=='cpp', 'plastex':True}) |
|
||||||
|
|
||||||
if 1: |
|
||||||
tex.input("\\input{online-opencv-%s.tex}" % language) |
|
||||||
else: |
|
||||||
src0 = r''' |
|
||||||
\documentclass{book} |
|
||||||
\usepackage{myopencv} |
|
||||||
\begin{document}''' |
|
||||||
|
|
||||||
src1 = r''' |
|
||||||
\end{document} |
|
||||||
''' |
|
||||||
lines = list(open("../CvReference.tex")) |
|
||||||
LINES = 80 |
|
||||||
tex.input(src0 + "".join(lines[:LINES]) + src1) |
|
||||||
|
|
||||||
return tex.parse() |
|
||||||
|
|
||||||
language = sys.argv[1] |
|
||||||
|
|
||||||
document = parse_documentation_source(language) |
|
||||||
|
|
||||||
rest = reStructuredTextRenderer() |
|
||||||
rest.language = language |
|
||||||
rest.render(document) |
|
Loading…
Reference in new issue