├── .gitignore
├── CAMERA📷-CALIBARTION
├── camera_calibaration.py
├── capture_calibration_images.py
└── images
│ ├── image0.png
│ ├── image1.png
│ ├── image10.png
│ ├── image11.png
│ ├── image12.png
│ ├── image13.png
│ ├── image14.png
│ ├── image15.png
│ ├── image16.png
│ ├── image17.png
│ ├── image18.png
│ ├── image19.png
│ ├── image2.png
│ ├── image20.png
│ ├── image21.png
│ ├── image22.png
│ ├── image23.png
│ ├── image24.png
│ ├── image25.png
│ ├── image26.png
│ ├── image27.png
│ ├── image28.png
│ ├── image29.png
│ ├── image3.png
│ ├── image30.png
│ ├── image31.png
│ ├── image32.png
│ ├── image33.png
│ ├── image34.png
│ ├── image35.png
│ ├── image36.png
│ ├── image37.png
│ ├── image38.png
│ ├── image39.png
│ ├── image4.png
│ ├── image40.png
│ ├── image41.png
│ ├── image42.png
│ ├── image43.png
│ ├── image44.png
│ ├── image5.png
│ ├── image6.png
│ ├── image7.png
│ ├── image8.png
│ └── image9.png
├── DISTANCE-ESTIMATION
└── distance.py
├── GENERATE_MARKERS
├── main.py
└── markers
│ ├── markder_0.png
│ ├── markder_1.png
│ ├── markder_10.png
│ ├── markder_11.png
│ ├── markder_12.png
│ ├── markder_13.png
│ ├── markder_14.png
│ ├── markder_15.png
│ ├── markder_16.png
│ ├── markder_17.png
│ ├── markder_18.png
│ ├── markder_19.png
│ ├── markder_2.png
│ ├── markder_3.png
│ ├── markder_4.png
│ ├── markder_5.png
│ ├── markder_6.png
│ ├── markder_7.png
│ ├── markder_8.png
│ └── markder_9.png
├── IMAG_AUGMENTATION
├── README.md
└── main.py
├── LICENSE
├── MARKER_DETECTION
└── main.py
├── Pattern_PNG
└── pattern.png
├── README.md
├── calib_data
└── MultiMatrix.npz
├── images
├── augmentation
│ ├── 01-sample.png
│ ├── 02-Resistor.png
│ ├── 03-Battery.png
│ ├── 04-Switch .png
│ ├── 05-Capacitor .png
│ ├── 06-Inductor.png
│ ├── 07-Diode.png
│ ├── 08-LED.png
│ ├── 09-Potentiometer.png
│ ├── 10-LDR.png
│ ├── 11-Transistor.png
│ ├── 12-Switch -Relay.png
│ └── 13-Motor.png
├── images_1.jpg
└── images_2.jpg
└── test
└── test.py
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | build/
12 | develop-eggs/
13 | dist/
14 | downloads/
15 | eggs/
16 | .eggs/
17 | lib/
18 | lib64/
19 | parts/
20 | sdist/
21 | var/
22 | wheels/
23 | pip-wheel-metadata/
24 | share/python-wheels/
25 | *.egg-info/
26 | .installed.cfg
27 | *.egg
28 | MANIFEST
29 |
30 | # PyInstaller
31 | # Usually these files are written by a python script from a template
32 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
33 | *.manifest
34 | *.spec
35 |
36 | # Installer logs
37 | pip-log.txt
38 | pip-delete-this-directory.txt
39 |
40 | # Unit test / coverage reports
41 | htmlcov/
42 | .tox/
43 | .nox/
44 | .coverage
45 | .coverage.*
46 | .cache
47 | nosetests.xml
48 | coverage.xml
49 | *.cover
50 | *.py,cover
51 | .hypothesis/
52 | .pytest_cache/
53 |
54 | # Translations
55 | *.mo
56 | *.pot
57 |
58 | # Django stuff:
59 | *.log
60 | local_settings.py
61 | db.sqlite3
62 | db.sqlite3-journal
63 |
64 | # Flask stuff:
65 | instance/
66 | .webassets-cache
67 |
68 | # Scrapy stuff:
69 | .scrapy
70 |
71 | # Sphinx documentation
72 | docs/_build/
73 |
74 | # PyBuilder
75 | target/
76 |
77 | # Jupyter Notebook
78 | .ipynb_checkpoints
79 |
80 | # IPython
81 | profile_default/
82 | ipython_config.py
83 |
84 | # pyenv
85 | .python-version
86 |
87 | # pipenv
88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
91 | # install all needed dependencies.
92 | #Pipfile.lock
93 |
94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow
95 | __pypackages__/
96 |
97 | # Celery stuff
98 | celerybeat-schedule
99 | celerybeat.pid
100 |
101 | # SageMath parsed files
102 | *.sage.py
103 |
104 | # Environments
105 | .env
106 | .venv
107 | env/
108 | venv/
109 | ENV/
110 | env.bak/
111 | venv.bak/
112 |
113 | # Spyder project settings
114 | .spyderproject
115 | .spyproject
116 |
117 | # Rope project settings
118 | .ropeproject
119 |
120 | # mkdocs documentation
121 | /site
122 |
123 | # mypy
124 | .mypy_cache/
125 | .dmypy.json
126 | dmypy.json
127 |
128 | # Pyre type checker
129 | .pyre/
130 |
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/camera_calibaration.py:
--------------------------------------------------------------------------------
1 | import cv2 as cv
2 | import os
3 | import numpy as np
4 |
5 | # Checker board size
6 | CHESS_BOARD_DIM = (9, 6)
7 |
8 | # The size of Square in the checker board.
9 | SQUARE_SIZE = 14 # millimeters
10 |
11 | # termination criteria
12 | criteria = (cv.TERM_CRITERIA_EPS + cv.TERM_CRITERIA_MAX_ITER, 30, 0.001)
13 |
14 |
15 | calib_data_path = "../calib_data"
16 | CHECK_DIR = os.path.isdir(calib_data_path)
17 |
18 |
19 | if not CHECK_DIR:
20 | os.makedirs(calib_data_path)
21 | print(f'"{calib_data_path}" Directory is created')
22 |
23 | else:
24 | print(f'"{calib_data_path}" Directory already Exists.')
25 |
26 | # prepare object points, like (0,0,0), (1,0,0), (2,0,0) ....,(6,5,0)
27 | obj_3D = np.zeros((CHESS_BOARD_DIM[0] * CHESS_BOARD_DIM[1], 3), np.float32)
28 |
29 | obj_3D[:, :2] = np.mgrid[0 : CHESS_BOARD_DIM[0], 0 : CHESS_BOARD_DIM[1]].T.reshape(
30 | -1, 2
31 | )
32 | obj_3D *= SQUARE_SIZE
33 | print(obj_3D)
34 |
35 | # Arrays to store object points and image points from all the images.
36 | obj_points_3D = [] # 3d point in real world space
37 | img_points_2D = [] # 2d points in image plane.
38 |
39 | # The images directory path
40 | image_dir_path = "images"
41 |
42 | files = os.listdir(image_dir_path)
43 | for file in files:
44 | print(file)
45 | imagePath = os.path.join(image_dir_path, file)
46 | # print(imagePath)
47 |
48 | image = cv.imread(imagePath)
49 | grayScale = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
50 | ret, corners = cv.findChessboardCorners(image, CHESS_BOARD_DIM, None)
51 | if ret == True:
52 | obj_points_3D.append(obj_3D)
53 | corners2 = cv.cornerSubPix(grayScale, corners, (3, 3), (-1, -1), criteria)
54 | img_points_2D.append(corners2)
55 |
56 | img = cv.drawChessboardCorners(image, CHESS_BOARD_DIM, corners2, ret)
57 |
58 | cv.destroyAllWindows()
59 | # h, w = image.shape[:2]
60 | ret, mtx, dist, rvecs, tvecs = cv.calibrateCamera(
61 | obj_points_3D, img_points_2D, grayScale.shape[::-1], None, None
62 | )
63 | print("calibrated")
64 |
65 | print("duming the data into one files using numpy ")
66 | np.savez(
67 | f"{calib_data_path}/MultiMatrix",
68 | camMatrix=mtx,
69 | distCoef=dist,
70 | rVector=rvecs,
71 | tVector=tvecs,
72 | )
73 |
74 | print("-------------------------------------------")
75 |
76 | print("loading data stored using numpy savez function\n \n \n")
77 |
78 | data = np.load(f"{calib_data_path}/MultiMatrix.npz")
79 |
80 | camMatrix = data["camMatrix"]
81 | distCof = data["distCoef"]
82 | rVector = data["rVector"]
83 | tVector = data["tVector"]
84 |
85 | print("loaded calibration data successfully")
86 |
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/capture_calibration_images.py:
--------------------------------------------------------------------------------
1 | import cv2 as cv
2 | import os
3 |
4 | CHESS_BOARD_DIM = (9, 6)
5 |
6 | n = 0 # image_counter
7 |
8 | # checking if images dir is exist not, if not then create images directory
9 | image_dir_path = "images"
10 |
11 | CHECK_DIR = os.path.isdir(image_dir_path)
12 | # if directory does not exist create
13 | if not CHECK_DIR:
14 | os.makedirs(image_dir_path)
15 | print(f'"{image_dir_path}" Directory is created')
16 | else:
17 | print(f'"{image_dir_path}" Directory already Exists.')
18 |
19 | criteria = (cv.TERM_CRITERIA_EPS + cv.TERM_CRITERIA_MAX_ITER, 30, 0.001)
20 |
21 |
22 | def detect_checker_board(image, grayImage, criteria, boardDimension):
23 | ret, corners = cv.findChessboardCorners(grayImage, boardDimension)
24 | if ret == True:
25 | corners1 = cv.cornerSubPix(grayImage, corners, (3, 3), (-1, -1), criteria)
26 | image = cv.drawChessboardCorners(image, boardDimension, corners1, ret)
27 |
28 | return image, ret
29 |
30 |
31 | cap = cv.VideoCapture(0)
32 |
33 | while True:
34 | _, frame = cap.read()
35 | copyFrame = frame.copy()
36 | gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
37 |
38 | image, board_detected = detect_checker_board(frame, gray, criteria, CHESS_BOARD_DIM)
39 | # print(ret)
40 | cv.putText(
41 | frame,
42 | f"saved_img : {n}",
43 | (30, 40),
44 | cv.FONT_HERSHEY_PLAIN,
45 | 1.4,
46 | (0, 255, 0),
47 | 2,
48 | cv.LINE_AA,
49 | )
50 |
51 | cv.imshow("frame", frame)
52 | cv.imshow("copyFrame", copyFrame)
53 |
54 | key = cv.waitKey(1)
55 |
56 | if key == ord("q"):
57 | break
58 | if key == ord("s") and board_detected == True:
59 | # storing the checker board image
60 | cv.imwrite(f"{image_dir_path}/image{n}.png", copyFrame)
61 |
62 | print(f"saved image number {n}")
63 | n += 1 # incrementing the image counter
64 | cap.release()
65 | cv.destroyAllWindows()
66 |
67 | print("Total saved Images:", n)
68 |
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image0.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image1.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image10.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image11.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image12.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image13.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image14.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image15.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image16.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image17.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image17.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image18.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image19.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image2.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image20.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image20.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image21.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image21.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image22.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image22.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image23.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image23.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image24.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image25.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image25.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image26.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image26.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image27.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image27.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image28.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image28.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image29.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image29.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image3.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image30.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image30.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image31.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image31.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image32.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image33.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image33.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image34.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image34.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image35.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image35.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image36.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image36.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image37.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image37.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image38.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image38.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image39.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image39.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image4.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image40.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image41.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image41.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image42.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image42.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image43.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image43.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image44.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image44.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image5.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image6.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image7.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image8.png
--------------------------------------------------------------------------------
/CAMERA📷-CALIBARTION/images/image9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/CAMERA📷-CALIBARTION/images/image9.png
--------------------------------------------------------------------------------
/DISTANCE-ESTIMATION/distance.py:
--------------------------------------------------------------------------------
1 | import cv2 as cv
2 | from cv2 import aruco
3 | import numpy as np
4 |
5 | calib_data_path = "../calib_data/MultiMatrix.npz"
6 |
7 | calib_data = np.load(calib_data_path)
8 | print(calib_data.files)
9 |
10 | cam_mat = calib_data["camMatrix"]
11 | dist_coef = calib_data["distCoef"]
12 | r_vectors = calib_data["rVector"]
13 | t_vectors = calib_data["tVector"]
14 |
15 | MARKER_SIZE = 8 # centimeters
16 |
17 | marker_dict = aruco.Dictionary_get(aruco.DICT_4X4_50)
18 |
19 | param_markers = aruco.DetectorParameters_create()
20 |
21 | cap = cv.VideoCapture(0)
22 |
23 | while True:
24 | ret, frame = cap.read()
25 | if not ret:
26 | break
27 | gray_frame = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
28 | marker_corners, marker_IDs, reject = aruco.detectMarkers(
29 | gray_frame, marker_dict, parameters=param_markers
30 | )
31 | if marker_corners:
32 | rVec, tVec, _ = aruco.estimatePoseSingleMarkers(
33 | marker_corners, MARKER_SIZE, cam_mat, dist_coef
34 | )
35 | total_markers = range(0, marker_IDs.size)
36 | for ids, corners, i in zip(marker_IDs, marker_corners, total_markers):
37 | cv.polylines(
38 | frame, [corners.astype(np.int32)], True, (0, 255, 255), 4, cv.LINE_AA
39 | )
40 | corners = corners.reshape(4, 2)
41 | corners = corners.astype(int)
42 | top_right = corners[0].ravel()
43 | top_left = corners[1].ravel()
44 | bottom_right = corners[2].ravel()
45 | bottom_left = corners[3].ravel()
46 |
47 | # Since there was mistake in calculating the distance approach point-outed in the Video Tutorial's comment
48 | # so I have rectified that mistake, I have test that out it increase the accuracy overall.
49 | # Calculating the distance
50 | distance = np.sqrt(
51 | tVec[i][0][2] ** 2 + tVec[i][0][0] ** 2 + tVec[i][0][1] ** 2
52 | )
53 | # Draw the pose of the marker
54 | point = cv.drawFrameAxes(frame, cam_mat, dist_coef, rVec[i], tVec[i], 4, 4)
55 | cv.putText(
56 | frame,
57 | f"id: {ids[0]} Dist: {round(distance, 2)}",
58 | top_right,
59 | cv.FONT_HERSHEY_PLAIN,
60 | 1.3,
61 | (0, 0, 255),
62 | 2,
63 | cv.LINE_AA,
64 | )
65 | cv.putText(
66 | frame,
67 | f"x:{round(tVec[i][0][0],1)} y: {round(tVec[i][0][1],1)} ",
68 | bottom_right,
69 | cv.FONT_HERSHEY_PLAIN,
70 | 1.0,
71 | (0, 0, 255),
72 | 2,
73 | cv.LINE_AA,
74 | )
75 | # print(ids, " ", corners)
76 | cv.imshow("frame", frame)
77 | key = cv.waitKey(1)
78 | if key == ord("q"):
79 | break
80 | cap.release()
81 | cv.destroyAllWindows()
82 |
--------------------------------------------------------------------------------
/GENERATE_MARKERS/main.py:
--------------------------------------------------------------------------------
1 | import cv2 as cv
2 | from cv2 import aruco
3 |
4 | marker_dict = aruco.Dictionary_get(aruco.DICT_4X4_50)
5 |
6 | MARKER_SIZE = 400 # pixels
7 |
8 | for id in range(20):
9 |
10 | marker_image = aruco.drawMarker(marker_dict, id, MARKER_SIZE)
11 | # cv.imshow("img", marker_image)
12 | cv.imwrite(f"markers/markder_{id}.png", marker_image)
13 | # cv.waitKey(0)
14 | # break
15 |
--------------------------------------------------------------------------------
/GENERATE_MARKERS/markers/markder_0.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/GENERATE_MARKERS/markers/markder_0.png
--------------------------------------------------------------------------------
/GENERATE_MARKERS/markers/markder_1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/GENERATE_MARKERS/markers/markder_1.png
--------------------------------------------------------------------------------
/GENERATE_MARKERS/markers/markder_10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/GENERATE_MARKERS/markers/markder_10.png
--------------------------------------------------------------------------------
/GENERATE_MARKERS/markers/markder_11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/GENERATE_MARKERS/markers/markder_11.png
--------------------------------------------------------------------------------
/GENERATE_MARKERS/markers/markder_12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/GENERATE_MARKERS/markers/markder_12.png
--------------------------------------------------------------------------------
/GENERATE_MARKERS/markers/markder_13.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/GENERATE_MARKERS/markers/markder_13.png
--------------------------------------------------------------------------------
/GENERATE_MARKERS/markers/markder_14.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/GENERATE_MARKERS/markers/markder_14.png
--------------------------------------------------------------------------------
/GENERATE_MARKERS/markers/markder_15.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/GENERATE_MARKERS/markers/markder_15.png
--------------------------------------------------------------------------------
/GENERATE_MARKERS/markers/markder_16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/GENERATE_MARKERS/markers/markder_16.png
--------------------------------------------------------------------------------
/GENERATE_MARKERS/markers/markder_17.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/GENERATE_MARKERS/markers/markder_17.png
--------------------------------------------------------------------------------
/GENERATE_MARKERS/markers/markder_18.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/GENERATE_MARKERS/markers/markder_18.png
--------------------------------------------------------------------------------
/GENERATE_MARKERS/markers/markder_19.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/GENERATE_MARKERS/markers/markder_19.png
--------------------------------------------------------------------------------
/GENERATE_MARKERS/markers/markder_2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/GENERATE_MARKERS/markers/markder_2.png
--------------------------------------------------------------------------------
/GENERATE_MARKERS/markers/markder_3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/GENERATE_MARKERS/markers/markder_3.png
--------------------------------------------------------------------------------
/GENERATE_MARKERS/markers/markder_4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/GENERATE_MARKERS/markers/markder_4.png
--------------------------------------------------------------------------------
/GENERATE_MARKERS/markers/markder_5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/GENERATE_MARKERS/markers/markder_5.png
--------------------------------------------------------------------------------
/GENERATE_MARKERS/markers/markder_6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/GENERATE_MARKERS/markers/markder_6.png
--------------------------------------------------------------------------------
/GENERATE_MARKERS/markers/markder_7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/GENERATE_MARKERS/markers/markder_7.png
--------------------------------------------------------------------------------
/GENERATE_MARKERS/markers/markder_8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/GENERATE_MARKERS/markers/markder_8.png
--------------------------------------------------------------------------------
/GENERATE_MARKERS/markers/markder_9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/GENERATE_MARKERS/markers/markder_9.png
--------------------------------------------------------------------------------
/IMAG_AUGMENTATION/README.md:
--------------------------------------------------------------------------------
1 | # Image Augmentation
2 |
3 |
4 | 
5 |
--------------------------------------------------------------------------------
/IMAG_AUGMENTATION/main.py:
--------------------------------------------------------------------------------
1 | import cv2 as cv
2 | from cv2 import aruco
3 | import numpy as np
4 | import os
5 |
6 |
7 | def image_augmentation(frame, src_image, dst_points):
8 | src_h, src_w = src_image.shape[:2]
9 | frame_h, frame_w = frame.shape[:2]
10 | mask = np.zeros((frame_h, frame_w), dtype=np.uint8)
11 | src_points = np.array([[0, 0], [src_w, 0], [src_w, src_h], [0, src_w]])
12 | H, _ = cv.findHomography(srcPoints=src_points, dstPoints=dst_points)
13 | warp_image = cv.warpPerspective(src_image, H, (frame_w, frame_h))
14 | cv.imshow("warp image", warp_image)
15 | cv.fillConvexPoly(mask, dst_points, 255)
16 | results = cv.bitwise_and(warp_image, warp_image, frame, mask=mask)
17 |
18 |
19 | def read_images(dir_path):
20 | img_list = []
21 | files = os.listdir(dir_path)
22 | for file in files:
23 | img_path = os.path.join(dir_path, file)
24 | image = cv.imread(img_path)
25 | img_list.append(image)
26 | return img_list
27 |
28 |
29 | marker_dict = aruco.Dictionary_get(aruco.DICT_4X4_50)
30 |
31 | param_markers = aruco.DetectorParameters_create()
32 |
33 | images_list = read_images("../images/augmentation")
34 |
35 | cap = cv.VideoCapture(0)
36 |
37 | while True:
38 | ret, frame = cap.read()
39 | if not ret:
40 | break
41 | gray_frame = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
42 | marker_corners, marker_IDs, reject = aruco.detectMarkers(
43 | gray_frame, marker_dict, parameters=param_markers
44 | )
45 | if marker_corners:
46 | for ids, corners in zip(marker_IDs, marker_corners):
47 |
48 | corners = corners.reshape(4, 2)
49 | corners = corners.astype(int)
50 | if ids[0] <= 12:
51 | image_augmentation(frame, images_list[ids[0]], corners)
52 | else:
53 | image_augmentation(frame, images_list[0], corners)
54 | # print(ids, " ", corners)
55 | cv.imshow("frame", frame)
56 | key = cv.waitKey(1)
57 | if key == ord("q"):
58 | break
59 | cap.release()
60 | cv.destroyAllWindows()
61 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2022 Asadullah Dal
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/MARKER_DETECTION/main.py:
--------------------------------------------------------------------------------
1 | import cv2 as cv
2 | from cv2 import aruco
3 | import numpy as np
4 |
5 | marker_dict = aruco.Dictionary_get(aruco.DICT_4X4_50)
6 |
7 | param_markers = aruco.DetectorParameters_create()
8 |
9 | cap = cv.VideoCapture(0)
10 |
11 | while True:
12 | ret, frame = cap.read()
13 | if not ret:
14 | break
15 | gray_frame = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)
16 | marker_corners, marker_IDs, reject = aruco.detectMarkers(
17 | gray_frame, marker_dict, parameters=param_markers
18 | )
19 | if marker_corners:
20 | for ids, corners in zip(marker_IDs, marker_corners):
21 | cv.polylines(
22 | frame, [corners.astype(np.int32)], True, (0, 255, 255), 4, cv.LINE_AA
23 | )
24 | corners = corners.reshape(4, 2)
25 | corners = corners.astype(int)
26 | top_right = corners[0].ravel()
27 | top_left = corners[1].ravel()
28 | bottom_right = corners[2].ravel()
29 | bottom_left = corners[3].ravel()
30 | cv.putText(
31 | frame,
32 | f"id: {ids[0]}",
33 | top_right,
34 | cv.FONT_HERSHEY_PLAIN,
35 | 1.3,
36 | (200, 100, 0),
37 | 2,
38 | cv.LINE_AA,
39 | )
40 | # print(ids, " ", corners)
41 | cv.imshow("frame", frame)
42 | key = cv.waitKey(1)
43 | if key == ord("q"):
44 | break
45 | cap.release()
46 | cv.destroyAllWindows()
47 |
--------------------------------------------------------------------------------
/Pattern_PNG/pattern.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Asadullah-Dal17/Basic-Augmented-reality-course-opencv/2f8a15730a84815d557d5481aee8c1e7ed7cdc3e/Pattern_PNG/pattern.png
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Basic-Augmented-reality-course-opencv
2 |
3 | This is basics Augmented reality course, which is free you can find video tutorial on [AiPhile](https://www.youtube.com/aiphile)
4 |
5 | ## Course Content
6 |
7 | |No: | Topic | status| Tutorial Link
8 | |------|-------|-----|----|
9 | |1|Setting Up Development Environment in VS code (opencv Python) | ✅| [YouTube Video Link](https://youtu.be/5OgY6oCZM_E) |
10 | |2| Introduction to AR and Generating Markers| ✅ | [YouTube Video Link](https://youtu.be/_6x7pDOJkEk) |
11 | |3| Markers Detection| ✅ | [YouTube Video Link](https://youtu.be/P9QZhcteRlU) |
12 | |4| Simple Image Augmentation (**Project 1**)| ✅| [YouTube Video](https://youtu.be/wB4BRWNuJM4)
13 | |5|Camera Calibration| ✅ |[YouTube Video Link](https://youtu.be/JHeNger8B2E) |
14 | |6|3D Pose & Distance Estimation| ✅ | [YouTube Video Link](https://youtu.be/mn-M6Qzx6SE) |
15 | |7| Floating Image View (Place 2D Image In 3D World) (**Project 2**) |pending | Not Available |
16 | |8| Tran-Background Floating Image Viewer (**Project 3**)| pending | Not Available |
17 | |9| AR Digital Clock (**Project 4**)|pending | Not Available |
18 |
19 | Installation Section
21 |
22 |
23 | ⚠️⚠️since OpenCV has updated the function names in the new version, the source code will work specified version ⚠️⚠️.
24 | ### Windows ※
25 | ```bash
26 | pip install opencv-contrib-python==4.5.5.62
27 | ```
28 |
29 | ### Linux🐧 or Mac🍎
30 |
31 | ```bash
32 | pip3 install opencv-contrib-python==4.5.5.62
33 | ```
34 |
35 |
36 |
39 |
40 | ## 💚🖤 Join me on Social Media 🖤💚
41 |
42 |
43 |