---
# System prepended metadata

title: Computer Vision
tags: [IvLabs]

---

Computer Vision
===
###### tags: `IvLabs`

---

Aaron Bobick
---

- Lecture 1-5


OpenCV Documentation
---
- Reading and Displaying Image

        img = cv2.imread('apple.webp')
        cv2.imshow('apple', img)
- Reading and Displaying Video

        video = cv2.VideoCapture(0)
        while True:
            ret, img = video.read()
            cv2.imshow("Camera", img)
            if cv2.waitKey(1) & 0xFF == ord("q"):
                break
- BGR to Grayscale

        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
- BGR to HSV

        imghsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
- Gaussian Blur

        imgBlur = cv2.GaussianBlur(result, (7, 7), 1)
- Canny Edge Detection

        imgCanny = cv2.Canny(imgGray, 100, 200)
- Image Dialation

        imgDil = cv2.dilate(imgCanny, kernel, iterations=1)
- Image Erosion

        image = cv2.erode(image, kernel, iterations=1)
- Creating Trackbar
        
        def empty(x):
            pass
            
        cv2.namedWindow("HSV Value")
        cv2.resizeWindow("HSV Value", 360, 240)

        cv2.createTrackbar("Hue min", "HSV Value", 0, 179,empty)
- Getting Trackbar Value
        (Inside Loop)
        
        h_min = cv2.getTrackbarPos("Hue min", "HSV Value")

Youtube(Murtaza's Workshop)
---
- https://www.youtube.com/@murtazasworkshop/playlists

- Finding Contours and Centre:
    
        def getContours(img, imgcnt):
        cnt, hier = cv2.findContours(img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)

        for c in cnt:
            area = cv2.contourArea(c)
            if area>500 :
                cv2.drawContours(imgcnt, c, -1, (0,0,255), 5)
                perimeter = cv2.arcLength(c, True)
                edges = cv2.approxPolyDP(c, 0.02*perimeter, True)
                x, y, w, h = cv2.boundingRect(edges)

                cv2.rectangle(imgcnt, (x, y), (x+w, y+h), (0, 255, 0), 5)
                M = cv2.moments(c)
                if M['m00'] != 0 :
                    cx = int(M['m10']/M['m00'])
                    cy = int(M['m01']/M['m00'])
                    cv2.circle(imgcnt, (cx, cy), 5, (255, 0, 0), 3)
        
- Creating a mask:

        lower = np.array([h_min, s_min, v_min])
        upper = np.array([h_max, s_max, v_max])

        filt = cv2.inRange(imghsv, lower, upper)
        result = cv2.bitwise_and(img, img, mask=filt)