Errata

Learning OpenCV

Errata for Learning OpenCV

Submit your own errata for this product.

The errata list is a list of errors and their corrections that were found after the product was released.

The following errata were submitted by our customers and have not yet been approved or disproved by the author or editor. They solely represent the opinion of the customer.

Color Key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted by Date submitted
PDF Page a lot of pages

all formulas and rows written in blu color are not readable on pdf how can I have a readable one?

Sergi Cappuccio  Nov 23, 2013 
PDF Page Ch 3,4,5
All pages

Book formatting is seriously defficient (PDF version of Jan 31st, 2014):
- Equations in Chapters 3, 4 and 5 are unreadable.
- Font and page sizes are inconsistent across chapters. Most chapters use 10pt fonts; Chapter 1 uses 12pt fonts; Chapter 4 uses <9pt fonts and the page size is very small, leaving too big white margins.

Anonymous  Feb 05, 2014 
PDF

Chapter 8 is missing from the pre-release published on august 4th, it was included in earlier releases.
many other errors that have been reported earlier remained (broken links/missing references, duplicate printing of images)

Gernot Hochmuth  Aug 06, 2014 
PDF Page 1
none

There is no kalman filter treatment in the pre-release PDF. This section was a very important part of the original edition and I hope to see it included in the published edition.

Karim Virani  Oct 17, 2013 
PDF Page 17
Example 2-1

An Example 2-1 should have "return 0;" at the end. Without it, program will not work.

Pavlo  Jan 23, 2014 
PDF Page 20
Example 2.4

all constants in the code example 2.4 should read CV_.. , not cv::

for example CV_CAP_PROP_FRAME_COUNT (instead of cv::CAP_PROP_FRAME_COUNT)

Anonymous  Jan 07, 2014 
PDF Page 21-22
5th

Example 2-4
works as follows :
#include <highgui.h>
#include <cv.h>
#include <iostream>
#include <fstream>
using namespace cv;
using namespace std;
int g_run = 1, g_dontset = 0; //start out in single step mode
cv::VideoCapture g_cap;
void onTrackbarSlide( int pos, void *) {
g_cap.set(CV_CAP_PROP_POS_FRAMES,pos);
if( !g_dontset )
g_run = 1;
g_dontset = 0;
}
int main( int argc, char** argv ) {
cv::namedWindow( "Example2_4", cv::WINDOW_AUTOSIZE );
g_cap.open( string(argv[1]) );
int frames = (int) g_cap.get(CV_CAP_PROP_FRAME_COUNT);
int tmpw = (int) g_cap.get(CV_CAP_PROP_FRAME_WIDTH);
int tmph = (int) g_cap.get(CV_CAP_PROP_FRAME_HEIGHT);
cout << "Video has " << frames << " frames of dimensions("
<< tmpw << ", " << tmph << ")." << endl;
cv::createTrackbar("Position", "Example2_4",0, frames,onTrackbarSlide);
cv::Mat frame;
while(1) {
if( g_run != 0 ) {
g_cap >> frame; if(!frame.data) break;
int current_pos = (int)g_cap.get(CV_CAP_PROP_POS_FRAMES);
g_dontset = 1;
cv::setTrackbarPos("Position", "Example2_4", current_pos);
cv::imshow( "Example2_4", frame );
g_run-=1;
}
char c = (char) cv::waitKey(10);
if(c == 's') // single step
{g_run = 1; cout << "Single step, run = " << g_run << endl;}
if(c == 'r') // run mode
{g_run = -1; cout << "Run mode, run = " << g_run <<endl;}
if( c == 27 )
break;
}
return(0);
}

eslam fahd  Dec 08, 2013 
PDF Page 21
United States

Needs to add
using namespace std;

Clement Benjamin Barthes  Apr 03, 2014 
PDF Page 23
Example 2-4 inside " if(c == 's') // single step " statament

g_run variable should receive 0 in order to stop the video output.

Nicolas Agostini  Feb 04, 2014 
PDF Page 25
2nd code

I guess, that in "char c = (char) waitKey (10);", waitKey10 should mean "key was pressed", but I don't understand: what relation between pressed key and delay in 10 ms?

Pavlo  Feb 04, 2014 
PDF Page 25, 26
2nd paragraph, penultimate sentence; 1st paragraph, 1st sentence

Page 25:
"Then, after we have called cv::showImage()...", but actually we called "cv::imshow()".
Page 26:
"The first call to cv::showImage()...". The same problem.

