{"id":29550908,"url":"https://github.com/merteldem1r/opencv-core","last_synced_at":"2026-05-11T07:37:19.629Z","repository":{"id":304066871,"uuid":"1016996648","full_name":"merteldem1r/OpenCV-Core","owner":"merteldem1r","description":"OpenCV course to manipulate images and videos, and detect objects and faces, among other exciting topics.","archived":false,"fork":false,"pushed_at":"2025-07-15T16:02:14.000Z","size":22384,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-07-16T11:27:54.235Z","etag":null,"topics":["computer-vision","opencv","python"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/merteldem1r.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-09T21:30:25.000Z","updated_at":"2025-07-15T16:02:18.000Z","dependencies_parsed_at":"2025-07-16T16:25:38.302Z","dependency_job_id":null,"html_url":"https://github.com/merteldem1r/OpenCV-Core","commit_stats":null,"previous_names":["merteldem1r/opencv-bootcamp","merteldem1r/opencv-core"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/merteldem1r/OpenCV-Core","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merteldem1r%2FOpenCV-Core","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merteldem1r%2FOpenCV-Core/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merteldem1r%2FOpenCV-Core/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merteldem1r%2FOpenCV-Core/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/merteldem1r","download_url":"https://codeload.github.com/merteldem1r/OpenCV-Core/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/merteldem1r%2FOpenCV-Core/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265697906,"owners_count":23813099,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["computer-vision","opencv","python"],"created_at":"2025-07-18T04:01:29.506Z","updated_at":"2026-05-11T07:37:19.624Z","avatar_url":"https://github.com/merteldem1r.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"## OpenCV Core\n\nCore concepts \u0026 implementations of OpenCV library to manipulate images and videos, and detect objects and faces, among other topics.\n\n- **Course**: [OpenCV University](https://opencv.org/university/)\n- **Implemented by**: [Mert Eldemir](https://github.com/merteldem1r)\n\n**NOTE**: To manipulate code and see the results first download the respective images and documents. On each module folder run the `download_assets.py` script\n\n### Module 1: Getting Started With Images\n\n- Reading \u0026 Display images using **opencv** and **matplotlib**\n- Representing images as **numpy arrays** \u0026 **RGB** \u0026 **HSV** format images\n- **cv2**: `imread()` `imwrite()` `cvtColor()` `split()` `merge()`\n\n  - File: [image-handling.ipynb](01-Image-Handling/notebooks/image_handling.ipynb)\n\n### Module 2: Basic Image Manipulation\n\n- **Accessing** \u0026 **Modifying** image pixels\n- **Crop** \u0026 **Resize** \u0026 **Flipping** images\n- **cv2**: `resize()` `flip()`\n\n  - File: [image_manipulation.ipynb](02-Image-Manipulation/notebooks/image_manipulation.ipynb)\n\n### Module 3: Image Annotation\n\n- **Annotating** images\n- Drawing **line**, **circle**, **rectangle** \u0026 Putting **text** on images\n- **cv2**: `line()` `circle()` `rectangle()` `putText()`\n\n  - File: [image_annotation.ipynb](03-Image-Annotation/notebooks/image_annotation.ipynb)\n\n### Module 4: Image Enhancement\n\n- **Brightness** \u0026 **Contrast** \u0026 **Image Thresholding**\n- Difference between **Global** and **Adaptive thresholding**\n- Thresholding Types: **THRESH_BINARY**, **THRESH_BINARY_INV**, **THRESH_TRUNC** etc.\n- Bitwise operations: **AND**, **OR**, **XOR**, **NOT**\n- Applying **Mask** on the background\n- Creating and type casting **numpy arrays**\n- **cv2**: `add()` `subtract()` `multiply()` `threshold()` `adaptiveThreshold()` `bitwise_and()` `bitwise_or()` `bitwise_xor()` `bitwise_not()`\n\n  - File: [image_enhancement.ipynb](04-Image-Enhancement/notebooks/image_enhancement.ipynb)\n\n### Module 5: Accessing and Writing to Camera\n\n- **Accessing** to camera and **Writing video** as **mp4**\n- **cv2**: `VideoCapture()` `VideoWriter()`\n\n  - File: [camera.py](05-Access-Write-Camera/camera.py)\n\n### Module 6: Image Filtering and Edge Detection\n\n- Opening camera via **VideoCapture** and using keyboard to apply different **filters** and **detection functions**\n- **Edge** \u0026 **Corner** \u0026 **Filter (Kernel)** term explanations\n- **Gaussian Blur** \u0026 **Edge Detection** \u0026 **Corner Detection** (Shi-Tomasi)\n- **cv2**: `blur()` `GaussianBlur()` `Canny()` `goodFeaturesToTrack()`\n\n  - File: [detection.py](06-Image-Filtering-and-Edge-Detection/detection.py)\n\n### Module 7: Image Features and Alignment\n\n- Goal is **warping** scanned image to make it look as original reference image (basically align them)\n- Using **Feature-based matching** (ORB) and **Homography** (a 3×3 transformation matrix that maps points from one perspective to another)\n- **KeyPoint** \u0026 **Descriptor** \u0026 **Matching**\n- **Use cases**: Document alignment \u0026 scanning, Panorama stitching, Augmented Reality (placing virtual objects correctly) etc.\n- **cv2**: `ORB_create()` `orb.detectAndCompute()` `drawKeypointss()` `DescriptorMatcher_create()` `drawMatches()` `findHomography()` `warpPerspective()`\n\n  - File: [image_features_alignment.ipynb](07-Image-Features-and-Alignment/notebooks/image_features_alignment.ipynb)\n\n### Module 8: Panorama\n\n- Image allignment and creating **panorama** image\n- **cv2**: `Stitcher_create()` `stitcher.stitch`\n\n  - File: [panorama.ipynb](08-Panorama/notebooks/panorama.ipynb)\n\n### Module 9: HDR\n\n- Idea of **HDR** Images\n- **MTB - Median Threshold Bitmap** (compute the median pixel intensity)\n- **cv2**: `createAlignMTB()` `alignMTB.process()` `createCalibrateDebevec()` `calibrate_debevec.process()` `createMergeDebevec()` `createTonemapDrago()` `createTonemapReinhard()` `createTonemapMantiuk()`\n\n  - File: [hdr.ipynb](09-HDR/notebooks/hdr.ipynb)\n\n### Module 10: Object Tracking\n\n- **Object Detection** vs **Object Tracking**\n- **Object Tracking** steps \u0026 differences on **Deep learning-based models**\n- Tracking libraries like **GOTURN**, **MIL**, **Nano**, **Vit**, **mean shift** etc.\n- **Appearance Model** \u0026 **Motion Model** terms\n- **cv2**: `TrackerMIL()` `TrackerGOTURN()` `TrackerNano()` `dnn.readNet()` `TrackerVit()` `getTickCount()` `getTickFrequency()`\n\n  - File: [tracker.py](10-Object-Tracking/tracker.py)\n  - Notebook File: [hdr.ipynb](10-Object-Tracking/notebooks/object_tracking.ipynb)\n\n### Module 11: Face Detection\n\n- **Real-time face detection** using a **pre-trained deep neural network (DNN)**\n- Loads **Caffe model** via **deploy.prototxt** and **.caffemodel** for inference\n- Converts input frame to **blob** and feeds into the network\n- Performs forward pass to obtain **detection results**\n- Iterates over **4D Numpy output tensor (detections) to extract face boxes**\n- Draws **bounding boxes**, **confidence scores**, and **inference time**\n- **cv2**: `getTextSize()` `dnn.readNetFromCaffe()` `dnn.blobFromImage()` `net.setInput()` `net.forward()` `net.getPerfProfile()`\n\n  - File: [faceDetection.py](11-Face-Detection/faceDetection.py)\n\n### Module 12: TensorFlow Object Detection\n\n- **TensorFlow** Object Detection **manual Setup**\n- Downloading and extracting pre-trained `ssd_mobilenet_v2_coco_2018_03_29.tar.g ` (trained on **COCO dataset**)\n- Using inference file `frozen_inference_graph.p ` with external `tf_text_graph_ssd.py` script to get OpenCV usable `ssd_mobilenet_v2_coco_2018_03_29.pbtx` file\n- Using `coco_class_labels.txt`to clasify found objects\n- Performing **inferenece** using a **OpenCV DNN**\n- Loading the model and input image into memory, detecting objects using a forward pass through the network\n- Display the detected objects with **bounding boxes** and **class labels**\n- **cv2**: `dnn.readNetFromTensorflow()`\n\n  - File: [ts_object_detection.ipynb](12-TensorFlow-Object-Detection/notebooks/ts_object_detection.ipynb)\n\n### Module 13: Pose Estimation using OpenPose\n\n- Using Caffe model trained on the **Multi-Person Image Dataset (MPI)** to demonstrate **human pose estimation for a single person**.\n- Loading **Caffe model**:\n  - **Architecture**: `pose_deploy_linevec_faster_4_stages.prototxt`\n  - **Weights**: `pose_iter_160000.caffemodel`\n- Converting to blog for wrapping image into format that DNN expects\n- Visualizing **probability map (heatmap)** of found body parts\n- Displaying **Body Points** \u0026 **Skeleton** on the input image\n\n  - File: [pose_estimation.ipynb](13-Pose-Estimation-OpenPose/notebooks/pose_estimation.ipynb)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmerteldem1r%2Fopencv-core","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmerteldem1r%2Fopencv-core","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmerteldem1r%2Fopencv-core/lists"}