├── Code and Data ├── 01_Introduction to images │ ├── FundamentalsOfCV.ipynb │ ├── albert-einstein_gray.jpg │ ├── albert-einstein_gray_modified.jpg │ ├── albert-einstein_gray_opencv.jpg │ ├── images │ │ ├── albert-einstein_gray.jpg │ │ ├── albert-einstein_gray_modified.jpg │ │ ├── albert-einstein_gray_opencv.jpg │ │ └── tulips.jpg │ └── tulips.jpg ├── 02_2D_Scaling_transformations │ └── 02_b_2D geometric transformations (1).ipynb ├── 03_2D geometric transformations │ ├── 02_b_2D geometric transformations (1).ipynb │ ├── albert-einstein_gray.jpg │ └── tulips.jpg ├── 05_BinaryMorphology │ └── 03_a_Binary_Morphology.ipynb ├── 07_CannyEdgeDetector │ ├── 04_a_EdgeDetection.ipynb │ └── images │ │ ├── 1.jpg │ │ ├── 2.jpg │ │ ├── 3.jpg │ │ ├── E.png │ │ ├── albert-einstein_Affine_warped.jpg │ │ ├── albert-einstein_Projective_warped.jpg │ │ ├── albert-einstein_gray.jpg │ │ ├── albert-einstein_gray_modified.jpg │ │ ├── albert-einstein_gray_opencv.jpg │ │ ├── c.jpeg │ │ ├── c2.jpg │ │ ├── c3.jpg │ │ ├── c4.png │ │ ├── c5.jpg │ │ ├── c6.png │ │ ├── cc.jpg │ │ ├── cm.jpg │ │ ├── image_stitching_opencv_scottsdale.jpg │ │ ├── j.png │ │ ├── shapes.png │ │ ├── stitched.jpg │ │ └── tulips.jpg ├── 08_ShapeDetection │ ├── 4_b_ShapeDetection.ipynb │ └── images │ │ ├── 1.jpg │ │ ├── 2.jpg │ │ ├── 3.jpg │ │ ├── E.png │ │ ├── Ec.png │ │ ├── albert-einstein_Affine_warped.jpg │ │ ├── albert-einstein_Projective_warped.jpg │ │ ├── albert-einstein_gray.jpg │ │ ├── albert-einstein_gray_modified.jpg │ │ ├── albert-einstein_gray_opencv.jpg │ │ ├── c.jpeg │ │ ├── c2.jpg │ │ ├── c3.jpg │ │ ├── c4.png │ │ ├── c5.jpg │ │ ├── c6.png │ │ ├── cc.jpg │ │ ├── cm.jpg │ │ ├── image_stitching_opencv_scottsdale.jpg │ │ ├── j.png │ │ ├── shapes.png │ │ ├── stitched.jpg │ │ └── tulips.jpg ├── 09_ShapeDetection_HoughTransform │ ├── 4_c_ShapeDetection_HT.ipynb │ └── images │ │ ├── 1.jpg │ │ ├── 2.jpg │ │ ├── 3.jpg │ │ ├── E.png │ │ ├── Ec.png │ │ ├── albert-einstein_Affine_warped.jpg │ │ ├── albert-einstein_Projective_warped.jpg │ │ ├── albert-einstein_gray.jpg │ │ ├── albert-einstein_gray_modified.jpg │ │ ├── albert-einstein_gray_opencv.jpg │ │ ├── c.jpeg │ │ ├── c2.jpg │ │ ├── c3.jpg │ │ ├── c4.png │ │ ├── c5.jpg │ │ ├── c6.png │ │ ├── cc.jpg │ │ ├── cm.jpg │ │ ├── image_stitching_opencv_scottsdale.jpg │ │ ├── j.png │ │ ├── shapes.png │ │ ├── stitched.jpg │ │ └── tulips.jpg ├── 10_CornerDetection │ ├── 5_a_CornerDetection.ipynb │ └── images │ │ ├── 1.jpg │ │ ├── 2.jpg │ │ ├── 3.jpg │ │ ├── E.png │ │ ├── Ec.png │ │ ├── albert-einstein_Affine_warped.jpg │ │ ├── albert-einstein_Projective_warped.jpg │ │ ├── albert-einstein_gray.jpg │ │ ├── albert-einstein_gray_modified.jpg │ │ ├── albert-einstein_gray_opencv.jpg │ │ ├── c.jpeg │ │ ├── c2.jpg │ │ ├── c3.jpg │ │ ├── c4.png │ │ ├── c5.jpg │ │ ├── c6.png │ │ ├── cc.jpg │ │ ├── cm.jpg │ │ ├── image_stitching_opencv_scottsdale.jpg │ │ ├── j.png │ │ ├── shapes.png │ │ ├── stitched.jpg │ │ └── tulips.jpg ├── 11_Automatic_panorama_SIFT │ ├── 5_b_Automatic_Panorama.ipynb │ └── images │ │ ├── 1.jpg │ │ ├── 2.jpg │ │ ├── 3.jpg │ │ ├── E.png │ │ ├── Ec.png │ │ ├── albert-einstein_Affine_warped.jpg │ │ ├── albert-einstein_Projective_warped.jpg │ │ ├── albert-einstein_gray.jpg │ │ ├── albert-einstein_gray_modified.jpg │ │ ├── albert-einstein_gray_opencv.jpg │ │ ├── c.jpeg │ │ ├── c2.jpg │ │ ├── c3.jpg │ │ ├── c4.png │ │ ├── c5.jpg │ │ ├── c6.png │ │ ├── cc.jpg │ │ ├── cm.jpg │ │ ├── image_stitching_opencv_scottsdale.jpg │ │ ├── j.png │ │ ├── shapes.png │ │ ├── stitched.jpg │ │ └── tulips.jpg ├── 12_Object_Detection │ ├── 6_a_object_detection_persons.ipynb │ └── images │ │ ├── 1.jpg │ │ ├── 2.jpg │ │ ├── 3.jpg │ │ ├── E.png │ │ ├── Ec.png │ │ ├── albert-einstein_Affine_warped.jpg │ │ ├── albert-einstein_Projective_warped.jpg │ │ ├── albert-einstein_gray.jpg │ │ ├── albert-einstein_gray_modified.jpg │ │ ├── albert-einstein_gray_opencv.jpg │ │ ├── c.jpeg │ │ ├── c2.jpg │ │ ├── c3.jpg │ │ ├── c4.png │ │ ├── c5.jpg │ │ ├── c6.png │ │ ├── cc.jpg │ │ ├── cm.jpg │ │ ├── image_stitching_opencv_scottsdale.jpg │ │ ├── j.png │ │ ├── od.jpeg │ │ ├── p.jpg │ │ ├── p2.jpeg │ │ ├── p3.jpg │ │ ├── p4.jpg │ │ ├── shapes.png │ │ ├── stitched.jpg │ │ └── tulips.jpg ├── 13_ImageFiltering │ └── 03_b_imagefiltering.ipynb ├── 14_YOLO_objectDetector │ ├── 6_b_YOLO_object_detector.ipynb │ └── images │ │ ├── 1.jpg │ │ ├── 2.jpg │ │ ├── 3.jpg │ │ ├── E.png │ │ ├── Ec.png │ │ ├── a.jpg │ │ ├── albert-einstein_Affine_warped.jpg │ │ ├── albert-einstein_Projective_warped.jpg │ │ ├── albert-einstein_gray.jpg │ │ ├── albert-einstein_gray_modified.jpg │ │ ├── albert-einstein_gray_opencv.jpg │ │ ├── c.jpeg │ │ ├── c2.jpg │ │ ├── c3.jpg │ │ ├── c4.png │ │ ├── c5.jpg │ │ ├── c6.png │ │ ├── cc.jpg │ │ ├── cm.jpg │ │ ├── image_stitching_opencv_scottsdale.jpg │ │ ├── j.png │ │ ├── od.jpeg │ │ ├── p.jpg │ │ ├── p2.jpeg │ │ ├── p3.jpg │ │ ├── p4.jpg │ │ ├── shapes.png │ │ ├── stitched.jpg │ │ └── tulips.jpg └── 15_Object_tracking │ ├── TrackingMultipleObjects.ipynb │ ├── TrackingSingleObject.ipynb │ └── data │ └── mot.mp4 ├── LICENSE ├── README.md └── Slides └── CV.pptx /Code and Data/01_Introduction to images/albert-einstein_gray.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/01_Introduction to images/albert-einstein_gray.jpg -------------------------------------------------------------------------------- /Code and Data/01_Introduction to images/albert-einstein_gray_modified.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/01_Introduction to images/albert-einstein_gray_modified.jpg -------------------------------------------------------------------------------- /Code and Data/01_Introduction to images/albert-einstein_gray_opencv.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/01_Introduction to images/albert-einstein_gray_opencv.jpg -------------------------------------------------------------------------------- /Code and Data/01_Introduction to images/images/albert-einstein_gray.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/01_Introduction to images/images/albert-einstein_gray.jpg -------------------------------------------------------------------------------- /Code and Data/01_Introduction to images/images/albert-einstein_gray_modified.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/01_Introduction to images/images/albert-einstein_gray_modified.jpg -------------------------------------------------------------------------------- /Code and Data/01_Introduction to images/images/albert-einstein_gray_opencv.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/01_Introduction to images/images/albert-einstein_gray_opencv.jpg -------------------------------------------------------------------------------- /Code and Data/01_Introduction to images/images/tulips.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/01_Introduction to images/images/tulips.jpg -------------------------------------------------------------------------------- /Code and Data/01_Introduction to images/tulips.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/01_Introduction to images/tulips.jpg -------------------------------------------------------------------------------- /Code and Data/03_2D geometric transformations/albert-einstein_gray.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/03_2D geometric transformations/albert-einstein_gray.jpg -------------------------------------------------------------------------------- /Code and Data/03_2D geometric transformations/tulips.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/03_2D geometric transformations/tulips.jpg -------------------------------------------------------------------------------- /Code and Data/07_CannyEdgeDetector/images/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/07_CannyEdgeDetector/images/1.jpg -------------------------------------------------------------------------------- /Code and Data/07_CannyEdgeDetector/images/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/07_CannyEdgeDetector/images/2.jpg -------------------------------------------------------------------------------- /Code and Data/07_CannyEdgeDetector/images/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/07_CannyEdgeDetector/images/3.jpg -------------------------------------------------------------------------------- /Code and Data/07_CannyEdgeDetector/images/E.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/07_CannyEdgeDetector/images/E.png -------------------------------------------------------------------------------- /Code and Data/07_CannyEdgeDetector/images/albert-einstein_Affine_warped.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/07_CannyEdgeDetector/images/albert-einstein_Affine_warped.jpg -------------------------------------------------------------------------------- /Code and Data/07_CannyEdgeDetector/images/albert-einstein_Projective_warped.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/07_CannyEdgeDetector/images/albert-einstein_Projective_warped.jpg -------------------------------------------------------------------------------- /Code and Data/07_CannyEdgeDetector/images/albert-einstein_gray.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/07_CannyEdgeDetector/images/albert-einstein_gray.jpg -------------------------------------------------------------------------------- /Code and Data/07_CannyEdgeDetector/images/albert-einstein_gray_modified.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/07_CannyEdgeDetector/images/albert-einstein_gray_modified.jpg -------------------------------------------------------------------------------- /Code and Data/07_CannyEdgeDetector/images/albert-einstein_gray_opencv.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/07_CannyEdgeDetector/images/albert-einstein_gray_opencv.jpg -------------------------------------------------------------------------------- /Code and Data/07_CannyEdgeDetector/images/c.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/07_CannyEdgeDetector/images/c.jpeg -------------------------------------------------------------------------------- /Code and Data/07_CannyEdgeDetector/images/c2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/07_CannyEdgeDetector/images/c2.jpg -------------------------------------------------------------------------------- /Code and Data/07_CannyEdgeDetector/images/c3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/07_CannyEdgeDetector/images/c3.jpg -------------------------------------------------------------------------------- /Code and Data/07_CannyEdgeDetector/images/c4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/07_CannyEdgeDetector/images/c4.png -------------------------------------------------------------------------------- /Code and Data/07_CannyEdgeDetector/images/c5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/07_CannyEdgeDetector/images/c5.jpg -------------------------------------------------------------------------------- /Code and Data/07_CannyEdgeDetector/images/c6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/07_CannyEdgeDetector/images/c6.png -------------------------------------------------------------------------------- /Code and Data/07_CannyEdgeDetector/images/cc.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/07_CannyEdgeDetector/images/cc.jpg -------------------------------------------------------------------------------- /Code and Data/07_CannyEdgeDetector/images/cm.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/07_CannyEdgeDetector/images/cm.jpg -------------------------------------------------------------------------------- /Code and Data/07_CannyEdgeDetector/images/image_stitching_opencv_scottsdale.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/07_CannyEdgeDetector/images/image_stitching_opencv_scottsdale.jpg -------------------------------------------------------------------------------- /Code and Data/07_CannyEdgeDetector/images/j.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/07_CannyEdgeDetector/images/j.png -------------------------------------------------------------------------------- /Code and Data/07_CannyEdgeDetector/images/shapes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/07_CannyEdgeDetector/images/shapes.png -------------------------------------------------------------------------------- /Code and Data/07_CannyEdgeDetector/images/stitched.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/07_CannyEdgeDetector/images/stitched.jpg -------------------------------------------------------------------------------- /Code and Data/07_CannyEdgeDetector/images/tulips.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/07_CannyEdgeDetector/images/tulips.jpg -------------------------------------------------------------------------------- /Code and Data/08_ShapeDetection/images/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/08_ShapeDetection/images/1.jpg -------------------------------------------------------------------------------- /Code and Data/08_ShapeDetection/images/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/08_ShapeDetection/images/2.jpg -------------------------------------------------------------------------------- /Code and Data/08_ShapeDetection/images/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/08_ShapeDetection/images/3.jpg -------------------------------------------------------------------------------- /Code and Data/08_ShapeDetection/images/E.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/08_ShapeDetection/images/E.png -------------------------------------------------------------------------------- /Code and Data/08_ShapeDetection/images/Ec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/08_ShapeDetection/images/Ec.png -------------------------------------------------------------------------------- /Code and Data/08_ShapeDetection/images/albert-einstein_Affine_warped.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/08_ShapeDetection/images/albert-einstein_Affine_warped.jpg -------------------------------------------------------------------------------- /Code and Data/08_ShapeDetection/images/albert-einstein_Projective_warped.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/08_ShapeDetection/images/albert-einstein_Projective_warped.jpg -------------------------------------------------------------------------------- /Code and Data/08_ShapeDetection/images/albert-einstein_gray.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/08_ShapeDetection/images/albert-einstein_gray.jpg -------------------------------------------------------------------------------- /Code and Data/08_ShapeDetection/images/albert-einstein_gray_modified.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/08_ShapeDetection/images/albert-einstein_gray_modified.jpg -------------------------------------------------------------------------------- /Code and Data/08_ShapeDetection/images/albert-einstein_gray_opencv.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/08_ShapeDetection/images/albert-einstein_gray_opencv.jpg -------------------------------------------------------------------------------- /Code and Data/08_ShapeDetection/images/c.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/08_ShapeDetection/images/c.jpeg -------------------------------------------------------------------------------- /Code and Data/08_ShapeDetection/images/c2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/08_ShapeDetection/images/c2.jpg -------------------------------------------------------------------------------- /Code and Data/08_ShapeDetection/images/c3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/08_ShapeDetection/images/c3.jpg -------------------------------------------------------------------------------- /Code and Data/08_ShapeDetection/images/c4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/08_ShapeDetection/images/c4.png -------------------------------------------------------------------------------- /Code and Data/08_ShapeDetection/images/c5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/08_ShapeDetection/images/c5.jpg -------------------------------------------------------------------------------- /Code and Data/08_ShapeDetection/images/c6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/08_ShapeDetection/images/c6.png -------------------------------------------------------------------------------- /Code and Data/08_ShapeDetection/images/cc.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/08_ShapeDetection/images/cc.jpg -------------------------------------------------------------------------------- /Code and Data/08_ShapeDetection/images/cm.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/08_ShapeDetection/images/cm.jpg -------------------------------------------------------------------------------- /Code and Data/08_ShapeDetection/images/image_stitching_opencv_scottsdale.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/08_ShapeDetection/images/image_stitching_opencv_scottsdale.jpg -------------------------------------------------------------------------------- /Code and Data/08_ShapeDetection/images/j.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/08_ShapeDetection/images/j.png -------------------------------------------------------------------------------- /Code and Data/08_ShapeDetection/images/shapes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/08_ShapeDetection/images/shapes.png -------------------------------------------------------------------------------- /Code and Data/08_ShapeDetection/images/stitched.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/08_ShapeDetection/images/stitched.jpg -------------------------------------------------------------------------------- /Code and Data/08_ShapeDetection/images/tulips.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/08_ShapeDetection/images/tulips.jpg -------------------------------------------------------------------------------- /Code and Data/09_ShapeDetection_HoughTransform/4_c_ShapeDetection_HT.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import cv2\n", 10 | "import matplotlib.pyplot as plt\n", 11 | "import numpy as np" 12 | ] 13 | }, 14 | { 15 | "cell_type": "code", 16 | "execution_count": 2, 17 | "metadata": {}, 18 | "outputs": [], 19 | "source": [ 20 | "def f_getExtents(a,b,numRows,numCols):\n", 21 | " r1 = int(0)\n", 22 | " c1 = int(a*r1+b)\n", 23 | " r2 = int(numRows-1)\n", 24 | " c2 = int(a*r2+b)\n", 25 | " return (c1,r1),(c2,r2)" 26 | ] 27 | }, 28 | { 29 | "cell_type": "code", 30 | "execution_count": 11, 31 | "metadata": {}, 32 | "outputs": [], 33 | "source": [ 34 | "def f_houghLines(E):\n", 35 | " angles = np.deg2rad(np.arange(360))\n", 36 | " numRows , numCols = E.shape[0] , E.shape[1]\n", 37 | " dMax = int((numRows**2 + numCols**2)**0.5)\n", 38 | " H = np.zeros((dMax,len(angles)))\n", 39 | " idx = np.argwhere(E)\n", 40 | " r , c = idx[:,0] , idx[:,1]\n", 41 | " for i in range(len(r)):\n", 42 | " for ang in angles:\n", 43 | " ri,ci = r[i] , c[i]\n", 44 | " di = int(ri*np.cos(ang) + ci*np.sin(ang))\n", 45 | " if di > 0 and di < dMax:\n", 46 | " H[di,int(np.rad2deg(ang))] += 1\n", 47 | " return H" 48 | ] 49 | }, 50 | { 51 | "cell_type": "code", 52 | "execution_count": 12, 53 | "metadata": {}, 54 | "outputs": [], 55 | "source": [ 56 | "E = cv2.imread(r'C:\\Users\\DeLL\\Desktop\\ML\\CV\\images\\E.png',cv2.IMREAD_GRAYSCALE)" 57 | ] 58 | }, 59 | { 60 | "cell_type": "code", 61 | "execution_count": 13, 62 | "metadata": {}, 63 | "outputs": [ 64 | { 65 | "data": { 66 | "text/plain": [ 67 | "(0, 255, dtype('uint8'))" 68 | ] 69 | }, 70 | "execution_count": 13, 71 | "metadata": {}, 72 | "output_type": "execute_result" 73 | } 74 | ], 75 | "source": [ 76 | "E.min(),E.max(),E.dtype" 77 | ] 78 | }, 79 | { 80 | "cell_type": "code", 81 | "execution_count": 14, 82 | "metadata": {}, 83 | "outputs": [], 84 | "source": [ 85 | "E = E>100" 86 | ] 87 | }, 88 | { 89 | "cell_type": "code", 90 | "execution_count": 15, 91 | "metadata": {}, 92 | "outputs": [ 93 | { 94 | "data": { 95 | "text/plain": [ 96 | "" 97 | ] 98 | }, 99 | "execution_count": 15, 100 | "metadata": {}, 101 | "output_type": "execute_result" 102 | }, 103 | { 104 | "data": { 105 | "image/png": "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reLSpUtau6jQCJPJxMMPP0xsbKxtVHLHjh1taZJOMI//7S+zZ89hGYvFYrv1euONN2SdOnWkl5eXHDFihPz4449lixYttL5lUnYXLDo6Wo4fP166ubnZyurXry+HDBmiuW/KtDchhHz11VflwIEDbXO/N27cWL7zzjsyLCxMc//u0JwrW8bV1ZXOnTvTsWNH5s6dy4EDB4iKiqJr164UFBSwbt06tm/fzrVr12rKZYWdoNPpGD58ON988w3nzp2zlY8ePZrFixfX5nm+FWUwmUw89dRTXL58mXnz5lFcXEyDBg1o1aoVx48fd+SBbZW23B1G3HU6Hd7e3rRv357AwEB27NjB4cOHiYiI4IEHHuD48eMcPXqUQ4cOKVGvRbRv355WrVoxefJkW1lcXBxBQUGsXbtWQ88U9obJZGL48OGcPHmS+fPnU1xcjKurK48++igLFy501Bi8Y4dlgoOD5eTJk+WcOXNkYmKi9PT0lDExMfLvf/+7nDhxooyKitL61kiZBubi4iLHjRtXbs4fs9ksJ0+eLH19fTX3T5n9mRBCJiYmygEDBthCNDExMXLKlCm2gU8OZo4XljEYDLRo0YLOnTvj5+fHp59+SkpKCr179yYhIYELFy7w7bffcu7cOTWPei2la9eu5Ofn226phRD0798fNzc35syZo7F3CnvFZDKRmJhIVlYW8+bNQ0pJXFwcvXv3Zv369axbt05rF28FxxnEZDKZiI6Opn///rRp04Z169bxf//3f5hMJl5++WXMZjPTp0/nww8/5OzZs0rYaykRERE0atSILVu22MoeeOABmjdvzrx58zT0TGHvXL16lTlz5hAcHEybNm0AOHjwIPPnz6dz587OM9BJ65BM2bBMTEyMnDlzppwwYYJs3ry59PDwkP3795cfffSRnDhxooyJidH6FkiZHZirq6ucMGFCudCLXq+XkydPVt8RZVU2g8Egx40bJ++9915bWfv27R1tumD7ns/d09NTTpgwQU6dOlXGxcVJb29vOXr0aPnFF1/IAQMGSHd3d1t8TJmyHj16yF69epUra9eunXzqqaekXq/X3D9ljmMhISFyxowZMiEhwVbWsmVLRxJ4+xb3gIAAGR4eLqOiomSvXr3k1KlT5RNPPCG9vLy0fuOU2Zk1btxY9u3bt9yffUBAgJw1a5b09vbW3D9ljmchISHy448/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\n", 106 | "text/plain": [ 107 | "
" 108 | ] 109 | }, 110 | "metadata": { 111 | "needs_background": "light" 112 | }, 113 | "output_type": "display_data" 114 | } 115 | ], 116 | "source": [ 117 | "plt.imshow(E,cmap='gray')" 118 | ] 119 | }, 120 | { 121 | "cell_type": "code", 122 | "execution_count": 16, 123 | "metadata": {}, 124 | "outputs": [ 125 | { 126 | "data": { 127 | "text/plain": [ 128 | "((499, 1153), dtype('bool'))" 129 | ] 130 | }, 131 | "execution_count": 16, 132 | "metadata": {}, 133 | "output_type": "execute_result" 134 | } 135 | ], 136 | "source": [ 137 | "E.shape,E.dtype" 138 | ] 139 | }, 140 | { 141 | "cell_type": "code", 142 | "execution_count": 17, 143 | "metadata": {}, 144 | "outputs": [], 145 | "source": [ 146 | "H = f_houghLines(E)" 147 | ] 148 | }, 149 | { 150 | "cell_type": "code", 151 | "execution_count": 33, 152 | "metadata": {}, 153 | "outputs": [], 154 | "source": [ 155 | "idx = np.argwhere(H==H.max())\n", 156 | "best_d,best_theta = idx[0,0] , idx[0,1]" 157 | ] 158 | }, 159 | { 160 | "cell_type": "code", 161 | "execution_count": 34, 162 | "metadata": {}, 163 | "outputs": [ 164 | { 165 | "data": { 166 | "text/plain": [ 167 | "(346, 25)" 168 | ] 169 | }, 170 | "execution_count": 34, 171 | "metadata": {}, 172 | "output_type": "execute_result" 173 | } 174 | ], 175 | "source": [ 176 | "best_d,best_theta" 177 | ] 178 | }, 179 | { 180 | "cell_type": "code", 181 | "execution_count": 35, 182 | "metadata": {}, 183 | "outputs": [], 184 | "source": [ 185 | "theta = np.deg2rad(best_theta)\n", 186 | "a = -(1/np.tan(theta))\n", 187 | "b = best_d/np.sin(theta)" 188 | ] 189 | }, 190 | { 191 | "cell_type": "code", 192 | "execution_count": 36, 193 | "metadata": {}, 194 | "outputs": [ 195 | { 196 | "data": { 197 | "text/plain": [ 198 | "(-2.1445069205095586, 818.7057477707644)" 199 | ] 200 | }, 201 | "execution_count": 36, 202 | "metadata": {}, 203 | "output_type": "execute_result" 204 | } 205 | ], 206 | "source": [ 207 | "a,b" 208 | ] 209 | }, 210 | { 211 | "cell_type": "code", 212 | "execution_count": 37, 213 | "metadata": {}, 214 | "outputs": [ 215 | { 216 | "data": { 217 | "text/plain": [ 218 | "" 219 | ] 220 | }, 221 | "execution_count": 37, 222 | "metadata": {}, 223 | "output_type": "execute_result" 224 | }, 225 | { 226 | "data": { 227 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAC0CAYAAABvy2xQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO2dd3hUVfrHP2dKJpPeQ0JC6C0IhCpFAekqCAqCDUHsgoiiwgpYWQQUXBVcRdefutYVBMVCLwtSBJTeBUIJoQYSasr7++NOZhNJqAl3ZnI+z/N9ZubMnTvvnWS+c+57z3mPEhE0Go1G41tYzA5Ao9FoNCWPNneNRqPxQbS5azQajQ+izV2j0Wh8EG3uGo1G44Noc9doNBofpNTMXSnVSSm1RSm1XSk1tLTeR6PRaDTno0pjnLtSygpsBdoDe4HfgLtEZGOJv5lGo9FozqO0eu5NgO0i8qeInAO+Am4rpffSaDQazV8oLXMvD+wp8Hivq02j0Wg01wBbKe1XFdFWKP+jlHoYeNj1sGEpxaG5BOx2O5GRkRw4cAAAf39/QkJCOHjw4Hnb2mw2nE4nmZmZOBwObDYbIsK5c+fIyclxbxceHo5SiqysLLKzsxERLBYLdrsdgJycHPLy8grFkJiYyNGjR8nIyHC3iwhKKaxWK1artVAs2dnZhfZR0kRHRxMQEMCBAwc4e/bsec/b7XYsFkuRz/kiAUA4EI3xZd4JnDA1opLF39+fuLg4Dh06REhICBaL0ffNzc3FZrO5/9eUUiil2Lt3L9e6fItSioiICI4cOZLfdFhEoovatrTMfS+QWOBxArC/4AYi8gHwAYBSShe4MZEbb7yRXbt2uR9nZ2czaNAgvvrqK9atW+duL1++vLt99erVhIaGcvfdd3PixAk+++yzQvvMysoiPDyclJQU4uPjqV27Nr///jvbt2/H39+f+Ph4zp07597e4XBw6tQpqlSp4v6RsNlsJCUl8eeff3Ls2DGysrLc2wcHB5OcnExiYiIigtPp5MyZMxw9epTFixezd+9ejh07dlWfS4UKFbBarezevbvI5wv+mPkqViAFGATcChwGfgLeB7Iu8LprRdOmTdmxYweHDx++4n1ERkYyZMgQpkyZwu7du8nKyuLMmTMEBAQQGBiI3W4nMzOT06dPA5CXl0eDBg3o3r07s2fPZtOmTSV1OBdFRLj77rv5888/yczMZNGiRUX/c1J65v4bUE0pVQnYB/QG7i6l99JcJefOneP48ePux35+fqxZs4b4+Hi3uYeGhtKzZ0/ef/99duzYAcDhw4eZN28egYGBZGdnF9pndnY2Bw8edPf+ly9fTrt27di9ezcxMTEopZg3b95FY/P39+fMmTNFPvfHH38QFRWFxWIhMzOToKAgUlJSqF+/PidOnLhqc1+1atUFn/fmonuRkZG0aNGCU6dOkZWVxbJlywo9HwC0wfjidgHSgVeAz4Hzz+fMwWq1EhMTw4oVKwgODiY3N5dTp05d1j7CwsJo2LAhU6dOZeXKle72nJwcTpw4wYkTRZ+bLFu2jI0bNxb7fGmyb98+QkJCuPnmm1m0aFGx25VKzl1EcoABwExgE/CNiGwojffSXDlKKYKDgzl9+jQJCQmA8aV/8cUXqVq1KpGRke5te/Xqxf79+93GDkYPZu3atSxduvSi77V//37WrFlDu3btqFatGitWrLikGIszdjBOl9PT00lLSyMrK4sDBw7w888/89lnnxXb29YYhjZy5EgOHjzI6tWr6dKlCw6HAzBMvTvwM/A1UBN4FbgBmEDJG7vNZiMkJISQkBD8/f2NGAICCAkJQamisrsQFBRE+fLladCgAc2bN6d69eq89tprxMXFXdZ7+/v7069fPyIiIli9evVlx26GsQNs2LCBatWqFfv55FNaPXdE5CeMMziNh3LfffcRHh7OkiVL2Lx5M2AYdmpqKpmZmVSoUIH4+Hj279/Prl273NtcKWvWrGHNmjUlEbrmCrHb7TzyyCPMnz/f3VtftHAh18XEkLxnDw9gXABbrRT3iTATuLy+8MXJ71R07tyZFi1asGDBAtLT0wkLC+P6669n37592O12t+FbLBZsNhtHjx5l7dq1VK9enQULFpCTk8OGDRtISUnhs88+K9TxuBTOnDnDW2+95XVnYKmpqezYsYO9e/decLtSGed+ueic+7XHz8+PN954g19++YWAgAC+/fZbAEJCQnjnnXdYunQphw4dIiIigsWLF5OSksJXX31VqhcwzSI0NJSsrCxyc3PNDqXUufPOOwkODubjjz8mLy+PGODx4GCe8vfHmZXFxqAgVjRsyOeHD7OoQJriaggICMDpdFK5cmWcTid169Zl9+7dHDt2jNTUVFJTUwGwWCwEBgZy+vRplFIkJyeza9cu8vLycDgcJCQk8NBDD/HCCy9cdcrN24mKiiI3N5djx46tEpFGRW1Taj13jWeTnZ3Npk2bqF27Nlu3bnW3nz59mqlTp+J0OpkzZw41a9bE398fpZTX9XAuBX9/fwYMGMCECRMuO1/raeT3iLOyshCR8/5e4eHhtGrVimcGD6Z6Xh5dgf5AbGYmP2Rm8nO1ajR5+GFWrlnDktmzSyQmu93Oo48+SkhICDt37uTkyZN88sknZGZmnrdtXl5eofY//vij0PNnzpxhwoQJZd7YgUu6gKx77mUUu93O8OHDmTt37gUvyiQmJtKyZUtWrlzJtm3brmGE14YePXoQGxvLxIkTzQ7lqoiKimLQoEHs3LmTpKQk/P392b9/P9nZ2dhsNhYtWkTPO+4gY+lSkn76iTuBc8Bc4B3gd8D3z1t8kmJ77trcfZD8IVynT592Dx+02+2Eh4dTs2ZNlFJUqFCBgwcPMnPmzIvuz2q1+mTKIiwsjC5duvDDDz8UGlvvbURGRvLkk0+68842mw2r1UpCQgJ2u53qSUncWq4cHQ4fJvDHHzklwsfARxhjln0v0VamKBtpGT8/P7NDOI/8CTxXi1LKPQEIjHHeYWFhREVF4XQ6C22blJREUlISv//+OwsXLiQqKopy5crRsWNHtm7dSq1atRARvvvuu0t6b180doCBAwcyd+5crzZ2gBtuuIEZM2awfft2wPify87OZs/27dwAPLRpE62VIjsmhndE+BBINTVizbXAq83dz8+Pe++9l9jYWCwWS6FZZZ5AXl4eaWlpTJ8+nZ07d17Sa5RShIaGopQiLCyMHj16YLPZsNlsBAcHu3PfCxcuZPv27Wzbts09uSKfJUuW0LlzZ5o1a0ZISAgrV67kzJkzzJ07l+7du2OxWJg8eXKhSUFljfz8dMFJWt6Iv78/NpuN3377zd0WhjF08RGgFUYFv6esVhoOGsQrI0aQ46M/1prCeIS5W61WKlWq5H588ODBIseQRkdHExoaSmJiIgkJCdSoUYMdO3bwySefkJeXx+HDhz2ul5mUlESXLl3IzMw8L7aMjIzzZjnm5eVx4sQJRITs7Gy++OIL9/T+o0ePus8CijsbaNiwIddffz1z5sxh1qxZhcaJx8bGYrfbGTx48HmTjsoa0dHROJ3O834YvQWn00nr1q1Zs2YNgYGBgGHqdwADgcrARozJJt8BJ0Ww7t6NMyCgyIuZGt/DI3LuMTExcs8997gfnz179rwxqxaLhRo1aqCUIjU1lX379nHq1Ck2bNjg8cPznE4nycnJhWqj5OXlsWHDhhIboaGUom7duvTv35/XXnutyLowNWvWxOFw6LHmQJ8+fUhNTWXBggVmh3JFBAUFMXHiRB5/7DHuatECZs/mCaAqMA94C1gGFPzpSk5OJjAw8JInkGm8Au+6oGqxWIqcfZWXl+eTw/GulrCwMJ5//nl+++03Zs2aVabTLZeKN/fawajM92zPntT+9Ve6HD2KnD7NYuAfwBKMkTBFvs5Hh7SWYbzL3DWXx5133snu3btZvny52aFoShkbUAuj5suDNhvR4eFMDwxk2K5d7ABKI9nmq6OlfISyMVqmrHLw4EGfHIOu+R82jLIAg4BblOKM3c7X2dmsq1mTxLZtiZw9m81LlpT4+9rtdvr27cvkyZNLfN+ay8NqtVK7dm0CAwPdZ18X6tBpc/dyLBYL0dHRXj+cryxjt9vJyck5L11isVgIAurn5fEYhqmr8uXZc+ut3Pf99+RERXFH+/Y4HI6LFr6y2+1YrVb3e+Tl5ZGdnY3FYnEPIc7JycFisbhLMSul6NSpE9HRRZYL11xjmjdvTp06dfjmm28uKbWmzd2LcTqd9OnTp9AvucZzqVixIhkZGWRkZODn50fLli2xWq1kZmZSq1Yt7HY78+fPZ9u2bUQHBPBy06bctG4d8YcPswcYFxzM3vr1WbZwIXszM+nXowdvvvkmzZo14/nnn+fIkSMcOHCAzMxMTp06xdKlS6lUqRJ33HEH4eHhzJo1i9DQUDIzMwkJCaFWrVrk5eWxcuVK8vLyqFOnDps3b+a6667D4XC4Tf/1118394PTALB7924yMjIKLtRxQXTOvZTJr3Q3e/bsEs9bNmzYkOjoaObPn19mVgPyFv6apy5fvjyNGzcmJSWFlStXunvJIsKKFSs4ffo0EeHh3FirFlEbNtA7PZ36wNLcXN4CFgLHi3kvp9NJSEgIYWFhlCtXjuDgYPdKV5GRkWzcuJGdO3cWGl7scDgICwvj7NmzZGRkoJQiMDCQkydPEhkZ6e7lZ2RkFFpUJSEhgePHj+vhlCaQmJhIaGgo69evL9hc9i6oWq1WLBYL2dnZxU5uysnJISsrC4vFQuXKlQsV4wkPDyc0NPSC75Ffv6PglyYyMpLg4GDAGK7WtWtXpk2bxq+//lpCR6bxRKxWK8HBwVgsFipUqECbNm34+OOPOXHiBM2bN+fuu+9mypQpLFq0qMg5BuWAPsAjFguxSrHCZeqzKTyc0UxsNhsjRoxgzJgxXl9kzRu5XHP32bRMixYtePLJJ1myZAkhISHMmjXrvG0yMzNZv349IkJgYGCh3OKxY8dIT0+/4HvEx8fTvXt3Tpw44a51fuTIEffr0tPTefXVV3Uvx0eJjY2lbdu27rVf169fj1KKzMxMPv30U/r06YOIsGnTpiLL1FqAJKAnxmLCEcC0vDwmAeuB4pcpMYf8GdLa2M0hMjLysiYf+mTP3WKx8PLLL5OamkpYWBjTp08vVNa2JOnduzd79uxhSSmMVNCYh9PpxGazERYWRr169QqlJvJp0qQJq1evZu3atRw8ePC8bQICAsjNzT0vZWYBagNPALe7Hs/AqM64hkuvztiuXTs2btzI/v37L77xRQgNDSUoKKjImeERERHY7XYqVKiAiDB//vyrfj/N5eFwOOjRowdTpkz56+pkZaPnrpTC4XBQs2ZNDh06xNKlS+nUqZN7CTGNOSil8Pf3L/K6QERExHkF3ywWC/Hx8Zw8eZJjx44RExNDYGAg/v7+bN68maNHj2K328nKyjpvdnL+yvTFxREREUFGRga5ubnk5eUREBBAw4YNyc3NxW63IyLk5OTQqFEjypUrR0ZGBgsXLmTVqlXnXbSeO3fuBa+j/LWH68BYtu4xoAfGAtPvAl8Au7i8krtRUVEcP36cwYMHM3LkyKuekOXv788999xDWFjYec8FBgayZ88eMjIymDJlylW9j+bKyM7O5qeffrrgspN/xSt77vlLbxWkevXqdOnShVOnTvHLL7+wdetWGjduzK5du6hWrRoLFy4s0Zjz0T3387FYLO71MJOTk7nrrrvYsGEDlSpVKvRDKyLMnTuXAwcOFHp9Xl4e+/fvJygoiLCwMPLy8ti7dy+JiYnExMTQpk0bcnNz8fPzIy0trZDBBwcHEx4eXmRcubm5rFq1ikaNGmG329m6dSubN2/GbrezYsUKsrOzUUphs9k4efLkeXV/rhQH0BoYDDQFMoB/ubTvCvdZrlw5Bg0aRHp6OpmZmXz00UclEisY36WOHTuilCIgIICYmBgcDgfp6emMGjVKT2jyLLy3526z2YiMjEQpRWJiIs2aNWPjxo2Fck9nzpwhJiaG9957r8hiXJpLQylFVFRUoRo4ANWqVSvUo8vvaReXe83Ly3P3MCwWC2PHjuXgwYPn7Rcocnx3PkeOHCm00HV+znrBggWICH5+fiQkJBTqqWdmZl5wlZqcnBymTZuGxWJh9OjRbNy4EafTyfHjxY1FuXKCgebAU0BLjJXin8S4SHrgAq+7FA4cOMCePXvcZaAbNWrEyhJaFi8tLY2ZM2ficDjcZaKVUlSrVk0PufUiLmruSql/AbcCB0WkjqstAmNx9IoYZ5R3isgx13PDMFbvygWeFJGLrwbhwm63ExAQQHR0NEopnE4nDRo0ICEhgdzcXHbt2sXy5cs9app9Xl6eR5UZBiM/l2/Uf631no/dbicqKor09HRCQkLc9eFr16593hd427ZthSZJZWZmsmzZsss6RQRKrMBb/o/36dOnr2hmbn7H4MyZMyQlJZGWllYicYHxAxkO9BThcaASsBl4FPgeKMlL65MnT2bAgAGEhITw4IMPsn///hLJv2dmZroHAaxbt47ExERuvfVWli1bRlRUVJFF6TSex6X03P8PIzX4aYG2ocBcEXldKTXU9fh5pVRtjLIXyUA8MEcpVV1ELnoe17x5c+699162bdvGjz/+SF5eHkeOHOGLL74o8mKWp7Bu3To6duzI+vXrizX5/IJnVquVEydOuGuJA8TExHDbbbdhs9nIzMxkypQpxMbG0rFjxyL3l5GRwbx587j11luLXJxEKUVQUBDnzp1j2rRpxfZIT548ye7du4mNjWXnzp3uL/PUqVOv9KPwOvKHytapU4c5c+Zc1b4UUDMigicrVKDdli3Enj7NbIxUzG+UrKnnk52dzbvvvsuIESNYvXo1w4cP57XXXisRgy/I/v37yczMJDo6mujoaG3uXsIl5dyVUhWBGQV67luA1iKSppSKAxaISA1Xrx0RGe3abibwkogsvdD+LRaLjB49mvHjx3Po0KErOvWLjY11j0t3OBzYbDYSExNZuXJlqebcnU4nzZo14/Tp08X2TCMjI8nKyuLs2bNuU88308zMTI4ePQoYoytiY2PJy8sjNTW1yM8hfzGP4soN5ObmcuTIkSIXSNYUJiUlhXr16rFgwQJ27dp1RftQGL3zh4E+djvhSvHzuXNMwCi5ey2q5kdGRjJy5Eg2bNhA/fr1S8XgW7VqRa1atUhLS3Nf0zh58iTr1q0jNzeXPXv2uM/k6tevT1JSEsHBwXTs2JFff/2V//znP5e0qLPmsrm6SUxFmHuGiIQVeP6YiIQrpd4FlonIv13tHwE/i8i3F9m/PPfcc/z++++cPHmS7OxswsPDOXfuHMHBwaSlpeF0OgkNDeXQoUMEBgYWWnIOjMUX8v/pzp49y6FDh1BKsXTpUqpXr15q5q4pm9gwcpIPYkw+io2OZmNKCj9HRjLiq684e41/WK+FwYNxppmYmAgYk/Tq1KlDcHAwJ06cYMeOHYgIDzzwAJMnTyYwMJC4uDjOnDnDpk2bOH78uPssQFNiFGvu7h7ehYTxf7y+wOOMvzx/zHU7Ebi3QPtHwB3F7PNhYKVLopSSwMBACQ0NlaioKLFareJ0OiUsLEwSEhKkf//+EhYWJhEREeJwOMRisRQScJ4aNWok/v7+MmDAAHE4HEVuo6V1ObKBtAD5BuQQSE5UlBx74AH56tVXJSkxUVwjv0xRZGSk/OMf/5CHH35YJk2aJPHx8dfsvfO/h/7+/lK+fHmJj48/T02bNpX77ruv2O+r1hVpZbG+fYXmvgWIc92PA7a47g8DhhXYbibQ7BL2f9GD6NSp0xV/AI888ojUqVPH7D+ClhfLH6Q5yNcgx0Fya9SQ1Oeek6e6dpXaNWuK1Wo1PUYw1+C1TFGx5n6lwzy+B+533b8fmF6gvbdSyqGUqgRUA67pml5KKSwWi1tgVFNr3rw5NpvHj/zUeBhBGCME5gA/AzfFxDC/fXv+1rIld8ybx3szZ7Jx82aPGft95MgRXnnlFRo3bsy0adMYPnw48fHxZoelMYFLGQr5JcYcjCil1F7gReB14BulVH8gFaM8BiKyQSn1DcbavDnAE5cyUqYksNvtxMbGcueddxIXF+dumzt3LnPnzmXgwIFERkZetF6MRgMQCnTGWBzjOmBNQAA/33orEd2789KYMfwxe7a5AV6AI0eOMGnSJPr37893331XaqNoNJ6N18xQ7dixI4sWLcLpdPLMM8+cNzzy+PHj7Nixgw0bNpCQkEBUVBSJiYmUK1eOv/3tbwB69IjmosRjnIrei1HU61CVKuzs1o0vDhxgV3o6S5cu5eTJk+YGeYk0aNCABx54gOnTp9OtWzdGjRqlDd738P6Sv82bN6datWpkZGQQGxvL6tWrSU9Pp0KFCuTl5bFx40aOHz9O8+bNadasGRs2bHBX6tNV7DQXwoJx4agP8BAQ4+fH75UqMTMmhqzatZkxdy579uzxypr5KSkp9O/fn+nTp9O9e3fdg/c9vN/cwagbUqlSJerUqUN8fDzR0dHs3bsXpRR+fn7Mnz+f++67j+HDh5OVlVXaYWu8HAtGymUA0BEoHxbG1uRktnXsyPc7d/KfqVNLpSzBtSYlJYW+ffvy66+/0qpVK23wvoVvmHsRr3OnWqxWK8nJyaSlpXHo0KESjU/jW9gwSu4OxCi5e8pmY13jxgTefTcjvvqK9Zs2uSeW+Qrx8fE8//zzpT4OXnPN8U1z12guB3/gJow66s0AW2Qk+26+mRmRkfxnyRJS9+w5r0KlL3GtJjpprina3DVlFyeGqT8FtLBYSI+JIf3WW/kjPp4fVq1i9uzZHl2/qCTRBu9zaHPXlD0igV4YF0qvU4qcmjXJHTCALzMzefODD9i5c2eZHEH1V4N/9dVXS7Qypuaaos1dU3bIN/XHgUpWK+kpKSytVImN8fFMmzOHrVu3XtZalL5IZGQkL774IuvXr9c9eO9Gm7vGt1FAVYyCRV2ABKuVjYmJLKxfn6zatZk5bx7Lli0zN0gPQ6dofAJt7hrfRAFVMBbDuAdj1FRaq1YcuekmVlutTHj3Xfbtu9LF7Hyfv/bgdYrG69DmrvEt7MD1GKZ+E+DvdJLWti1To6PZkp3NTz//zJEjR8wN0kuIjIxk1KhRzJgxg86dO+uZrN6FNneNb5Bv6k8B7YF0f3+WVa2K6tmTxfv2MeOnn9i7d6+5QXoh9erV46GHHtIzWb0Pbe4a7yYYuA2j5ksL4FBgIGm3384f1aszecoUdu7c6ROzSc1E16LxSrS5a7yTfFMfiLEw7+aoKM5068aXJ0+yYvt21q1bd9kLdWuKRxu816HNXeNdJGCMT+8OJFssHKlVi2/Kl2d/tWosWrGCVatWFbtmrebq0MXGvApt7hrvIAHoB/QHQiwWFgYHE/rII6yLimLCpElXvJC15vLQPXivQZu7xnOxAnUxTL0rEON0cqRNGxbXr8+Xa9awY9cuNm3apHvq15i/GvzIkSP1CCTPQ5u7xvOwAvUw8undgLMOBwcbNWJGhQpsVIqVq1ezefNmc4Ms4+SnaFauXElSUhKvv/66V9a192G0uWs8B3+MYYx3Y9RRP+nnx+Ybb+TEbbcxf+NG/v3ll2RkZJgbpMZNgwYNePDBB1m/fj0RERGMGzdOG7znoM1dYz5ODFMfBDQF0vz9Od61K/MTE5m+fDl//PGHXmTFQ+nXrx8BAQEcPXqUKlWqaIP3HLS5a8wjCmMF9Z5AU6XIqFiRhfXrczAlhV/XrWPhokV64XIPJyAggC5dupCTk4O/vz+VKlXirbfe0j/G5nPl5q6USgQ+BcoBecAHIvIPpVQE8DVQEdgF3Ckix1yvGYYx4CEXeFJEZl7kPbS5+yBRwF0Y1RnjgV2hoay58UbOtW3LL4sXM3/+fH2Bzovw8/Nj8ODBrFq1ChGha9eujBkzRo+iMZerMvc4IE5EViulgoFVGNe/+gJHReR1pdRQIFxEnldK1Qa+BJpgfKfnANVFJPcC76HN3UdQQHWgt0txwIrISPb37MmOkBAmf/ophw8fJicnx9Q4NVeGxWJhwIABHDx4kE2bNvHwww/z/PPP6x68eZRcWkYpNR1416XWIpLm+gFYICI1XL12RGS0a/uZwEsisvQC+9Tm7uUooBrwGMaFUgvwZ6VKrL3pJnaEh7Po11/57bffynwddV/A39+fLl26oJQiLy+PGjVq8MYbb+gcvDmUjLkrpSoCi4A6QKqIhBV47piIhCul3gWWici/Xe0fAT+LyLcX2K82dy/FD2gO3Imx2DQ2G98FB5Pavj32qlX5dcUKFi5cqE3dx3A4HDz22GOsX7+ecuXKUbFiRX2R1RyKNXfbpe5BKRUETAGeEpETSqliNy2i7TzzVko9jLG2gsYLsWMU8HoKo+TumYAAfq1YkczevVm6bRv/XbyY1ClTyM0tNhun8WLOnj3L22+/zTPPPMPOnTvZsWMHzz77rDZ4D+KSeu5KKTswA5gpIuNdbVvQaZkyRwjQGeNCaVsgLSCAnbfcwt4GDfhm/nw2btrEnj17zA1Sc83w8/OjW7du+Pn5kZubS+XKlXWK5tpyVRdUFfAJxsXTpwq0jwOOFLigGiEizymlkoEv+N8F1blANX1B1bsJwbiK/iRQE0gLDGRL+/asr1mT7YcP8+2335apiUdKKRo2bEhsbCx//vknmzZtMjsk0wgKCmLChAmMHTuWRo0aaYO/thRr7ojIBQW0xEirrAX+cOlmjHWI5wLbXLcRBV7zArAD2AJ0voT3EC3PkwKpADIQZCVIJshsPz955YYb5MsPPpBevXqJw+EwPU4zFBsbK//5z3+kefPm0rFjR9PjMVuVK1eW9957T6pVqyZ33XWXDB8+vMz+b1xjrSzOV/UkJk2RJGJMVOgHhAErHQ62d+lCVoMG/DBrFmvXruXo0aPmBmkSNpuNrl27smLFCvr168fy5cuZNWuW2WGZTpUqVRgyZAhvvvkmjRs31j34a4Oeoaq5OFagPkYN9fuAAGBeVBQrGjTgcGQkVqeT7777jmPHjpkap9l069aNhIQEzp07h9PpZOLEiXrcvovKlSvz7LPPMn78eBo2bEiVKqwH3+MAABxGSURBVFW0wZcu2tw1xWMFUjDy6V2Ac8CSuDh+qFCBal26sGbdOqZMmaINzMWIESPYvn07/v7+fPbZZ/pz+Qv5Pfjx48fTqFEjXYumdNHmrjkfJ3ADcA9GHfXDSvFzYiKZnTphrViRT//9b7Zs2aKHM/4Fh8NBVFQUBw4c0J9NMVSpUoWHHnqIUaNGccstt5CUlMQbb7yhP6+SR5u75n8EYJTaHQQ0Bo74+7OsXj22NG7Mit27+f333zl48CDnzp0zN1CNV9OhQwdat27N6NGjufvuu0lPT2f69Ol4guf4EFc/iUnj/cRglNx9CGgE/GGxMK52bSr17cv69HQ+//xzXQRKU2LMmjULm83GXXfdxTfffMPgwYMBtMFfI3TPvQwQg5F6eRRjjdI/LBZ+a9mSvXXqcOjkSWbNmkVaWpq5QWp8lvbt29OiRQvGjx/PkCFDWL16tTb4kkOnZcoa+dUZb8Wo8RALzHY4WN2kCaSkcOzcOaZPn056erpem1RT6tx3330opZg6dSrPPfccq1at4vvvv9cGf/Vocy8rWDBmkD4G9MIo7PWzzcasGjWoeffdpB85wpQpU9i9e7epcWrKFn5+fjz11FOkp6czZcoUnnvuOd2DLxm0ufs6fhhj1O/FqKN+FvjUYiG1WTNS7rqL1WvX8v3333PgwAFT49SUXfz8/Bg+fDhTpkxh27ZtDB06lAULFjB//nxt8FeONndfxQ9jOONTQBvgKPClw8HmFi0Ir1ePzKwsZsyYwYEDB/QXSGM60dHR9OnTh08++YRTp04xePBg1q9fz/Tp080OzVvR5u5rhAHNgCeAVsBWYLKfH9srVaJF794cP36c77//nj///NPUODWav1KvXj3atm3rNviBAwfywQcflKnCcyXIlRcOuxbC/OI7XqNQkH4gv4OcBlkN0t9ikXaNG8s7b78tTZo0kaioKNPj1NK6kJKSkmT06NESGRkptWvXlpdfflkiIyNNj8sLpQuHeTMKKI8x8WgAUAWYD/wnLIzspk2p3KAB+/fvZ+bMmTqnrvEa4uPj6dOnDx9++CH+/v7cfffdTJs2ja1bt5odmjeh0zLeShLGpKP7MVIx84FPIyLIbtqUWvXqsXXrVlauXElqaqqpcWo0V0Ljxo3p1KkTkyZNomrVqnTu3JkVK1bw888/62tEl4ZOy3iTbCC1QF4D2QNyEORtkLZOp3Tt1EkmTZok7du3F5vNZnqsWlpXqypVqsiECRMkMjJSnE6nvPzyy3LjjTeKq9OndWHptIw3YAUaYtR8uRmjOuNXwE8VKpDYrh0JFSowffp0Nm7cqCvsaXyKKlWq0KFDBz788EPsdjvPPfccv/32Gz/++KPZoXk6Oi3jyQQC9TDy6TcDacC/lGJjlSqEN2lCufh4Fi9ezNq1azl16pSpsWo0pUWfPn2IiorinXfewWazMWDAADZt2sSPP/6oUzTFo83dEwkEOmGMUU8B9gLvK8XMqChuuP12atWqxYcffsiGDRv0P3cpYrFYSE5OJi4ujt27d7NlyxazQyqTWK1W+vXrR0hICO+88467Bz9v3jz++9//6u9A0Whz9yQiMSYcDcIw9d+AfwHr4uO57aGHOHnyJNOnT2fnzp16IYhSxGKx0Lp1a5o1a8b27dvZsGED7dq146233jI7tDKLxWKhX79+hIaGug1+6NCh/Prrr/zyyy9mh+eJaHP3BMphLF/3EBAPrADe9/cntWZNyletyqlTp9izZw+bNm3Spl7K2O12Hn/8cQ4ePMiMGTOw2WyMGDGCKVOmsGTJErPDK9P81eBtNhsDBw5k48aNzJgxw+zwPI0rHy0D+GP40BpgA/Cyqz0CmA1sc92GF3jNMGA7sAXoWNZHy8SCDAHZBnIM5BOQrna73Niokbz00ksydOhQKVeunB4dcA3VpEkT6du3r1gsFrHZbPL6669Lq1atTI9Ly5DVapUHH3xQBg8eLHa7XUJCQuTtt9+W+Ph4/T0prGJHy1yKuSsgyHXfDiwHrgfGAkNd7UOBMa77tTF+CBxAJWAHYC1r5m4BqQPyLsh2kKMg/wfSKjhYHuzXT95++2158MEHJSwszPRYy5oiIyNl+PDhYrVaBZDGjRvLiy++qE3Dw2SxWOTBBx+Up59+Wux2uyQkJMgLL7wg1apVMz02D9KVm/tfTDgAWA00xeiVx7na44AtBXrtwwq8ZibQrKyYe76pTwI5DLIL5O8gbcPCpHXLljJ69Gjp1q2blC9fXpuJSbrtttukS5cuAkjFihVlyJAh+kfWQ2W1WqV///7Sr18/ASQwMFAefPBBCQ4ONj02D1Gx5m7hElBKWZVSfwAHgdkishyIFZE0ANdtjGvz8sCeAi/f62rzaRxAB+BrjFmktwDvALeEhLDqjjvo+vLLNLr+et59912mTZvGvn379NV/E0hISKB+/fosWbIEi8XCzTffzJQpU3TRKg8lNzeX//u//yMxMZH27dtz8uRJtm3bxuDBgwkODjY7PM/mMnvu+TPg6wAZf3numOt2InBvgfaPgDuK2NfDwEqXzP71u2L5gXQA+QnklMUiqywWGQRSOyhInho0SP75z39K586dxeFwmB5rWZfNZpNx48ZJ5cqVBZB69erJ/fffr8+gvEAhISEyduxYad++vSilpFatWjJ69GiJiYkp63+/kknLuEz5RWAIZTwtEw7yMMh8kJNKyVqHQx4JCJBmyckyZMgQadeunTRv3lybugepY8eO0rNnT7FYLOLn5ycTJ06U+Ph40+PSujQFBwcXMvj69evL8OHDpU6dOqbHZqKu6oJqNBDmuu8E/ouxNOc4Cl9QHeu6n0zhC6p/4kMXVMNBHgJZA3IC5DuQPna7tGnYUB599FF5+eWXpWbNmqbHqVVYrVq1kjfeeEMCAwMFkNjYWHnyySeL3NbhcEj9+vXF6XSaHrdWYQUHB8ubb74pzZo1E0Di4uLk2WefLcs5+Ksy97rA78BaYD0w0tUeCczFGAo5F4go8JoXMEbJbAE6X8J7mP0BXVAKpDLIqyBrMUx9fliYtFZKKpUvLy+99JK89NJLUqFCBbFYLKbHq1VY/v7+8uKLL0pISIgA4ufnJ88884zEx8eLn5+fxMfHS3h4uMTGxkrlypVl6NCh0qNHD7Hb7abHrnW+KlSoIP/85z/dPfjrrrtOXn/99bJq8Lpw2JWgME49Hgb6AIH+/nydnc3nubmca9SIW7p1IzU1lZ9++on9+/eTl5dnbsCa81BK8dRTT7FixQr35KRu3bpRtWpVxo8fj7+/P1WrViUpKYl9+/Zx+vRp9uzZQ1ZWlsmRay5EcHAwI0aMYPbs2cyZM4e6devSqVMn3nvvPU6cOGF2eNcSXfL3cmQDaQbyPsg+kAMg40Eah4ZKvbp1pUOHDvLCCy9IcnJyWb+Y4/GKjY2VkSNHussj+/n5yfPPP+9Oz2h5r/Jz8DfeeKMActNNN5XFFE3JXVD1ZXO3gTQH+RrkOMgGkFdAku12SalfXyZNmiT9+vWTgIAA02PVurgsFos89NBDUr16dXdbr169pHv37qbHplUyCg4OloEDB7pTbikpKTJ69OiyZPDa3C+kIJA7QaZimPpGkAEglUNCpEePHvLkk09Kq1atJDo62uw/pNZlqFmzZjJy5Ej34/DwcPnggw8kKCjI9Ni0Sk6VK1eWN998U+Li4gSMGcdlKAevzb0oBYH0AvkVJAtkHsjjIEmBgXL//ffLgAEDpEuXLnr2ohfK4XDIc889JxEREe62rl27Sps2bUyPTavkVb16dRkyZIgkJiYKIG3atJEXXnihLBi8NveCigN5iv+Z+myQLkpJxdhYueWWW+S1116Tjh07umuPaHmf+vXrJ3379nU/rly5skycOFGn1HxYNWrUkNdee82domnbtq2MGjXK1w1emzsYpj4MZAdGIa+vMUy9TbNm8sYbb8iQIUOkfv36em1SL1dQUJBMmDDBnX6x2WwyatQouf76602PTat0VbVqVXnrrbckJiZGwEjRDB061Jd/1MvuUEgLRq2E3kAvjPoJ04D37XaoW5dadeoAsHDhQvbs2UNubm5phaK5BlitVh566CGWLl3KmjVrAOjSpQv+/v58++23eML/u6Z0qV69Ot27d+fLL78kNTWVsLAwevfuzeeff05mZqbZ4ZU0xQ6FvKTCYd6IBWP21T8xiuH0Bn4BbgsK4vXKlWk7ZAjtO3Vi1apVfPLJJ+zatUsbuw9Qu3ZtEhISWLt2LQCBgYG0bdtWr8NZhti6dSvTpk2jb9++hIeHk5GRwfbt23n22WfLVrExs1MyJZ2W8QfpBPIvkCMgf4L8DaSi3S49e/aUTz75RNq2bevOy2n5jvz8/GTo0KHuv63FYpGBAwe6p6prlS1Vq1at0ByHpk2bytixY33tu19sWsaGj+AAbsJYbLo5Rt2D8cDcxEQade1K7Z07OX36NIMGDeL48eO6F+eD3H///fz555/uGYpVq1YlJiaGFStWmByZxgy2bdvGL7/8wsMPP8y0adNYvnw5NpuNwYMHM378eF9M0RTG7F771fbcI0DuB5mJMfJlGcjdSkn1+Hjp0KGDPPXUU9KqVSs9k9SHlV9f5IknnhA/Pz932+233y6hoaGmx6dlnhwOh3Tu3FmefPJJd92n9u3by4svvijh4eGmx1cC8r3RMpEgj4Gsx5h4NAvkLpDyISHy9NNPy7vvviuNGzc2+4PXugaqXLmyjBw5slBJgerVq0ufPn1Mj03LfCml5Omnn5bevXu7O3l169aVMWPGSEJCgunxXaV8Y7SMAqoA3YC+QCIwC3jbYuH0ddfRvnNnsnNyWLx4MatXr+bcuXOlFrPGM7BYLDzxxBN8+eWXHD582N0+bNgwfvjhB9avX29idBpPweFwcP/993PixAm++eYb8vLyqFmzJtdffz2pqanMmzfP7BCvlGJHy3iFueeb+iPAvRg/VwuA961WztavT6Nmzdi1axe7d+9my5Yt2tTLEG3atKFp06a8/vrr7rYaNWoQGxvLokWLTIxM42k4HA6eeOIJ9u7dy7fffkteXh4BAQHcfvvtTJ8+3Vtz8N5ZFdKOUcjrTZA0kP0gY0GqW61SvWpVefnll+W1116TihUrmn1qpGWC/Pz8ZOTIkYVq/vj7+8vf//73QmUHtLTypZSSBx54QHr16uVO0VSrVs29ZJ/Z8V2BvCstYweaYox8aQ8cAKYDHyhFwx49SL7uOg4fPszXX3/NoUOHdB31Mkrnzp05c+YM8+fPB4za7T169CAoKIiPP/7Y5Og0norD4aBv374cP36cr7/+GhGhRo0adO3alWXLlvHf//7X7BAvB+/ouQeDdAH5FmO1o3Ugj4LE2mzSqGFDefbZZ6VPnz56UVwtqVChgjzzzDOFKjw2b95cXn/9dV+eaq5VQnI4HDJ48GBp2bKlu61y5cryyiuveFstGs8eLWMBuQdkOUim6/Yxi0UqBgdLz5495d1335VXX31VqlatavYHqeUBCggIkJdeeqlQ6sVqtcro0aP1/4jWJctms8nIkSOlbt267rY2bdp4Wz14zzb3mhhj1GdizC6NCw2VYcOGyWeffSa9e/eWoKAg3VPXcuvWW2+Vrl27Fmpr3bq19O3bV1fy1LosxcfHy8SJE+W6665zt3lZPXjPNveqIJ1BqiclSdcuXWTcuHFy55136gkoWuepXr16cvvttxf6sY+KipLJkyfruvtaV6S4uLjzDL5169beUg/+6s0dsAK/AzNcjyOA2cA21214gW2HAdsxqgB0vNi+/ex2eeCBB+Tvf/+73HzzzXqkg1axCgoKcs9CzVe3bt2kSZMmpsem5b2KjIyUMWPGFErReEk9+BIx96eBL/ifuY8FhrruDwXGuO7XBtZglHupBOwArBfad6VKlaRly5b6lFrrslWpUiX529/+5p5arqV1pSoqRdOkSRMZM2aMJxcbuzpzBxKAuRi1ufLNfQsQ57ofB2wp0GsfVuC1M4FmF9q/zqdrXYnyL6IW/DJqaV2N8g2+YA++ZcuWMnDgQLnppptMj68IFWvul1rP/S3gOaDggPJYEUkDcN3GuNrLA3sKbLfX1VYsrh8BjeayqFmzJlu2bNElBjQlxv79+xk1ahSPPPIIdevWBWDx4sV89NFH1KlTh+TkZJRSJkd5aVzU3JVStwIHRWTVJe6zqCM/z72VUg8rpVYqpVZe4n41GjdBQUE88cQTTJ8+XXcONCXK/v37ee211woZ/KlTp/jwww+5/fbb3W0ezyWkZEZj9L53YUwWPQX8mxJMy2D+qY2Wl6ljx4666qNWqaqoHHxAQIAMGDBA2rZta3p8LpXMUEigNf/LuY+j8AXVsa77yRS+oPonF7mg6gEfkJYXKTExUcaNG6dnomqVuuLi4mTy5MmF6hc5nU55/PHHJSUlxRPm35SKuUdiXGTd5rqNKLDdCxijZLYAnS9hv2Z/QFpeovxFOGrUqGF6LFplQy1atJAJEyZIbGysuy0gIECGDx8utWvXNjs+z57EZPYfT8t7lJycXKgeiJbWtdB1110nw4cPL7R6k9PplGHDhknNmjXNjO2qR8toNKYTEhLCgAEDWLNmjdmhaMoY69at44cffmDkyJGEh4cDcPr0aebOnUv//v0JDg42OcLz0eau8RpatWrF1KlTvXVRBY2Xs2bNGqZOnVrI4FesWMHs2bMZPny45xm82SkZnZbRuhQlJyfLuHHjzis9oKV1rdWyZUuZMGFCoRRNhw4dZOzYsWaUKtBpGY33YrVaufPOO/nhhx/0Eooa01m8eDFTpkxhxIgROJ1OAGbNmsXs2bMZMWKEx/TgtblrPJ727duzb98+b1shR+PDLF68mN9++42mTZtisRg2Onv2bI9K0Whz13g0YWFhdO7cmalTp+an8DQaj+Cbb77huuuuo1evXu62fIN/9NFHTTd4be4aj8Vut3PXXXfx/vvvc/jwYbPD0WgKkZuby+TJkxERevXq5e7Bz5kzh7lz55qeotHmrvFYUlJSiIuLY+PGjWaHotEUyZkzZ/juu++Ij4+nZcuWWK1WAFavXs2cOXN45plnCAwMNCc4s0fK6NEyWkXJ4XDIs88+K1FRUabHoqV1MVmtVnnmmWdk1KhR4nA43O2JiYkyYsSI0hxFo0fLaLyL3r17c/z4cZ2O0XgFubm5/OMf/2Dx4sXcdddd7rLAe/bsYdmyZaakaLS5azyO+Ph4oqOjmTp1qtmhaDSXTE5ODgsWLCAgIIBWrVq5UzSzZ89mzpw5134UjdkpGZ2W0Soom80mL730ksTHx5sei5bWlchqtcqwYcPklltuKdTeoUMHGTNmTEmnaHRaRuMddOzYkWPHjpGWlmZ2KBrNFZGbm8u4ceMIDw+nb9++7hTNrFmzrukoGm3uGo8iKSmJ999/X49p13g1OTk5TJ06FafTSaVKldzt+TNZr0WKRpu7xmNo0KABSinOnDljdigazVVz6tQpfvrpJwYMGEC1atXc7bNnz2bu3Lmlb/Bm59t1zl0LkODgYBk7dqxERkaaHouWVkkqODhY2rZtKx07dizU3r59+5IoNqZz7hrPxWKxMHjwYH7++WeOHDlidjgaTYmSmZnJ0qVLiY2NpUOHDu4cfMFSBU2aNHG3lxhm99p1z10rISFBPvnkE7Hb7abHoqVVWrLb7TJx4kRJTEws1B4aGipjx4690hWd9DJ7Wp4pm80mzzzzjDRr1qzYbXr16iVDhw6VJ554Qmw2m+kxa2ldqerUqSOTJk2S8uXLF2oPCAiQV155RW644YbL3adOy2g8k3r16mG1Wlm+fHmRz9tsNnbs2MEff/xBjRo1TK+0p9FcDevXr2fixIm88MILlC9f3t1+6tQpJkyYQHJyMjfccEOJvJfyhCFnSinzg9Bcc/z8/Hj88cf5+uuv3ePaq1SpQtOmTTl06BAAUVFR7i/Bli1b+OGHH0yLV6MpKerUqcPjjz/OqFGj2Ldvn7s9PDycwYMH8/nnn7N169ZLGRK8SkQaFfmM2SkZnZYpu7rjjjukdevW7sdBQUEyZswYqVy5sthsNrHZbGK1Wk2PU0urNJScnFxsimbs2LHStGnTS9mPzrlreZaSkpJk4sSJEhQUJGD8Q48ePVratWtnemxaWtdKxRl8aGioPPbYY3LTTTddbB/a3LU8S/fcc49UrVrV/bhXr17njQPW0ioLSk5Olo8++kiio6MLtUdGRsqLL74oFSpUuNDrizV3T8m5ZwJbzI7jGhEFlIU6tvo4fQt9nJ5JkohEF/WE7VpHUgxbir0o4GMopVaWhWPVx+lb6OP0PvRQSI1Go/FBtLlrNBqND+Ip5v6B2QFcQ8rKserj9C30cXoZHnFBVaPRaDQli6f03DUajUZTgphu7kqpTkqpLUqp7UqpoWbHczUopRKVUvOVUpuUUhuUUoNc7RFKqdlKqW2u2/ACrxnmOvYtSqmO5kV/eSilrEqp35VSM1yPfe4YAZRSYUqpb5VSm11/12a+eKxKqcGu/9n1SqkvlVL+vnCcSql/KaUOKqXWF2i77ONSSjVUSq1zPfe2KvH6vKWAyZOXrMAOoDLgB6wBaps9qeoqjicOaOC6HwxsBWoDY4GhrvahwBjX/dquY3YAlVyfhdXs47jEY30a+AKY4Xrsc8foiv8T4EHXfT8gzNeOFSgP7AScrsffAH194TiBG4EGwPoCbZd9XMAKoBmggJ+BzmYf28Vkds+9CbBdRP4UkXPAV8BtJsd0xYhImoisdt3PBDZhfHFuwzAJXLfdXPdvA74SkbMishPYjvGZeDRKqQTgFuDDAs0+dYwASqkQDHP4CEBEzolIBj54rBhzXpxKKRsQAOzHB45TRBYBR//SfFnHpZSKA0JEZKkYTv9pgdd4LGabe3lgT4HHe11tXo9SqiKQAiwHYkUkDYwfACDGtZm3Hv9bwHNAXoE2XztGMM4oDwEfu1JQHyqlAvGxYxWRfcAbQCqQBhwXkVn42HEW4HKPq7zr/l/bPRqzzb2ovJXXD99RSgUBU4CnROTEhTYtos2jj18pdStwUERWXepLimjz6GMsgA3jlP49EUkBTmKcxheHVx6rK+d8G0YqIh4IVErde6GXFNHm8cd5CRR3XF55vGab+14gscDjBIzTQa9FKWXHMPbPRWSqqznddWqH6/agq90bj78F0FUptQsjjXaTUurf+NYx5rMX2Csi+SuJfIth9r52rO2AnSJySESygalAc3zvOPO53OPa67r/13aPxmxz/w2oppSqpJTyA3oD35sc0xXjuoL+EbBJRMYXeOp74H7X/fuB6QXaeyulHEqpSkA1jAs3HouIDBORBBGpiPH3mici9+JDx5iPiBwA9iilaria2gIb8b1jTQWuV0oFuP6H22JcL/K148znso7LlbrJVEpd7/p8+hR4jedi9hVd4GaMUSU7gBfMjucqj6UlxunaWuAPl24GIoG5wDbXbUSB17zgOvYteMEV+L8cb2v+N1rGV4+xPrDS9TedBoT74rECLwObgfXAZxgjRrz+OIEvMa4jZGP0wPtfyXEBjVyfzQ7gXVwTQD1ZeoaqRqPR+CBmp2U0Go1GUwpoc9doNBofRJu7RqPR+CDa3DUajcYH0eau0Wg0Pog2d41Go/FBtLlrNBqND6LNXaPRaHyQ/wexnpPEwiQWwgAAAABJRU5ErkJggg==\n", 228 | "text/plain": [ 229 | "
" 230 | ] 231 | }, 232 | "metadata": { 233 | "needs_background": "light" 234 | }, 235 | "output_type": "display_data" 236 | } 237 | ], 238 | "source": [ 239 | "s,e = f_getExtents(a,b,E.shape[0],E.shape[1])\n", 240 | "E2 = np.zeros((E.shape[0],E.shape[1],3),dtype=np.uint8)\n", 241 | "E3 = np.array(255*E,dtype = np.uint8)\n", 242 | "E2[:,:,0] = E3\n", 243 | "E2[:,:,1] = E3\n", 244 | "E2[:,:,2] = E3\n", 245 | "I = cv2.line(E2,s,e,(0,0,255),3)\n", 246 | "plt.imshow(I[:,:,::-1])" 247 | ] 248 | }, 249 | { 250 | "cell_type": "code", 251 | "execution_count": 38, 252 | "metadata": {}, 253 | "outputs": [], 254 | "source": [ 255 | "def f_houghCircles(E):\n", 256 | " numRows , numCols = E.shape[0] , E.shape[1]\n", 257 | " dMax = int((numRows**2 + numCols**2)**0.5)\n", 258 | " H = np.zeros((numRows,numCols,dMax))\n", 259 | " idx = np.argwhere(E)\n", 260 | " r , c = idx[:,0] , idx[:,1]\n", 261 | " for i in range(len(r)):\n", 262 | " for a in range(numRows):\n", 263 | " for b in range(numCols):\n", 264 | " ri,ci = r[i] , c[i]\n", 265 | " di = int(((ri-a)**2 + (ci-b)**2)**0.5)\n", 266 | " if di > 0 and di < dMax:\n", 267 | " H[a,b,di] += 1\n", 268 | " return H" 269 | ] 270 | }, 271 | { 272 | "cell_type": "code", 273 | "execution_count": 39, 274 | "metadata": {}, 275 | "outputs": [], 276 | "source": [ 277 | "E = cv2.imread(r'C:\\Users\\DeLL\\Desktop\\ML\\CV\\images\\Ec.png',cv2.IMREAD_GRAYSCALE)" 278 | ] 279 | }, 280 | { 281 | "cell_type": "code", 282 | "execution_count": 40, 283 | "metadata": {}, 284 | "outputs": [ 285 | { 286 | "data": { 287 | "text/plain": [ 288 | "" 289 | ] 290 | }, 291 | "execution_count": 40, 292 | "metadata": {}, 293 | "output_type": "execute_result" 294 | }, 295 | { 296 | "data": { 297 | "image/png": "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\n", 298 | "text/plain": [ 299 | "
" 300 | ] 301 | }, 302 | "metadata": { 303 | "needs_background": "light" 304 | }, 305 | "output_type": "display_data" 306 | } 307 | ], 308 | "source": [ 309 | "E = E>100\n", 310 | "plt.imshow(E,cmap='gray')" 311 | ] 312 | }, 313 | { 314 | "cell_type": "code", 315 | "execution_count": 41, 316 | "metadata": {}, 317 | "outputs": [], 318 | "source": [ 319 | "H = f_houghCircles(E)" 320 | ] 321 | }, 322 | { 323 | "cell_type": "code", 324 | "execution_count": 44, 325 | "metadata": {}, 326 | "outputs": [], 327 | "source": [ 328 | "idx = np.argwhere(H==H.max())\n", 329 | "best_cr,best_cc,best_d = idx[0,0] , idx[0,1], idx[0,2]" 330 | ] 331 | }, 332 | { 333 | "cell_type": "code", 334 | "execution_count": 45, 335 | "metadata": {}, 336 | "outputs": [ 337 | { 338 | "data": { 339 | "text/plain": [ 340 | "array([[90, 98, 38]], dtype=int64)" 341 | ] 342 | }, 343 | "execution_count": 45, 344 | "metadata": {}, 345 | "output_type": "execute_result" 346 | } 347 | ], 348 | "source": [ 349 | "idx" 350 | ] 351 | }, 352 | { 353 | "cell_type": "code", 354 | "execution_count": null, 355 | "metadata": {}, 356 | "outputs": [], 357 | "source": [] 358 | }, 359 | { 360 | "cell_type": "code", 361 | "execution_count": null, 362 | "metadata": {}, 363 | "outputs": [], 364 | "source": [] 365 | }, 366 | { 367 | "cell_type": "code", 368 | "execution_count": 46, 369 | "metadata": {}, 370 | "outputs": [ 371 | { 372 | "data": { 373 | "text/plain": [ 374 | "" 375 | ] 376 | }, 377 | "execution_count": 46, 378 | "metadata": {}, 379 | "output_type": "execute_result" 380 | }, 381 | { 382 | "data": { 383 | "image/png": "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\n", 384 | "text/plain": [ 385 | "
" 386 | ] 387 | }, 388 | "metadata": { 389 | "needs_background": "light" 390 | }, 391 | "output_type": "display_data" 392 | } 393 | ], 394 | "source": [ 395 | "E2 = np.zeros((E.shape[0],E.shape[1],3),dtype=np.uint8)\n", 396 | "E3 = np.array(255*E,dtype = np.uint8)\n", 397 | "E2[:,:,0] = E3\n", 398 | "E2[:,:,1] = E3\n", 399 | "E2[:,:,2] = E3\n", 400 | "I = cv2.circle(E2,(int(best_cc),int(best_cr)),int(best_d),(0,0,255),2)\n", 401 | "plt.imshow(I[:,:,::-1])" 402 | ] 403 | }, 404 | { 405 | "cell_type": "code", 406 | "execution_count": null, 407 | "metadata": {}, 408 | "outputs": [], 409 | "source": [] 410 | } 411 | ], 412 | "metadata": { 413 | "kernelspec": { 414 | "display_name": "Python 3", 415 | "language": "python", 416 | "name": "python3" 417 | }, 418 | "language_info": { 419 | "codemirror_mode": { 420 | "name": "ipython", 421 | "version": 3 422 | }, 423 | "file_extension": ".py", 424 | "mimetype": "text/x-python", 425 | "name": "python", 426 | "nbconvert_exporter": "python", 427 | "pygments_lexer": "ipython3", 428 | "version": "3.8.3" 429 | } 430 | }, 431 | "nbformat": 4, 432 | "nbformat_minor": 4 433 | } 434 | -------------------------------------------------------------------------------- /Code and Data/09_ShapeDetection_HoughTransform/images/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/09_ShapeDetection_HoughTransform/images/1.jpg -------------------------------------------------------------------------------- /Code and Data/09_ShapeDetection_HoughTransform/images/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/09_ShapeDetection_HoughTransform/images/2.jpg -------------------------------------------------------------------------------- /Code and Data/09_ShapeDetection_HoughTransform/images/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/09_ShapeDetection_HoughTransform/images/3.jpg -------------------------------------------------------------------------------- /Code and Data/09_ShapeDetection_HoughTransform/images/E.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/09_ShapeDetection_HoughTransform/images/E.png -------------------------------------------------------------------------------- /Code and Data/09_ShapeDetection_HoughTransform/images/Ec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/09_ShapeDetection_HoughTransform/images/Ec.png -------------------------------------------------------------------------------- /Code and Data/09_ShapeDetection_HoughTransform/images/albert-einstein_Affine_warped.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/09_ShapeDetection_HoughTransform/images/albert-einstein_Affine_warped.jpg -------------------------------------------------------------------------------- /Code and Data/09_ShapeDetection_HoughTransform/images/albert-einstein_Projective_warped.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/09_ShapeDetection_HoughTransform/images/albert-einstein_Projective_warped.jpg -------------------------------------------------------------------------------- /Code and Data/09_ShapeDetection_HoughTransform/images/albert-einstein_gray.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/09_ShapeDetection_HoughTransform/images/albert-einstein_gray.jpg -------------------------------------------------------------------------------- /Code and Data/09_ShapeDetection_HoughTransform/images/albert-einstein_gray_modified.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/09_ShapeDetection_HoughTransform/images/albert-einstein_gray_modified.jpg -------------------------------------------------------------------------------- /Code and Data/09_ShapeDetection_HoughTransform/images/albert-einstein_gray_opencv.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/09_ShapeDetection_HoughTransform/images/albert-einstein_gray_opencv.jpg -------------------------------------------------------------------------------- /Code and Data/09_ShapeDetection_HoughTransform/images/c.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/09_ShapeDetection_HoughTransform/images/c.jpeg -------------------------------------------------------------------------------- /Code and Data/09_ShapeDetection_HoughTransform/images/c2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/09_ShapeDetection_HoughTransform/images/c2.jpg -------------------------------------------------------------------------------- /Code and Data/09_ShapeDetection_HoughTransform/images/c3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/09_ShapeDetection_HoughTransform/images/c3.jpg -------------------------------------------------------------------------------- /Code and Data/09_ShapeDetection_HoughTransform/images/c4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/09_ShapeDetection_HoughTransform/images/c4.png -------------------------------------------------------------------------------- /Code and Data/09_ShapeDetection_HoughTransform/images/c5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/09_ShapeDetection_HoughTransform/images/c5.jpg -------------------------------------------------------------------------------- /Code and Data/09_ShapeDetection_HoughTransform/images/c6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/09_ShapeDetection_HoughTransform/images/c6.png -------------------------------------------------------------------------------- /Code and Data/09_ShapeDetection_HoughTransform/images/cc.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/09_ShapeDetection_HoughTransform/images/cc.jpg -------------------------------------------------------------------------------- /Code and Data/09_ShapeDetection_HoughTransform/images/cm.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/09_ShapeDetection_HoughTransform/images/cm.jpg -------------------------------------------------------------------------------- /Code and Data/09_ShapeDetection_HoughTransform/images/image_stitching_opencv_scottsdale.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/09_ShapeDetection_HoughTransform/images/image_stitching_opencv_scottsdale.jpg -------------------------------------------------------------------------------- /Code and Data/09_ShapeDetection_HoughTransform/images/j.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/09_ShapeDetection_HoughTransform/images/j.png -------------------------------------------------------------------------------- /Code and Data/09_ShapeDetection_HoughTransform/images/shapes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/09_ShapeDetection_HoughTransform/images/shapes.png -------------------------------------------------------------------------------- /Code and Data/09_ShapeDetection_HoughTransform/images/stitched.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/09_ShapeDetection_HoughTransform/images/stitched.jpg -------------------------------------------------------------------------------- /Code and Data/09_ShapeDetection_HoughTransform/images/tulips.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/09_ShapeDetection_HoughTransform/images/tulips.jpg -------------------------------------------------------------------------------- /Code and Data/10_CornerDetection/images/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/10_CornerDetection/images/1.jpg -------------------------------------------------------------------------------- /Code and Data/10_CornerDetection/images/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/10_CornerDetection/images/2.jpg -------------------------------------------------------------------------------- /Code and Data/10_CornerDetection/images/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/10_CornerDetection/images/3.jpg -------------------------------------------------------------------------------- /Code and Data/10_CornerDetection/images/E.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/10_CornerDetection/images/E.png -------------------------------------------------------------------------------- /Code and Data/10_CornerDetection/images/Ec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/10_CornerDetection/images/Ec.png -------------------------------------------------------------------------------- /Code and Data/10_CornerDetection/images/albert-einstein_Affine_warped.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/10_CornerDetection/images/albert-einstein_Affine_warped.jpg -------------------------------------------------------------------------------- /Code and Data/10_CornerDetection/images/albert-einstein_Projective_warped.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/10_CornerDetection/images/albert-einstein_Projective_warped.jpg -------------------------------------------------------------------------------- /Code and Data/10_CornerDetection/images/albert-einstein_gray.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/10_CornerDetection/images/albert-einstein_gray.jpg -------------------------------------------------------------------------------- /Code and Data/10_CornerDetection/images/albert-einstein_gray_modified.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/10_CornerDetection/images/albert-einstein_gray_modified.jpg -------------------------------------------------------------------------------- /Code and Data/10_CornerDetection/images/albert-einstein_gray_opencv.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/10_CornerDetection/images/albert-einstein_gray_opencv.jpg -------------------------------------------------------------------------------- /Code and Data/10_CornerDetection/images/c.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/10_CornerDetection/images/c.jpeg -------------------------------------------------------------------------------- /Code and Data/10_CornerDetection/images/c2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/10_CornerDetection/images/c2.jpg -------------------------------------------------------------------------------- /Code and Data/10_CornerDetection/images/c3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/10_CornerDetection/images/c3.jpg -------------------------------------------------------------------------------- /Code and Data/10_CornerDetection/images/c4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/10_CornerDetection/images/c4.png -------------------------------------------------------------------------------- /Code and Data/10_CornerDetection/images/c5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/10_CornerDetection/images/c5.jpg -------------------------------------------------------------------------------- /Code and Data/10_CornerDetection/images/c6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/10_CornerDetection/images/c6.png -------------------------------------------------------------------------------- /Code and Data/10_CornerDetection/images/cc.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/10_CornerDetection/images/cc.jpg -------------------------------------------------------------------------------- /Code and Data/10_CornerDetection/images/cm.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/10_CornerDetection/images/cm.jpg -------------------------------------------------------------------------------- /Code and Data/10_CornerDetection/images/image_stitching_opencv_scottsdale.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/10_CornerDetection/images/image_stitching_opencv_scottsdale.jpg -------------------------------------------------------------------------------- /Code and Data/10_CornerDetection/images/j.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/10_CornerDetection/images/j.png -------------------------------------------------------------------------------- /Code and Data/10_CornerDetection/images/shapes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/10_CornerDetection/images/shapes.png -------------------------------------------------------------------------------- /Code and Data/10_CornerDetection/images/stitched.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/10_CornerDetection/images/stitched.jpg -------------------------------------------------------------------------------- /Code and Data/10_CornerDetection/images/tulips.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/10_CornerDetection/images/tulips.jpg -------------------------------------------------------------------------------- /Code and Data/11_Automatic_panorama_SIFT/images/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/11_Automatic_panorama_SIFT/images/1.jpg -------------------------------------------------------------------------------- /Code and Data/11_Automatic_panorama_SIFT/images/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/11_Automatic_panorama_SIFT/images/2.jpg -------------------------------------------------------------------------------- /Code and Data/11_Automatic_panorama_SIFT/images/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/11_Automatic_panorama_SIFT/images/3.jpg -------------------------------------------------------------------------------- /Code and Data/11_Automatic_panorama_SIFT/images/E.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/11_Automatic_panorama_SIFT/images/E.png -------------------------------------------------------------------------------- /Code and Data/11_Automatic_panorama_SIFT/images/Ec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/11_Automatic_panorama_SIFT/images/Ec.png -------------------------------------------------------------------------------- /Code and Data/11_Automatic_panorama_SIFT/images/albert-einstein_Affine_warped.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/11_Automatic_panorama_SIFT/images/albert-einstein_Affine_warped.jpg -------------------------------------------------------------------------------- /Code and Data/11_Automatic_panorama_SIFT/images/albert-einstein_Projective_warped.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/11_Automatic_panorama_SIFT/images/albert-einstein_Projective_warped.jpg -------------------------------------------------------------------------------- /Code and Data/11_Automatic_panorama_SIFT/images/albert-einstein_gray.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/11_Automatic_panorama_SIFT/images/albert-einstein_gray.jpg -------------------------------------------------------------------------------- /Code and Data/11_Automatic_panorama_SIFT/images/albert-einstein_gray_modified.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/11_Automatic_panorama_SIFT/images/albert-einstein_gray_modified.jpg -------------------------------------------------------------------------------- /Code and Data/11_Automatic_panorama_SIFT/images/albert-einstein_gray_opencv.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/11_Automatic_panorama_SIFT/images/albert-einstein_gray_opencv.jpg -------------------------------------------------------------------------------- /Code and Data/11_Automatic_panorama_SIFT/images/c.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/11_Automatic_panorama_SIFT/images/c.jpeg -------------------------------------------------------------------------------- /Code and Data/11_Automatic_panorama_SIFT/images/c2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/11_Automatic_panorama_SIFT/images/c2.jpg -------------------------------------------------------------------------------- /Code and Data/11_Automatic_panorama_SIFT/images/c3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/11_Automatic_panorama_SIFT/images/c3.jpg -------------------------------------------------------------------------------- /Code and Data/11_Automatic_panorama_SIFT/images/c4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/11_Automatic_panorama_SIFT/images/c4.png -------------------------------------------------------------------------------- /Code and Data/11_Automatic_panorama_SIFT/images/c5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/11_Automatic_panorama_SIFT/images/c5.jpg -------------------------------------------------------------------------------- /Code and Data/11_Automatic_panorama_SIFT/images/c6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/11_Automatic_panorama_SIFT/images/c6.png -------------------------------------------------------------------------------- /Code and Data/11_Automatic_panorama_SIFT/images/cc.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/11_Automatic_panorama_SIFT/images/cc.jpg -------------------------------------------------------------------------------- /Code and Data/11_Automatic_panorama_SIFT/images/cm.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/11_Automatic_panorama_SIFT/images/cm.jpg -------------------------------------------------------------------------------- /Code and Data/11_Automatic_panorama_SIFT/images/image_stitching_opencv_scottsdale.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/11_Automatic_panorama_SIFT/images/image_stitching_opencv_scottsdale.jpg -------------------------------------------------------------------------------- /Code and Data/11_Automatic_panorama_SIFT/images/j.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/11_Automatic_panorama_SIFT/images/j.png -------------------------------------------------------------------------------- /Code and Data/11_Automatic_panorama_SIFT/images/shapes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/11_Automatic_panorama_SIFT/images/shapes.png -------------------------------------------------------------------------------- /Code and Data/11_Automatic_panorama_SIFT/images/stitched.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/11_Automatic_panorama_SIFT/images/stitched.jpg -------------------------------------------------------------------------------- /Code and Data/11_Automatic_panorama_SIFT/images/tulips.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/11_Automatic_panorama_SIFT/images/tulips.jpg -------------------------------------------------------------------------------- /Code and Data/12_Object_Detection/images/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/12_Object_Detection/images/1.jpg -------------------------------------------------------------------------------- /Code and Data/12_Object_Detection/images/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/12_Object_Detection/images/2.jpg -------------------------------------------------------------------------------- /Code and Data/12_Object_Detection/images/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/12_Object_Detection/images/3.jpg -------------------------------------------------------------------------------- /Code and Data/12_Object_Detection/images/E.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/12_Object_Detection/images/E.png -------------------------------------------------------------------------------- /Code and Data/12_Object_Detection/images/Ec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/12_Object_Detection/images/Ec.png -------------------------------------------------------------------------------- /Code and Data/12_Object_Detection/images/albert-einstein_Affine_warped.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/12_Object_Detection/images/albert-einstein_Affine_warped.jpg -------------------------------------------------------------------------------- /Code and Data/12_Object_Detection/images/albert-einstein_Projective_warped.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/12_Object_Detection/images/albert-einstein_Projective_warped.jpg -------------------------------------------------------------------------------- /Code and Data/12_Object_Detection/images/albert-einstein_gray.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/12_Object_Detection/images/albert-einstein_gray.jpg -------------------------------------------------------------------------------- /Code and Data/12_Object_Detection/images/albert-einstein_gray_modified.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/12_Object_Detection/images/albert-einstein_gray_modified.jpg -------------------------------------------------------------------------------- /Code and Data/12_Object_Detection/images/albert-einstein_gray_opencv.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/12_Object_Detection/images/albert-einstein_gray_opencv.jpg -------------------------------------------------------------------------------- /Code and Data/12_Object_Detection/images/c.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/12_Object_Detection/images/c.jpeg -------------------------------------------------------------------------------- /Code and Data/12_Object_Detection/images/c2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/12_Object_Detection/images/c2.jpg -------------------------------------------------------------------------------- /Code and Data/12_Object_Detection/images/c3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/12_Object_Detection/images/c3.jpg -------------------------------------------------------------------------------- /Code and Data/12_Object_Detection/images/c4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/12_Object_Detection/images/c4.png -------------------------------------------------------------------------------- /Code and Data/12_Object_Detection/images/c5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/12_Object_Detection/images/c5.jpg -------------------------------------------------------------------------------- /Code and Data/12_Object_Detection/images/c6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/12_Object_Detection/images/c6.png -------------------------------------------------------------------------------- /Code and Data/12_Object_Detection/images/cc.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/12_Object_Detection/images/cc.jpg -------------------------------------------------------------------------------- /Code and Data/12_Object_Detection/images/cm.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/12_Object_Detection/images/cm.jpg -------------------------------------------------------------------------------- /Code and Data/12_Object_Detection/images/image_stitching_opencv_scottsdale.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/12_Object_Detection/images/image_stitching_opencv_scottsdale.jpg -------------------------------------------------------------------------------- /Code and Data/12_Object_Detection/images/j.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/12_Object_Detection/images/j.png -------------------------------------------------------------------------------- /Code and Data/12_Object_Detection/images/od.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/12_Object_Detection/images/od.jpeg -------------------------------------------------------------------------------- /Code and Data/12_Object_Detection/images/p.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/12_Object_Detection/images/p.jpg -------------------------------------------------------------------------------- /Code and Data/12_Object_Detection/images/p2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/12_Object_Detection/images/p2.jpeg -------------------------------------------------------------------------------- /Code and Data/12_Object_Detection/images/p3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/12_Object_Detection/images/p3.jpg -------------------------------------------------------------------------------- /Code and Data/12_Object_Detection/images/p4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/12_Object_Detection/images/p4.jpg -------------------------------------------------------------------------------- /Code and Data/12_Object_Detection/images/shapes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/12_Object_Detection/images/shapes.png -------------------------------------------------------------------------------- /Code and Data/12_Object_Detection/images/stitched.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/12_Object_Detection/images/stitched.jpg -------------------------------------------------------------------------------- /Code and Data/12_Object_Detection/images/tulips.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/12_Object_Detection/images/tulips.jpg -------------------------------------------------------------------------------- /Code and Data/14_YOLO_objectDetector/images/1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/14_YOLO_objectDetector/images/1.jpg -------------------------------------------------------------------------------- /Code and Data/14_YOLO_objectDetector/images/2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/14_YOLO_objectDetector/images/2.jpg -------------------------------------------------------------------------------- /Code and Data/14_YOLO_objectDetector/images/3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/14_YOLO_objectDetector/images/3.jpg -------------------------------------------------------------------------------- /Code and Data/14_YOLO_objectDetector/images/E.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/14_YOLO_objectDetector/images/E.png -------------------------------------------------------------------------------- /Code and Data/14_YOLO_objectDetector/images/Ec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/14_YOLO_objectDetector/images/Ec.png -------------------------------------------------------------------------------- /Code and Data/14_YOLO_objectDetector/images/a.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/14_YOLO_objectDetector/images/a.jpg -------------------------------------------------------------------------------- /Code and Data/14_YOLO_objectDetector/images/albert-einstein_Affine_warped.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/14_YOLO_objectDetector/images/albert-einstein_Affine_warped.jpg -------------------------------------------------------------------------------- /Code and Data/14_YOLO_objectDetector/images/albert-einstein_Projective_warped.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/14_YOLO_objectDetector/images/albert-einstein_Projective_warped.jpg -------------------------------------------------------------------------------- /Code and Data/14_YOLO_objectDetector/images/albert-einstein_gray.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/14_YOLO_objectDetector/images/albert-einstein_gray.jpg -------------------------------------------------------------------------------- /Code and Data/14_YOLO_objectDetector/images/albert-einstein_gray_modified.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/14_YOLO_objectDetector/images/albert-einstein_gray_modified.jpg -------------------------------------------------------------------------------- /Code and Data/14_YOLO_objectDetector/images/albert-einstein_gray_opencv.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/14_YOLO_objectDetector/images/albert-einstein_gray_opencv.jpg -------------------------------------------------------------------------------- /Code and Data/14_YOLO_objectDetector/images/c.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/14_YOLO_objectDetector/images/c.jpeg -------------------------------------------------------------------------------- /Code and Data/14_YOLO_objectDetector/images/c2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/14_YOLO_objectDetector/images/c2.jpg -------------------------------------------------------------------------------- /Code and Data/14_YOLO_objectDetector/images/c3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/14_YOLO_objectDetector/images/c3.jpg -------------------------------------------------------------------------------- /Code and Data/14_YOLO_objectDetector/images/c4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/14_YOLO_objectDetector/images/c4.png -------------------------------------------------------------------------------- /Code and Data/14_YOLO_objectDetector/images/c5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/14_YOLO_objectDetector/images/c5.jpg -------------------------------------------------------------------------------- /Code and Data/14_YOLO_objectDetector/images/c6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/14_YOLO_objectDetector/images/c6.png -------------------------------------------------------------------------------- /Code and Data/14_YOLO_objectDetector/images/cc.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/14_YOLO_objectDetector/images/cc.jpg -------------------------------------------------------------------------------- /Code and Data/14_YOLO_objectDetector/images/cm.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/14_YOLO_objectDetector/images/cm.jpg -------------------------------------------------------------------------------- /Code and Data/14_YOLO_objectDetector/images/image_stitching_opencv_scottsdale.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/14_YOLO_objectDetector/images/image_stitching_opencv_scottsdale.jpg -------------------------------------------------------------------------------- /Code and Data/14_YOLO_objectDetector/images/j.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/14_YOLO_objectDetector/images/j.png -------------------------------------------------------------------------------- /Code and Data/14_YOLO_objectDetector/images/od.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/14_YOLO_objectDetector/images/od.jpeg -------------------------------------------------------------------------------- /Code and Data/14_YOLO_objectDetector/images/p.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/14_YOLO_objectDetector/images/p.jpg -------------------------------------------------------------------------------- /Code and Data/14_YOLO_objectDetector/images/p2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/14_YOLO_objectDetector/images/p2.jpeg -------------------------------------------------------------------------------- /Code and Data/14_YOLO_objectDetector/images/p3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/14_YOLO_objectDetector/images/p3.jpg -------------------------------------------------------------------------------- /Code and Data/14_YOLO_objectDetector/images/p4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/14_YOLO_objectDetector/images/p4.jpg -------------------------------------------------------------------------------- /Code and Data/14_YOLO_objectDetector/images/shapes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/14_YOLO_objectDetector/images/shapes.png -------------------------------------------------------------------------------- /Code and Data/14_YOLO_objectDetector/images/stitched.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/14_YOLO_objectDetector/images/stitched.jpg -------------------------------------------------------------------------------- /Code and Data/14_YOLO_objectDetector/images/tulips.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/14_YOLO_objectDetector/images/tulips.jpg -------------------------------------------------------------------------------- /Code and Data/15_Object_tracking/TrackingMultipleObjects.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 15, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import cv2\n", 10 | "import numpy as np" 11 | ] 12 | }, 13 | { 14 | "cell_type": "code", 15 | "execution_count": 16, 16 | "metadata": {}, 17 | "outputs": [], 18 | "source": [ 19 | "TrDict = {'csrt': cv2.TrackerCSRT_create,\n", 20 | " 'kcf' : cv2.TrackerKCF_create,\n", 21 | " 'boosting' : cv2.TrackerBoosting_create,\n", 22 | " 'mil': cv2.TrackerMIL_create,\n", 23 | " 'tld': cv2.TrackerTLD_create,\n", 24 | " 'medianflow': cv2.TrackerMedianFlow_create,\n", 25 | " 'mosse':cv2.TrackerMOSSE_create}" 26 | ] 27 | }, 28 | { 29 | "cell_type": "code", 30 | "execution_count": 17, 31 | "metadata": {}, 32 | "outputs": [], 33 | "source": [ 34 | "trackers = cv2.MultiTracker_create()" 35 | ] 36 | }, 37 | { 38 | "cell_type": "code", 39 | "execution_count": 18, 40 | "metadata": {}, 41 | "outputs": [], 42 | "source": [ 43 | "v = cv2.VideoCapture(r'D:\\mot.mp4')" 44 | ] 45 | }, 46 | { 47 | "cell_type": "code", 48 | "execution_count": 19, 49 | "metadata": {}, 50 | "outputs": [], 51 | "source": [ 52 | "ret, frame = v.read()" 53 | ] 54 | }, 55 | { 56 | "cell_type": "code", 57 | "execution_count": 20, 58 | "metadata": {}, 59 | "outputs": [], 60 | "source": [ 61 | "k = 4\n", 62 | "for i in range(k):\n", 63 | " cv2.imshow('Frame',frame)\n", 64 | " bbi = cv2.selectROI('Frame',frame)\n", 65 | " tracker_i = TrDict['csrt']()\n", 66 | " trackers.add(tracker_i,frame,bbi)" 67 | ] 68 | }, 69 | { 70 | "cell_type": "code", 71 | "execution_count": 21, 72 | "metadata": {}, 73 | "outputs": [], 74 | "source": [ 75 | "frameNumber = 2\n", 76 | "baseDir = r'D:\\TrackingResults'\n", 77 | "\n", 78 | "while True:\n", 79 | " ret, frame = v.read()\n", 80 | " if not ret:\n", 81 | " break\n", 82 | " (success,boxes) = trackers.update(frame)\n", 83 | " np.savetxt(baseDir + '/frame_'+str(frameNumber)+'.txt',boxes,fmt='%f')\n", 84 | " frameNumber+=1\n", 85 | " for box in boxes:\n", 86 | " (x,y,w,h) = [int(a) for a in box]\n", 87 | " cv2.rectangle(frame,(x,y),(x+w,y+h),(0,0,255),2)\n", 88 | " \n", 89 | " cv2.imshow('Frame',frame)\n", 90 | " key = cv2.waitKey(5) & 0xFF\n", 91 | " if key == ord('q'):\n", 92 | " break\n", 93 | "v.release()\n", 94 | "cv2.destroyAllWindows()" 95 | ] 96 | }, 97 | { 98 | "cell_type": "code", 99 | "execution_count": 23, 100 | "metadata": {}, 101 | "outputs": [], 102 | "source": [ 103 | "boxes = np.loadtxt(r'D:\\TrackingResults\\frame_102.txt')" 104 | ] 105 | }, 106 | { 107 | "cell_type": "code", 108 | "execution_count": 24, 109 | "metadata": {}, 110 | "outputs": [ 111 | { 112 | "data": { 113 | "text/plain": [ 114 | "array([[802.634583, 372.809296, 58.366409, 117.794022],\n", 115 | " [887.393677, 239.489075, 40.519829, 84.808945],\n", 116 | " [431.494141, 382.603577, 66.585564, 110.282341],\n", 117 | " [951.417419, 254.674072, 56.862694, 88.235214]])" 118 | ] 119 | }, 120 | "execution_count": 24, 121 | "metadata": {}, 122 | "output_type": "execute_result" 123 | } 124 | ], 125 | "source": [ 126 | "boxes" 127 | ] 128 | }, 129 | { 130 | "cell_type": "code", 131 | "execution_count": null, 132 | "metadata": {}, 133 | "outputs": [], 134 | "source": [] 135 | } 136 | ], 137 | "metadata": { 138 | "kernelspec": { 139 | "display_name": "Python 3", 140 | "language": "python", 141 | "name": "python3" 142 | }, 143 | "language_info": { 144 | "codemirror_mode": { 145 | "name": "ipython", 146 | "version": 3 147 | }, 148 | "file_extension": ".py", 149 | "mimetype": "text/x-python", 150 | "name": "python", 151 | "nbconvert_exporter": "python", 152 | "pygments_lexer": "ipython3", 153 | "version": "3.7.4" 154 | } 155 | }, 156 | "nbformat": 4, 157 | "nbformat_minor": 2 158 | } 159 | -------------------------------------------------------------------------------- /Code and Data/15_Object_tracking/TrackingSingleObject.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import cv2\n", 10 | "import imutils" 11 | ] 12 | }, 13 | { 14 | "cell_type": "code", 15 | "execution_count": 2, 16 | "metadata": {}, 17 | "outputs": [], 18 | "source": [ 19 | "TrDict = {'csrt': cv2.TrackerCSRT_create,\n", 20 | " 'kcf' : cv2.TrackerKCF_create,\n", 21 | " 'boosting' : cv2.TrackerBoosting_create,\n", 22 | " 'mil': cv2.TrackerMIL_create,\n", 23 | " 'tld': cv2.TrackerTLD_create,\n", 24 | " 'medianflow': cv2.TrackerMedianFlow_create,\n", 25 | " 'mosse':cv2.TrackerMOSSE_create}" 26 | ] 27 | }, 28 | { 29 | "cell_type": "code", 30 | "execution_count": 3, 31 | "metadata": {}, 32 | "outputs": [], 33 | "source": [ 34 | "tracker = TrDict['csrt']()\n", 35 | "#tracker = cv2.TrackerCSRT_create()" 36 | ] 37 | }, 38 | { 39 | "cell_type": "code", 40 | "execution_count": 4, 41 | "metadata": {}, 42 | "outputs": [], 43 | "source": [ 44 | "#v = cv2.VideoCapture(r'D:\\mot.mp4') # video\n", 45 | "v = cv2.VideoCapture(0)" 46 | ] 47 | }, 48 | { 49 | "cell_type": "code", 50 | "execution_count": 5, 51 | "metadata": {}, 52 | "outputs": [ 53 | { 54 | "data": { 55 | "text/plain": [ 56 | "True" 57 | ] 58 | }, 59 | "execution_count": 5, 60 | "metadata": {}, 61 | "output_type": "execute_result" 62 | } 63 | ], 64 | "source": [ 65 | "ret, frame = v.read()\n", 66 | "frame = imutils.resize(frame,width=600)\n", 67 | "cv2.imshow('Frame',frame)\n", 68 | "bb = cv2.selectROI('Frame',frame)\n", 69 | "tracker.init(frame,bb)" 70 | ] 71 | }, 72 | { 73 | "cell_type": "code", 74 | "execution_count": 6, 75 | "metadata": {}, 76 | "outputs": [], 77 | "source": [ 78 | "while True:\n", 79 | " ret, frame = v.read()\n", 80 | " if not ret:\n", 81 | " break\n", 82 | " frame = imutils.resize(frame,width=600)\n", 83 | " (success,box) = tracker.update(frame)\n", 84 | " if success:\n", 85 | " (x,y,w,h) = [int(a) for a in box]\n", 86 | " cv2.rectangle(frame,(x,y),(x+w,y+h),(100,255,0),2)\n", 87 | " cv2.imshow('Frame',frame)\n", 88 | " key = cv2.waitKey(5) & 0xFF\n", 89 | " if key == ord('q'):\n", 90 | " break\n", 91 | "v.release()\n", 92 | "cv2.destroyAllWindows()\n", 93 | " \n", 94 | " \n", 95 | " " 96 | ] 97 | }, 98 | { 99 | "cell_type": "code", 100 | "execution_count": null, 101 | "metadata": {}, 102 | "outputs": [], 103 | "source": [] 104 | } 105 | ], 106 | "metadata": { 107 | "kernelspec": { 108 | "display_name": "Python 3", 109 | "language": "python", 110 | "name": "python3" 111 | }, 112 | "language_info": { 113 | "codemirror_mode": { 114 | "name": "ipython", 115 | "version": 3 116 | }, 117 | "file_extension": ".py", 118 | "mimetype": "text/x-python", 119 | "name": "python", 120 | "nbconvert_exporter": "python", 121 | "pygments_lexer": "ipython3", 122 | "version": "3.7.4" 123 | } 124 | }, 125 | "nbformat": 4, 126 | "nbformat_minor": 2 127 | } 128 | -------------------------------------------------------------------------------- /Code and Data/15_Object_tracking/data/mot.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Code and Data/15_Object_tracking/data/mot.mp4 -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Packt 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 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | # Computer-Vision-Theory-and-Projects-in-Python-for-Beginners 5 | Computer Vision Theory and Projects in Python for Beginners, by Packt Publishing 6 | -------------------------------------------------------------------------------- /Slides/CV.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/PacktPublishing/Computer-Vision-Theory-and-Projects-in-Python-for-Beginners/6c15943459694f2252f37bb774b211657050d604/Slides/CV.pptx --------------------------------------------------------------------------------