Pavlo  Feb 04, 2014 
PDF Page 26
Example 2-11

CV_FOURCC('M','J','P','G') should be VideoWriter::fourcc('M','J','P','G')

CV::U8C3 should be CV_8UC3

Matt Sonic  Dec 10, 2013 
PDF Page 26
Example 2-6

Example 2.6 doesn't work!
1) cv::Mat img = cv::imread( argv[1] ),img2;
What undefined matrix "img2" doing there?
I guess it should be "Mat img2;" in new line.

2) What semicolon doing at the end of main function?

I resolved that problem in this way (berofe namedWindow() function):

Mat img1;
Mat img2;
VideoCapture cap;
cap.open(string(argv[1]));
cap >> img1;

Pavlo  Feb 04, 2014 
PDF Page 27
Example 2-7

Example 2-7 doesn't work!

1) This is example doesn't work:
cv::Mat img_rgb = cv::imread( argv[1] );

My solution:
Mat img_rgb;
Mat img_gry, img_cny;
VideoCapture cap;
cap.open(string(argv[1]));
cap >> img_rgb;

2) cv::cvtColor( img_rgb, img_gry, cv::BGR2GRAY);
There no "BGR2GRAY", only "CV_BGR2GRAY", maybe here should be "CV_RGB2GRAY".

3)There should be "return 0;" at the end of main function.

Pavlo  Feb 04, 2014 
PDF Page 28, 29
Example 2-11

That program doesn't work!
1) There are no "logPolar" function, but "cvLogPolar".
2) "cvLogPolar" function underline first two parameters: "no suitable conversion function from "cv::Mat" to "CvArr*" exists".
3) Could not find codec parameters.

Pavlo  Feb 04, 2014 
PDF Page 34
last sentence

I think, that "Table 3-3: Operations supported directly by the size classes" should be below, on page 35.

Pavlo  Feb 05, 2014 
PDF Page 38
end of page

I guess, that caption "Table 3-8: Operations supported by class cv::Vec" and "Operation/ Example" should be on the next page.

Pavlo  Feb 05, 2014 
PDF Page 40
last sentence of 2nd paragraph

There should be "dot" before last sentence of 2nd paragraph.

Pavlo  Feb 05, 2014 
PDF Page 44
beginning

};
at the beginning superfluous, because we finished code at page 33.

Pavlo  Feb 07, 2014 
PDF Page 46, 69-76, 80-89 and others
several

All mathematical formulas, including characters and symbols, are rendered in an almost illegible, low-resolution font.

Ricardo Carnieri  Oct 26, 2013 
PDF Page 46
Many erros - please read the detailed description

The book has many typos and other mistakes.
Here's a short list of some of the errors I noticed so far:

Page 26, paragraph 3, just before the code for example 2-6 It says "To avoid this, we want to first run a high-pass filter over the signal".
This is a mistake - a LOW PASS FILTER is used, not high pass.

In many pages the same mistake appears regarding the syntax for the type of array.
In page 46 it says: "All such types are defined in the library header, and have the form cv::{U8,S16,U16,S32,F32,F64}C{1,2,3}.14 For example, cv::F32C3 would imply a 32-bit floating-point three-channel array."
This is very very wrong in 2 ways.
First - it is not cv::{....} but rather CV_....
The second mistake is that the format has the type and bit depth in reverse order. For instance, F32 should be 32F etc.
If I look into the example It should be CV_32FC3 and NOT cv::F32C3.
This mistake occurs in many many places in the book (in examples 2-7, 2-8) and many other places. Basically this mistake appears in all places were setting the type is part of the code or explanation.

Some of the equations in the pdf aren't vectorized, but rather are pixelated non-readable graphics. For example - on page 46, 2nd, 3rd and 5th rows. This happens in more places as well.

On page 52, second paragraph (green code lines) there's a serious mistake setting the cv::MatConstIterator<> iterator and checking it's value in the while loop.

Instead of "cv::MatConstIterator<cv::Vec3f> it = m.begin();"
It should say "cv::MatConstIterator_<cv::Vec3f> it = m.begin<cv::Vec3f>();"

Instead of "while( it != m.end() ) {"
It should say "while( it != m.end<cv::Vec3f>() ) {"

In addition, the while loop uses the variable len2, but this variable wasn't declared in the example. Sure, it's trivial it should be done but examples that aren't self contained are much less useful in a textbook.

