1
0
mirror of https://github.com/opencv/opencv.git synced 2026-07-31 08:13:04 +04:00

Merge pull request #8253 from adl1995:master

* Update linux_install.markdown

Grammar improvements, fixed typos.

* Update tutorials.markdown

Improvements in grammar.

* Update table_of_content_calib3d.markdown

* Update camera_calibration_square_chess.markdown

Improvements in grammar. Added answer.

* Update tutorials.markdown

* Update erosion_dilatation.markdown

* Update table_of_content_imgproc.markdown

* Update warp_affine.markdown

* Update camera_calibration_square_chess.markdown

Removed extra space.

* Update gpu_basics_similarity.markdown

Grammatical improvements, fixed typos.

* Update trackbar.markdown

Improvement for better understanding.
This commit is contained in:
Adeel Ahmad
2017-03-01 23:44:34 +05:00
committed by Alexander Alekhin
parent da0b1d8821
commit bc7f6fc44c
9 changed files with 102 additions and 102 deletions
@@ -5,7 +5,7 @@ The goal of this tutorial is to learn how to calibrate a camera given a set of c
*Test data*: use images in your data/chess folder.
- Compile opencv with samples by setting BUILD_EXAMPLES to ON in cmake configuration.
- Compile OpenCV with samples by setting BUILD_EXAMPLES to ON in cmake configuration.
- Go to bin folder and use imagelist_creator to create an XML/YAML list of your images.
@@ -14,32 +14,32 @@ The goal of this tutorial is to learn how to calibrate a camera given a set of c
Pose estimation
---------------
Now, let us write a code that detects a chessboard in a new image and finds its distance from the
camera. You can apply the same method to any object with known 3D geometry that you can detect in an
Now, let us write code that detects a chessboard in an image and finds its distance from the
camera. You can apply this method to any object with known 3D geometry; which you detect in an
image.
*Test data*: use chess_test\*.jpg images from your data folder.
- Create an empty console project. Load a test image: :
- Create an empty console project. Load a test image :
Mat img = imread(argv[1], IMREAD_GRAYSCALE);
- Detect a chessboard in this image using findChessboard function. :
- Detect a chessboard in this image using findChessboard function :
bool found = findChessboardCorners( img, boardSize, ptvec, CALIB_CB_ADAPTIVE_THRESH );
- Now, write a function that generates a vector\<Point3f\> array of 3d coordinates of a chessboard
in any coordinate system. For simplicity, let us choose a system such that one of the chessboard
corners is in the origin and the board is in the plane *z = 0*.
corners is in the origin and the board is in the plane *z = 0*
- Read camera parameters from XML/YAML file: :
- Read camera parameters from XML/YAML file :
FileStorage fs(filename, FileStorage::READ);
FileStorage fs( filename, FileStorage::READ );
Mat intrinsics, distortion;
fs["camera_matrix"] >> intrinsics;
fs["distortion_coefficients"] >> distortion;
- Now we are ready to find chessboard pose by running \`solvePnP\`: :
- Now we are ready to find a chessboard pose by running \`solvePnP\` :
vector<Point3f> boardPoints;
// fill the array
@@ -51,4 +51,5 @@ image.
- Calculate reprojection error like it is done in calibration sample (see
opencv/samples/cpp/calibration.cpp, function computeReprojectionErrors).
Question: how to calculate the distance from the camera origin to any of the corners?
Question: how would you calculate distance from the camera origin to any one of the corners?
Answer: As our image lies in a 3D space, firstly we would calculate the relative camera pose. This would give us 3D to 2D correspondences. Next, we can apply a simple L2 norm to calculate distance between any point (end point for corners).
@@ -1,8 +1,7 @@
Camera calibration and 3D reconstruction (calib3d module) {#tutorial_table_of_content_calib3d}
==========================================================
Although we got most of our images in a 2D format they do come from a 3D world. Here you will learn
how to find out from the 2D images information about the 3D world.
Although we get most of our images in a 2D format they do come from a 3D world. Here you will learn how to find out 3D world information from 2D images.
- @subpage tutorial_camera_calibration_square_chess