Errata
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 |
---|---|---|---|---|
Page p.198 The last paragraph |
> To create a sequence entry, you first provide the string name for the entry, and then the entry itself. |
Kouichi Matsuda | Jun 07, 2017 | |
Printed | 651 | Rotation matrix for Rx Ry and Rz the -/+ sign in front of the sin() term in completely the opposite of conventional definition.Which way of rotation do you define as positive? |
shadow_wxh | Sep 09, 2017 |
Printed | footnote 18 | "(i.e., j \in [0,k-1])" is really not a "that is" enhance of the preceding sentence. I'd just drop it, but maybe it could be changed to something useful. |
Douglas Morgan | Nov 20, 2017 |
ePub | Page Learning Opencv Example About Mahalanobis Distance C++ example code implementation |
cv::Mahalanobis function is consuming inverse Covariance matrix as function parameter, but in the example the inverse is NOT computed, instead original covariance matrix is submitted which is WRONG |
Pavel | Mar 12, 2023 |
Printed | Page 1 last paragraph |
In the Last paragraph of the page |
Xinhua Wen | Mar 23, 2017 |
Page 30 2nd code snippet |
createTrackbar("Position", "Example 2-4", &g_slider_position, frames, onTrackbarSlide); |
Anonymous | Feb 15, 2018 | |
Printed | Page 33 top of page |
"Such sampling introduces high frequencies into the resulting signal (image). To avoid this, we want to first run a high-pass filter over the signal to band-limit its frequencies so that they are all below the sampling frequency." |
Anonymous | Aug 21, 2018 |
Printed | Page 35 last line of Example 2_8 |
Should |
Joel Merritt | Apr 03, 2017 |
Printed | Page 50 last line |
Should the |
Joel Merritt | Apr 03, 2017 |
Printed | Page 69 Exercises |
On p. 69 in question 2.a. |
Joel Merritt | Apr 03, 2017 |
Page 72 2nd paragraph |
( i_0, i_i, ...,i_{N_d-1}) |
Anonymous | Feb 19, 2018 | |
Page 76 Table 4-2. title |
Table 4-2 titled "cv::Mat constructors that copy data from other cv::Mats |
Paul Jurczak | Apr 04, 2020 | |
Page 78 last code snippet |
The first line of the code snippet, |
Anonymous | Feb 20, 2018 | |
ePub | Page 80 Kindle App: code above section "The N-ary Array Iterator: NAryMatIterator |
The code example for computing the L2 Norm using the MatConstIterator needed three items corrected to compile. |
John Nafziger | Mar 22, 2018 |
Page 94 last code snippet |
Does Mat_<T> have a non-template version of 'at' member? |
Anonymous | Jan 26, 2017 | |
Printed | Page 96 Second paragraph from bottom, lines 2-3 |
Should |
Joel Merritt | Apr 04, 2017 |
Page 100 2nd row, 1st column |
cv::arrToMat |
Anonymous | Feb 25, 2018 | |
Printed | Page 105 imshow line of Example 5-1 |
In the last paragraph, it states that "the results are put into src1 and displayed." |
Joel Merritt | Apr 04, 2017 |
Printed | Page 108 First paragraph of text |
It says |
Joel Merritt | Apr 04, 2017 |
Printed | Page 151 1st paragraph |
"if B exists, it is unique". No, it's not, -B works as well. |
Douglas Morgan | Nov 03, 2017 |
Printed | Page 162 Footnote 2 |
Original text: |
Benjamin Crawford | Jul 16, 2019 |
Printed | Page 176 second paragraph |
I think the "lefthand side(x)" in the second paragraph should be "lefthand side (A)" or "lefthand side (U, W, Vt)". The linear system's structure has nothing to do with x. |
Shihao Xu | Nov 01, 2017 |
Printed | Page 176 2nd paragraph |
"same lefthand side (x)". Should be: |
Douglas Morgan | Nov 03, 2017 |
Printed | Page 176 footnote 176 |
There should be a statement that other diagonal elements of diag(W)^{-1} are zero. As written we don't know what the do when \lambda_i < \epsilon. |
Douglas Morgan | Nov 03, 2017 |
Printed | Page 179 3rd pargraph |
1) "covariation" should be "covariance" |
Douglas Morgan | Nov 05, 2017 |
Printed | Page 179 3rd paragraph |
Correction/addition to my previous correction: |
Douglas Morgan | Nov 06, 2017 |
Printed | Page 189 3rd paragraph |
"cv::Mat::empty()==true". Strange mix of static member function notation to describe a situation with a non-static member function. Better would be something like "empty() returns true" or just drop the parenthetical phrase -- it's hardly seems necessary. |
Douglas Morgan | Nov 05, 2017 |
Printed | Page 193 4th paragraph |
"returns true only if grab was successful" should be something like "returns true if grab was successful and false otherwise". As stated, grab could be successful and return false. |
Douglas Morgan | Nov 05, 2017 |
Printed | Page 199 near bottom of page |
The << operator is used on a cv::Mat object. I don't think, but can't search it, that the operator was ever discussed before. Seems like a good thing to introduce if indeed it hasn't been. |
Douglas Morgan | Nov 05, 2017 |
Printed | Page 202 1st paragraph |
"The returned value is an enumerated type..." should be |
Douglas Morgan | Nov 20, 2017 |
Printed | Page 205 Exercise 2 a |
Exercise 2 a. reads "For the program of Exercise 2 . . ." I believe it is actually referring to Exercise 1. |
Anonymous | Jun 06, 2019 |
Page 224 End of section on Affine Transformation |
Possibly add a reference to estimateRigidTransform in the section on getAffineTransform. |
Donald Munro | May 20, 2016 | |
Printed | Page 249 3rd paragraph |
"filters (also called kernels)" I've heard of kernels loosely referred to as filters just as shorthand for the filter implemented when the kernel is used in a cross-correlation filter. However, if asked, no one would ever say that the kernel is the filter or that that filter is the kernel. It would be better to keep the terms separate. The problem may be elsewhere also, so search and modify would be good. |
Doug R Morgan | Nov 06, 2017 |
Printed | Page 250 1st paragraph |
"linear kernels". Do a google search of: |
Douglas Morgan | Nov 05, 2017 |
Printed | Page 250 2nd paragraph |
"convolution, though the term is often used somewhat casually in the computer vision community to include the application of any filter (linear or otherwise) over an entire image" |
Douglas Morgan | Nov 05, 2017 |
Printed | Page 250 2nd paragraph |
"is also known as convolution" No, the filter is a cross-correlation filter. A convolution is different. |
Douglas Morgan | Nov 07, 2017 |
Printed | Page 259 declaration of adaptiveThreshold |
"Example 10-3" Shouldn't that better be "Table 10-2"? The example doesn't cover all the options that the table does. |
Douglas Morgan | Nov 07, 2017 |
Printed | Page 261 Last paragraph on the page |
Grammar problems: |
Anonymous | Jan 05, 2018 |
Printed | Page 266 middle of page |
The definitions of sigma_x and sigma_x each have one too many "-1"'s. n_x and n_y should just be ksize.width and ksize.height, not ksize.width-1 and ksize.height-1. At least browsing the code it looks that way. |
Douglas Morgan | Nov 07, 2017 |
Printed | Page 276 2nd paragraph |
"pixel values covered by the kernel" |
Douglas Morgan | Nov 07, 2017 |
Printed | Page 277 footnote 16 and caption to figure 10-20 |
"under a square kernel" and "under the kernel" Same problem as with "covered by the kernel" on page 276. |
Douglas Morgan | Nov 07, 2017 |
Printed | Page 280 definition of erode and dilate |
"(i,j) \in kernel" So it looks like you are equating kernel and the support of a kernel. Describing this morphology-specific notion of "kernel" seems to have slipped through the cracks. |
Douglas Morgan | Nov 07, 2017 |
Printed | Page 283 figure 10-25 |
In the middle graph, the two outermost non-zero step values should be zero. An erode operation will zero out the boundary pixels. Interestingly, the final graph is OK. |
Douglas Morgan | Nov 07, 2017 |
Printed | Page 284 figure 10-27 |
Opposite problem as figure 10-25 on page 283. Here you need to tack on non-zero pixels on either side of the blob in the middle graph. The heights are taken from the outermost non-zero pixels of the graph on the left. Again, interestingly, the graph on the right is OK. |
Douglas Morgan | Nov 07, 2017 |
Printed | Page 290 table 10-4 |
"Ellipse" should be "Elliptical disk" or "Filled ellipse". |
Douglas Morgan | Nov 07, 2017 |
Printed | Page 291 footnote 20 |
"n^2log(n)" should be n^2log^2(n). |
Douglas Morgan | Nov 07, 2017 |
Printed | Page 293 first heading |
cv::getDerivKernel() should be cv::getDerivKernels(). |
Douglas Morgan | Nov 07, 2017 |
Printed | Page 294 only equation |
The numerator should have "/2" instead of just "2". |
Douglas Morgan | Nov 07, 2017 |
Page 295 top most |
"3. Load an interesting image, and then blur it with cv::smooth() using a Gaussian filter." |
jsxyhelu | Jul 01, 2017 | |
Printed | Page 307 the equatios |
the A \equv ... B\equiv ... string of equations is very difficult to understand at a glance (or even under close inspection). It would be simple to read if extra space or a comma with space were inserted before the B, T, X and X'. |
Douglas Morgan | Nov 07, 2017 |
Printed | Page 307 last paragraph |
"quadrangle". Though Stanford has a nice quadrangle, the right word here is quadrilateral. |
Douglas Morgan | Nov 07, 2017 |
Printed | Page 307 footnote 9 |
"orthogonal" should be "nonsingular". |
Douglas Morgan | Nov 07, 2017 |
Printed | Page 308 figure 10-3 |
"Trapezoids" should be "Quadrilaterals". |
Douglas Morgan | Nov 07, 2017 |
Printed | Page 309 the equation and later |
Three errors: |
Douglas Morgan | Nov 08, 2017 |
Printed | Page 311 last line (a matrix) |
"-(1-alpha)*center_y" should not have the leading "-". |
Douglas Morgan | Nov 08, 2017 |
Printed | Page 312 next to last paragraph (and above) |
"In this case, all the of the third-channel entries must be set to 1 (i.e., the points must be supplied in homogeneous coordinates)." You can just pass in an array of 2 channel and transform() will add the final 1's itself. Further, none of the text leading up to here properly tells you that src can have the same number of channels as mtx.cols or one less than that. |
Douglas Morgan | Nov 08, 2017 |
Printed | Page 313 equation at bottom |
The equation for dst(x,y) is for when cv::WARP_INVERSE_MAP is used. |
Douglas Morgan | Nov 08, 2017 |
Printed | Page 314 3rd paragraph |
"(generally) some rhombus" would not be so jarring as "a quadrilateral (often a rhombus)" |
Douglas Morgan | Nov 08, 2017 |
Printed | Page 315 1st paragraph |
The f's in "(x=f*X/Z,f*Y/Z)" don't belong here. |
Douglas Morgan | Nov 08, 2017 |
Printed | Page 326 3rd paragraph |
"or type cv::U8" should be "of depth cv::8U". The cv:U8 part of the errors has already be noted in the errata. |
Douglas Morgan | Nov 08, 2017 |
Printed | Page 326 3rd paragraph |
Correction to earlier correction. I said: |
Douglas Morgan | Nov 12, 2017 |
Page 344 3rd paragraph |
Using these integral images, you may calculate sums, means, and standard deviations |
Anonymous | Feb 08, 2018 | |
Page 352 |
12-7 The Canny edge detector (param1=50, param2=150) is run first, with the results shown in gray, and the progressive probabilistic Hough transform (param1=50, param2=10) is run next, with the results overlaid in white; you can see that the strong lines are generally picked up by the Hough transform](../images/ch12/fig12-7.png) |
Kouichi Matsuda | Oct 04, 2017 | |
Page 359 1st paragraph |
The content of the Figure 12-9 is incorrect. It should be the image of Figure 6-21 in the previous version of this book. |
Kouichi Matsuda | Apr 06, 2017 | |
Page 376 1st paragraph |
The following paragraph should be deleted(it might come from the previous version). OpenCV3 does not have a data type for representing histograms. It's just an array. |
Kouichi Matsuda | May 07, 2017 | |
Page 400 The last two lines |
In the last two expressions. When calculating the number of pixels. It should be changed to read 'w·h' instead of 'w-h'. |
Jianfeng Liu | Oct 11, 2018 | |
Page 419 top most |
1、when i use |
Anonymous | Aug 26, 2017 | |
Printed | Page 425, 762 whole subsections on fitline |
There are two full descriptions of fitline. Both have nearly identical tables, etc. |
Douglas Morgan | Nov 08, 2017 |
Printed | Page 428 6th paragraph |
The original text about the return value of function cv::pointPolygonTest() is |
Wei Ren | Aug 28, 2017 |
Printed | Page 430 1st paragraph and footnote10 |
"the result is the length of the contour" and all of footnote 10 are wrong. The opencv documentation says: |
Douglas Morgan | Nov 12, 2017 |
Page 430 footnote 10 |
Should cv::Array be cv::Mat? |
Anonymous | Apr 03, 2018 | |
Printed | Page 435 Table 14-4 |
The algorithm given for |
Dave Watts | Apr 05, 2017 |
Printed | Page 435 declaration of cv::MatchShapes |
This uses: cv:U8C1 instead of CV_8UC1. The single : makes it a slightly different typo than in earlier errata. Possibly something different to search for. |
Douglas Morgan | Nov 13, 2017 |
Printed | Page 436 bottom |
class ShapeContextDistanceExtractor : public ShapeDistanceExtractor { |
Douglas Morgan | Nov 13, 2017 |
Printed | Page 438 last paragraph |
"method" should be "class" |
Douglas Morgan | Nov 13, 2017 |
Printed | Page 447 footnote2 |
"Here we are using mathematician's definition of compact," |
Douglas Morgan | Nov 14, 2017 |
Printed | Page 485 declaration of apply |
"apply()(" should be "apply(". |
Douglas Morgan | Nov 15, 2017 |
Printed | Page 487 last paragraph |
"Here, the second constructor ..." There is only one constructor (and that is only some sort-of-constructor-like function). The talk of two constructors continues to the end of the paragraph. |
Douglas Morgan | Nov 15, 2017 |
Printed | Page 498 2nd paragraph and footnote 3 |
"These equations form a linear systems that can be solved by inversion of a single autocorrelation matrix. In practice, this matrix is not always invertible owing to small eigenvalues arising from pixels very close to p." |
Douglas Morgan | Nov 16, 2017 |
Printed | Page 501-503 whole thing |
The section "How Lucas Kanade works" is off in multiple ways. It can be considerably simplied so that most of the problematic parts just disappear. The main problem is that there is no reason to ever introduce \partial f/ \partial t, its chain rule expansion, any discussion of \partial I / \partial t, or, in fact, any discussion of time. All you are trying to do is find the unknown fixed shift, h, that has been applied to a known function, I(x), to give the also known function I'(x) = I(x-h) (equivalently, I'(x + h) = I(x)). For a given x0, just solve the equation I'(x0 + h') = I(x0) for h' (hopefully getting h' = h). By definition of I', we know \partial I'(x) / \partial x evaluated at x0 + h is the same as \partial I(x) / \partial x evaluated at x0. Now we have all that is necessary to do the semi-Newton's method solution for h'. Much more simple and direct. Also, in the 1-D case all the partials are regular derivatives. |
Douglas Morgan | Nov 17, 2017 |
Printed | Page 503 1st paragraph |
"This is known as Newton's method." No, in Newton's method, the derivative is computed at the current guess. Here, the derivative is magically available (through assumptions) at the true solution. The two algorithms are very similar, but not the same. |
Douglas Morgan | Nov 17, 2017 |
Printed | Page 503-505 distributed |
The unnecessary introduction of time and time derivatives of the 1D case of pages 501-503 continues on in the 2D case. |
Douglas Morgan | Nov 18, 2017 |
Printed | Page 508 cv::OPTFLOW_LK_GET_MIN_EIGENVALS description |
"average per-pixel change" should be something like |
Douglas Morgan | Nov 18, 2017 |
Printed | Page 518r 4th paragraph |
Probably you ought to explicitly say here (or somewhere) that whenever a function uses an associated keypoint vector and descriptor matrix that keypoint i goes with matrix row i. A reader should certainly guess that this would be true, but good to say it anyway. |
Douglas Morgan | Nov 20, 2017 |
Printed | Page 520-523 multiple places |
In at least seven places what could or should be "descriptor" is instead the incorrect "keypoint" or the OK but long "keypoint descriptor". Just check each usage of keypoint to be sure it is what you really want. |
Douglas Morgan | Nov 20, 2017 |
Printed | Page 528 1st paragraph |
"following autocorrelation function, for". No, it is not an autocorrelation. It is true that two of the four indexes x, y, delta x, and delta y have the same pattern as seen in a real autocorrelation and that one term in expanding the square is an autocorrelation. But neither of those make it an autocorrelation. You could just say something like "following function defined using". |
Douglas Morgan | Nov 20, 2017 |
Printed | Page 529,531,532 multiple places |
Now "autocorrelation" is applied to matrix that has absolutely nothing to do with autocorrelation. The matrix M is matrix of 2nd moments (assuming the w_{i,j} are greater than zero, sum to one, and are to be treated as a probability mass function). Maybe "M" is for "Moments"? I don't know. "autocorrelation" in this context shows up at least eight times. |
Douglas Morgan | Nov 20, 2017 |
Printed | Page 540 1st paragraph |
"If a pixel has a higher value in the" |
Douglas Morgan | Nov 21, 2017 |
Printed | Page 544 2nd paragraph |
The discussion of nOctaveLayer is a bit confusing. 1) It is the first mention of an image pyramid, but that is referred to as "the image pyramid" as though it had already been discussed somewhere. Probably good to bring it in earlier. 2) nOctaveLayer is defined as "how many layers..." and right after that the definition is contradicted with nOctaveLayers now being "how many layers..." minus 3. It would be better to say something like: "nOctaveLayers is the number of DoG layers per octave in which extreme values are found. Two extra DoG layers sandwich these so that full 3x3x3 regions are always tested. To generate these nOctaveLayer+2 DoG layers, the algorithm needs to compute nOctaveLayer+3 smoothed images per octave. |
Douglas Morgan | Nov 25, 2017 |
Printed | Page 545 2nd paragraph |
"must be a reference to an STL-style vector" |
Douglas Morgan | Nov 25, 2017 |
Printed | Page 545 2nd paragraph |
"should always be of type CV_8U" |
Douglas Morgan | Nov 25, 2017 |
Printed | Page 553 2nd and 3rd paragraphs |
"autocorrelation" in three places. These refer back to a section where autocorrelation was used in two distinct ways (nether of which actually was an autocorrelation) so it is hard (though probably possible) to pin down what the word is now referring to. Some rewording would probably help. |
Douglas Morgan | Nov 25, 2017 |
Printed | Page 562 2nd paragraph |
"gradients (they are divided by their mean) that give the orientation of the gradient direction" |
Douglas Morgan | Nov 25, 2017 |
Printed | Page 581 1st paragraph |
"radius" should be "diameter". Try it or read the source to see. |
Douglas Morgan | Nov 06, 2017 |
Printed | Page 582 1st paragraph |
"The second form is just a convenience, which is useful when you want to visualize the response to many different match computations at once." |
Douglas Morgan | Nov 25, 2017 |
Printed | Page 595 declaration of createOptFlow_DualTVL1 |
The return type can't be a Ptr to DenseOpticalFlow if the user is expected to set member data in OpticalFlowDual_TVL1. The user would have to downcast and a library writer would never require that. |
Douglas Morgan | Nov 25, 2017 |
Printed | Page 595 last paragraph |
"...arguments to the create function" |
Douglas Morgan | Nov 25, 2017 |
Printed | Page 615 1st paragraph and footnote 18 |
The use of "model" for the state is highly nonstandard. Almost always, model refers to the coefficients of the Kalman filter. Further, the first use of model only makes sense if it refers to the estimated mean. Later uses make more sense if they refer to the mean and covariance. So, "model" ought to be swapped out for mean and covariance (as appropriate) of the a posteriori state distribution. |
Douglas Morgan | Nov 26, 2017 |
Printed | Page 616 2nd and 3rd paragraphs |
In just these paragraphs, "state" is used incorrectly. "State" is never used to mean the combination of mean and covariance (though it is the state of the Kalman filter equations, that potential usage is never used). Better to stick with mean and covariance. Just to better see the problem, the last line of pg 616 says: "the state at time k multiplied by some matrix F". If the state were the mean and covariance, that would make no sense. If the state is just the mean state or the mean (like it really means here), it does make sense. |
Douglas Morgan | Nov 26, 2017 |
Printed | Page 617 last paragraph |
"It turn out this product is another Gaussian distribution" |
Douglas Morgan | Nov 26, 2017 |
Printed | Page 617 2nd paragraph |
Again, "the model that has the highest probability of being correct" is just wrong. The Kalman filter computes the correct distribution, period, no probability of being correct is involved. The mean maximizing that distribution is something different. |
Douglas Morgan | Nov 26, 2017 |
Printed | Page 624 last equation |
Two errors in the equation for \vec{x_k^-}: |
Douglas Morgan | Nov 27, 2017 |
Printed | Page 625 4th equation |
The \vec{x_k} is missing the star superscript that distinguishes the true state from the estimated mean. |
Douglas Morgan | Nov 27, 2017 |
Printed | Page 626 Set of equations at top |
\vec{x_k} is missing the star superscript. |
Douglas Morgan | Nov 27, 2017 |
Printed | Page 633,634 4th paragraph to end of EKF section, including footnote 27 |
The discussion of the EKF completely misses the important idea that the regular KF applies to small offsets from a nominal trajectory. You need to introduce separate variable for the nominal trajectory with something like an \vec{X_k^\star} and \vec{X_k^-} that update like: |
Douglas Morgan | Nov 27, 2017 |
Printed | Page 643 last paragraph and equation |
r with a overhead arrow is defined as a row vector in the text and then used as a column vector in the equation for R. Some transposing is needed somewhere. |
Douglas Morgan | Nov 08, 2017 |
Page 646 2d and 4d paragraph |
The result of the formula is not corrected coordinates but distorted coordinates. |
Jose Angel | Jul 07, 2020 | |
Printed | Page 650-652 whole subsection |
I suggest you take a shot at completely rewriting the "Rotation Matrix and Translation Vector" section. Here is list of some of the problems with the section: |
Douglas Morgan | Nov 08, 2017 |
Printed | Page 662 footnote 29 and s'es it refers to |
I cannot see how the s referred to in the footnote is the product of other s'es. To me it looks like the equation of [x y 1]^T sets it's s, call it s', to a specific value. Suppose the equation for H uses that same s', then the s in the equation for \vec{q} would have to be 1.0. Suppose the equation for H used a different arbitrary s, call it s'', the the s in the equation for \vec{q} would have to be s'/s''. Or you could not require the 3rd component of \vec{q} to be 1 and then the final s could be anything. |
Douglas Morgan | Nov 09, 2017 |
Printed | Page 665 2nd paragraph |
"Scaling the homography could be applied to the ninth homography parameter, ..." I have no idea what this could mean. I would think you would always just scale the whole matrix. Is that right? |
Douglas Morgan | Nov 09, 2017 |
Printed | Page 669,670 multiple places |
Without checking, I think you may have used equations from a source paper that allowed some skew terms without modifying them for your case without skew. Just a guess though. Why would I think that?: |
Douglas Morgan | Nov 09, 2017 |
Printed | Page 669 lat paragraph (not the "and:") |
"..if K>=2 then this equation can be solved..." That should be K>=3 since V is 2Kx6. You need to at least get to 6x6. |
Douglas Morgan | Nov 09, 2017 |
Printed | Page 670 2nd paragraph |
"\lambda -1/...." should be "\lambda = 1/..." |
Douglas Morgan | Nov 09, 2017 |
Printed | Page 670 footnote 33 |
"This is mainly due to precision errors." |
Douglas Morgan | Nov 09, 2017 |
Printed | Page 671 1st paragraph |
The fx, fy, cx, and cy should be removed from the 1st equation on printed page 671. That is, xp = XW / ZW, yp = YW / ZW. |
Vincent Yang | Oct 18, 2018 |
Printed | Page 671 Second equation |
The (xp, yp) on the left side of the equation needs to be replaced by (x_d, y_d). The (x_d, y_d) on the right side of the equation needs to be replaced by (X_w,/Z_w, Y_w/Z_w) because the distortion is not a function of the actual image position but a function of the point calculated from the linear projection.Then, the distorted point is multiplied by the focal length, and you add c_x and c_y to these values just like the first equation of the P.671 does. |
Takuma Nakamura | Jan 18, 2019 |
Printed | Page 677 function prototype & 3rd paragraph |
|
Seunghoon Jung | Jun 26, 2017 |
Printed | Page 677 end of "Computing extrinsics only with cv::solvePnPRansac()" section |
Nobody (e.g., OpenCV documentation) seems to mention that the rvec and tvec computed by solvePnPRansac are just from some selection of 4 points and that this is a *bad* thing. If you want accurate r rvec and tvec, after running solvePnPRansac, you must run the inliers through solvePnP (or do something similar). Otherwise, there is all sorts of unnecessary noise in rvec and tvec.. |
Douglas Morgan | Nov 09, 2017 |
Printed | Page 677 footnote 39 |
"The default value of reprojectionError corresponds to an average distance of sqrt(2) between each of these oints and its corresponding reprojection." No, it is the max allowed reprojection error for a point to make it into the inliers. |
Douglas Morgan | Nov 09, 2017 |
Printed | Page 678,679 whole "Undistortion Maps" section |
The entire section is written under a misunderstanding of how distortion maps are represented. The text and figure 18-18 are all definite that a map's pixel represents a location in the destination image. This is not the case. Each map pixel tells where in the source image you should go to find the value to put in the destination image at the same pixel index as the map. |
Douglas Morgan | Nov 10, 2017 |
Printed | Page 680 1st paragraph |
"in any of four formats ... into any of the others" No, it doesn't convert between the floating formats nor between the two formats with CV_16SC2 for map1. |
Douglas Morgan | Nov 10, 2017 |
Printed | Page 689 Last line. |
"overfitting" It might better be known as "ignoring prior uncertainties". |
Douglas Morgan | Nov 10, 2017 |
Printed | Page 692,693 declaration of projectPoints and 2nd paragraph pg 693 |
The comments in the declaration say: |
Douglas Morgan | Nov 10, 2017 |
Printed | Page 694 1st paragraph |
"trapezoid" should be "quadrilateral". |
Douglas Morgan | Nov 10, 2017 |
Printed | Page 700-702 various |
A paragraph and a footnote are approximately repeated. The 2nd paragraph on pg 700 is like the 2nd one of pg 702. Footnotes 7 and 9 are similar. |
Douglas Morgan | Nov 10, 2017 |
Printed | Page 710 4th bullet |
"We'll now summarize some facts .... |
Douglas Morgan | Nov 10, 2017 |
Page 711 2nd paragraph |
Let’s pick one set of coordinate systems, left or right, to work in and do our calcula‐ |
Kouichi Matsuda | Sep 30, 2017 | |
Page 712 2nd paragraph |
The equation states p_r = R * (P_l - T) . Correctwise it should be a capital P_r, because the equation transforms the world point w.r.t the coordinate frame of the left camera to the frame of the right camera. |
Matthias | Jul 15, 2019 | |
Page 713 2nd equation |
There is a typo in the first row of the S-matrix. The matrix is skew-symmetric, so -T_x must be -T_z. |
Matthias | Jul 15, 2019 | |
Page 716 |
Example 19-2. Computing the fundamental matrix using RANSAC |
Kouichi Matsuda | Sep 30, 2017 | |
Page 721 3rd paragraph |
> void cv::computeCorrespondEpilines( |
Kouichi Matsuda | Sep 30, 2017 | |
Page 733 3 |
Hi, I’m been reading the LearningOpenCV and I have meet technical question which I really need help. |
Anonymous | Mar 25, 2021 | |
Page 755/756 Bottom of 755, beginning of 756 in call to cv::stereoCalibrate |
Call to stereoCalibrate has lasttwo parameters inverted (showsTermCriteria then flags whereas http://docs.opencv.org/trunk/d9/d0c/group__calib3d.html#ga246253dcc6de2e0376c599e7d692303a and source code shows thereverse, i.e., flags then TermCriteria). |
mpapini | Jun 18, 2017 | |
Page 793 Paragraph 2 |
In Example 20-1, we mentioned briefly the possibility that the data might be arranged in the space in a highly asymmetrical way. |
Anonymous | Feb 20, 2017 | |
Page 801 2nd paragraph |
The methods of cv::StatModel provide mechanisms for reading and writing... |
Anonymous | Feb 20, 2017 | |
Page 803 Paragraphs 2 & 3 |
layout = cv::ml::ROW_SAMPLE |
Anonymous | Feb 20, 2017 | |
Page 806 Para 3 |
... what exactly is going on inside of cv::ml::TrainData::create() if cv::ml::Train |
Anonymous | Feb 21, 2017 | |
Page 807 3rd para |
Finally, the third “shuffle” method will randomly assign the train and test vectors (while keeping the number of each fixed). |
Anonymous | Feb 21, 2017 | |
Page 809 Footnote 8 |
The var_idx parameter you used with train()... |
Anonymous | Feb 21, 2017 | |
Page 811 2nd para |
In our case, the node O can take values “face,” “car,” or “flower,”... |
Anonymous | Feb 21, 2017 | |
Page 820 3rd para |
The whole description of the structure TreeParams is wrong. There's no such structure in OpenCV. Parameters are set directly for DTree object. |
Anonymous | Feb 21, 2017 | |
Page 821 Footnote 16 |
one needs to try 2N – 2 subsets... |
Anonymous | Feb 21, 2017 | |
Printed | Page 860 final sentence of the page |
refers to both item being well inside class 1 and class 2 with the same equation of x . w + b > = +1. I believe that the strongly inside class 2 equation should be x . w + b <= -1. |
dean | Apr 26, 2017 |
Page 889 1st para |
For asymmetric data, the “trick” of flipping an image on its vertical axis was described previously in the subsection “Rejection cascades” on page 880. |
Anonymous | Feb 27, 2017 | |
Page 927 The last para |
The function calcVoronoi() is a protected member function, so it cannot be called directly. Is it so neccessary to mention it at all when describing public API? |
Anonymous | Mar 01, 2017 | |
Page 929 Para 3 and later |
...*edge will contain one of edges of the facet. |
Anonymous | Mar 02, 2017 |