On page 55, 5 lines from the end of the page it says
"operator=() is not assigning a cv::Mat or a cv::Mat (as it might appear),"
When what should be written is
"operator=() is not assigning a cv::Mat TO a cv::Mat (as it might appear),"

On page 47, the text description "Two-dimensional arrays by type with
initializtion value (size in sz)" has a missing letter 'a' in the word initializtion

This is not an exhaustive list of errors I noticed, just some I took note of.
This 2nd edition of the book was very well needed as the previous edition is completely redundant due to the major changes when opencv became more c++ and less c.
It's a shame the preview edition is so riddled with mistakes.
I am hoping this will be fixed by the final edition, as I've paid for the book and would enjoy using it without having to double-check the validity of the content.

Regards,
Yehuda

Yehuda Odes  Apr 09, 2014 
PDF Page 92-103, 111-115, 117, 159, 160, 162, 163,174-175, 177-179, 181, 182, 188, 190-193
formulas

Unreadable formulas

Pavlo  Feb 05, 2014 
PDF Page 162
putText() description

The font used is selected by the fontFace argument, which can be any of those listed in Error! Reference source not found..

----

Broken link?

Matt Sonic  Dec 30, 2013 
PDF Page 164
last line

"The font used is selected by the fontFace argument, which can be
any of those listed in Error! Reference source not found.."

broken link, reference to table 4-11 is missing. the same error occurs in the first paragraph after table 4-11 on page 165

Gernot Hochmuth  May 09, 2014 
PDF Page 197
under second image, below

Under: not finished thought.
Below: that part bracket should be added to further "Figure 5-21) reduces such a bright region" and be placed above picture.

Pavlo  Feb 07, 2014 
PDF Page 199, 202-209, 212, 222, 223, 228
formulas

Unreadable formulas, poor pictures resolution.

Pavlo  Feb 05, 2014 
PDF Page 225 - Chapter 5 Exercises
Question 2

cv::smooth() doesn't exist. Replace with GaussianBlur()

Matt Sonic  Jan 05, 2014 
PDF Page 252
footnote

In footnote 12 the wrong type of apostrophe is used twice.

Thomas Weisbach  Sep 26, 2014 
PDF Page 274
last paragraph

"An example of the cumulative density function is shown in Error! Reference source not found. for the somewhat idealized case of a distribution that was originally pure Gaussian."

broken link, reference to figure 6-19 is missing.

Gernot Hochmuth  May 09, 2014 
PDF Page 274+276
several places

figure 6-18 (first occurrence on page 273) is redundantly reprinted on pages 274 and 276.

Gernot Hochmuth  May 09, 2014 
PDF Page 275
first paragraph

figure 6-20 is printed twice.
the beginning of the first text paragraph is printed in the same format as the preceding caption of figure 6-20

Gernot Hochmuth  May 09, 2014 
PDF Page 276
first paragraph

broken link: reference to figure 6-21 is missing.
erroneous text format: first line of the text is printed in the format of a caption

Gernot Hochmuth  May 09, 2014 
PDF Page 280
First paragraph, last sentence

I think, that there should be "will set loDiff thresholds of
20 for red, 30 for green, and 40 for blue".
"loDiff" except "lo_iff".

Pavlo  Feb 07, 2014 
PDF Page 320,321,322,323,325
several

figure 8-1 (first occurrence on page 320) is redundantly reprinted on pages 321, 322, 323 and 325.
the caption is printed below the second occurrence of figure 8-1 on page 321.

Gernot Hochmuth  May 09, 2014 
PDF Page 321-344
several

figures 8-1, 8-2, 8-3, 8-4, 8-5 and 8-7 are redundantly printed on different locations:
figure 8-1 on pages 321, 322, 323, 325, 26, 327 and 328
figure 8-2 on pages 326, 327, 328, 329 and 330
figure 8-3 printed twice on page 334
figure 8-4 on page 336
figure 8-5 printed twice on page 337
figure 8-7 printed three times on page 344

Gernot Hochmuth  May 09, 2014 
PDF Page 323+324
first paragraph + second paragraph

broken link: reference to table 8-1 is missing

Gernot Hochmuth  May 09, 2014 
PDF Page 324+325
page bottom

illegible node indices in figure 8-2.
figure 8-2 and its caption are placed on different pages.

Gernot Hochmuth  May 09, 2014 
PDF Page 347-
Throughout

Equations in chapter 8 are unreadable. (This appears to be a regression, as equations in chapters 5-7 are fine.)

John Brewer  May 05, 2014