# data[].attributes.body
Đoàn Quốc Hiệu

Phụ trách trong lập trình, tham khảo ,phát triển dự án

Nguyễn Văn Toàn

Kiểm tra code , hỗ trợ sửa lỗi code ,quản lí và hoàn thiện Padlet

Nguyễn Văn Thái

Làm poster , hỗ trợ code

Nguyễn Huỳnh Thanh Tân

Dịch thuật văn bản , tìm kiếm tài liệu và biên soạn nội dung word

Đoàn Văn Hội

Dịch thuật văn bản , tham khảo tài liệu ,bổ sung nội dung báo cáo word

# data[].attributes.body
Nguyễn Văn Toàn

Đoàn Quốc Hiệu

Nguyễn Văn Thái

Đoàn Văn Hội

Nguyễn Huỳnh Thanh Tân

# data[].attributes.attachment_link.readable_text

import cv2
import numpy as np
import imutils

cap = cv2.VideoCapture(0)
cap.set(3,640)
cap.set(4,480)

while True:
    _, frame = cap.read()
    frame = cv2.flip(frame, 1)
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)


    lower_Yellow = np.array([25,70,125])
    upper_Yellow = np.array([35,255,255])

    lower_Green = np.array([65, 60, 60])
    upper_Green = np.array([80, 255, 255])

    lower_Red = np.array([0,70,150])
    upper_Red = np.array([15,255,255])


    mask1 = cv2.inRange(hsv, lower_Yellow, upper_Yellow)
    mask2 = cv2.inRange(hsv, lower_Green, upper_Green)
    mask3 = cv2.inRange(hsv, lower_Red, upper_Red)


    cnts1 = cv2.findContours(mask1, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    cnts1 = imutils.grab_contours(cnts1)

    cnts2 = cv2.findContours(mask2, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    cnts2 = imutils.grab_contours(cnts2)

    cnts3 = cv2.findContours(mask3, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    cnts3 = imutils.grab_contours(cnts3)



    for c in cnts1:
        area1 = cv2.contourArea(c)
        if area1 > 5000:

            cv2.drawContours(frame, [c], -1, (0,255,0), 3)

            M = cv2.moments(c)

            cx = int(M["m10"]/M["m00"])
            cy = int(M["m01"]/M["m00"])

            cv2.circle(frame, (cx,cy), 7, (255,255,255), -1)
            cv2.putText(frame, "Yellow", (cx-20, cy-20), cv2.FONT_HERSHEY_SIMPLEX, 2.5, (255,255,255), 3)

    for c in cnts2:
        area2 = cv2.contourArea(c)
        if area2 > 5000:
            cv2.drawContours(frame, [c], -1, (0, 255, 0), 3)

            M = cv2.moments(c)

            cx = int(M["m10"] / M["m00"])
            cy = int(M["m01"] / M["m00"])

            cv2.circle(frame, (cx, cy), 7, (255, 255, 255), -1)
            cv2.putText(frame, "green", (cx - 20, cy - 20), cv2.FONT_HERSHEY_SIMPLEX, 2.5, (255, 255, 255), 3)

    for c in cnts3:
        area2 = cv2.contourArea(c)
        if area2 > 5000:
            cv2.drawContours(frame, [c], -1, (0, 255, 0), 3)

            M = cv2.moments(c)

            cx = int(M["m10"] / M["m00"])
            cy = int(M["m01"] / M["m00"])

            cv2.circle(frame, (cx, cy), 7, (255, 255, 255), -1)
            cv2.putText(frame, "red", (cx - 20, cy - 20), cv2.FONT_HERSHEY_SIMPLEX, 2.5, (255, 255, 255), 3)

    cv2.imshow("frame",frame)
    if cv2.waitKey(1) == ord("q"):
        break




cap.release()
cv2.destroyAllWindows()