diff --git a/doc/opencv_user.pdf b/doc/opencv_user.pdf index 1b72ddad53..2606e815dd 100644 Binary files a/doc/opencv_user.pdf and b/doc/opencv_user.pdf differ diff --git a/doc/user_mat.tex b/doc/user_mat.tex index 731e7b0a47..323f612e09 100644 --- a/doc/user_mat.tex +++ b/doc/user_mat.tex @@ -33,11 +33,37 @@ Scalar intensity = img.at(x, y); Now let us consider a 3 channel image with \texttt{bgr} color ordering (the default format returned by imread): \begin{lstlisting} -Scalar intensity = img.at(x, y); +Vec3b intensity = img.at(x, y); uchar blue = intensity.val[0]; uchar green = intensity.val[1]; uchar red = intensity.val[2]; \end{lstlisting} + +You can use the same method for floating-point images (for example, you can get such an image by running Sobel on a 3 channel image): +\begin{lstlisting} +Vec3f intensity = img.at(x, y); +float blue = intensity.val[0]; +float green = intensity.val[1]; +float red = intensity.val[2]; +\end{lstlisting} + +The same method can be used to change pixel intensities: +\begin{lstlisting} +img.at(x, y) = 128; +\end{lstlisting} + +There are functions in OpenCV, especially from calib3d module, such as \texttt{projectPoints}, that take an array of 2D or 3D points in the form of \texttt{Mat}. Matrix should contain exactly one column, each row corresponds to a point, matrix type should be 32FC2 or 32FC3 correspondingly. Such a matrix can be easily constructed from std::vector: +\begin{lstlisting} +vector points; +//... fill the array +Mat _points = Mat(points); +\end{lstlisting} +One can access a point in this matrix using the same method \texttt{Mat::at}: +\begin{lstlisting} +Point2f point = _points.at(i, 0); +\end{lstlisting} + + \fi