From 2c9d61343cf9fad8d3d6eddaf8eb5a85793dd3a8 Mon Sep 17 00:00:00 2001 From: Sayak Rana Date: Tue, 26 Oct 2021 20:13:42 +0530 Subject: [PATCH 1/2] Task1 --- check.py | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ img.jpg | Bin 0 -> 90196 bytes 2 files changed, 54 insertions(+) create mode 100644 check.py create mode 100644 img.jpg diff --git a/check.py b/check.py new file mode 100644 index 0000000..530724d --- /dev/null +++ b/check.py @@ -0,0 +1,54 @@ +# import cv2 +# (width, height) = (130, 100) +# cap = cv2.VideoCapture(0) +# while (cap.isOpened()): +# ret, img = cap.read() +# img=cv2.flip(img, 1) +# cv2.rectangle(img, (20, 20), (250, 250), (255, 0, 0), 3) +# cv2.imshow("RGB Output", img) +# img1 = img[20:250,20:250] +# imCopy = img1.copy() +# gray = cv2.cvtColor(img1, cv2.COLOR_BGR2GRAY) +# blur = cv2.GaussianBlur(gray, (5, 5), 0) +# ret, thresh1 = cv2.threshold(blur, 10, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU) +# hand_resize = cv2.resize(thresh1, (width, height)) +# cv2.imshow("Threshold", thresh1) +# contours, hierarchy = cv2.findContours(thresh1, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) +# cv2.drawContours(imCopy, contours, -1, (0, 255, 0)) +# cv2.imshow('Draw Contours', imCopy) + +# k = 0xFF & cv2.waitKey(10) +# if k == 27: +# break + +# cap.release() +# cv2.destroyAllWindows() + +# STATIC IMAGES INPUT + +import cv2 +img = cv2.imread('img.jpg') +cv2.imshow("Original Image", img) +img1 = cv2.resize(img, (300, 300)) +cv2.imshow("Resized image", img1) +# ret, img = cap.read() +img2=cv2.flip(img1, 1) +cv2.imshow("Flipped image", img2) +cv2.rectangle(img2, (20, 20), (250, 250), (255, 0, 0), 3) +cv2.imshow("RGB Output", img2) +img3 = img2[20:250,20:250] +imCopy = img3.copy() +gray = cv2.cvtColor(img3, cv2.COLOR_BGR2GRAY) +cv2.imshow("grayscale",gray) +blur = cv2.GaussianBlur(gray, (5, 5), 0) +cv2.imshow("GaussianBlur",blur) +ret, thresh1 = cv2.threshold(blur, 10, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU) +hand_resize = cv2.resize(thresh1, (500, 400)) +cv2.imshow("Threshold", thresh1) +contours, hierarchy = cv2.findContours(thresh1, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) +cv2.drawContours(imCopy, contours, -1, (0, 0, 0)) +cv2.imshow('Draw Contours', imCopy) +# cv2.imshow("Image", img2) +interrupt = cv2.waitKey(0) & 0xFF +if interrupt == 27: + cv2.destroyAllWindows() diff --git a/img.jpg b/img.jpg new file mode 100644 index 0000000000000000000000000000000000000000..75a24988f00359523dcf8c1031b2343eb19a4b6c GIT binary patch literal 90196 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
  • u4l|YXWDTk)lih|^8w@91~Cq`x!TK8zlc4( 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 Date: Tue, 26 Oct 2021 20:20:33 +0530 Subject: [PATCH 2/2] Task2 --- collect-data.py | 79 ++++++++++++++++++++++++++++++++++++++++++++++++ defects.py | 69 ++++++++++++++++++++++++++++++++++++++++++ requirements.txt | 40 ++++++++++++++++++++++++ 3 files changed, 188 insertions(+) create mode 100644 collect-data.py create mode 100644 defects.py create mode 100644 requirements.txt diff --git a/collect-data.py b/collect-data.py new file mode 100644 index 0000000..e62e181 --- /dev/null +++ b/collect-data.py @@ -0,0 +1,79 @@ +import cv2 +import os + +if not os.path.exists("data"): + os.makedirs("data") + os.makedirs("data/train") + os.makedirs("data/train/0") + os.makedirs("data/train/1") + os.makedirs("data/train/2") + os.makedirs("data/train/3") + os.makedirs("data/train/4") + os.makedirs("data/train/5") + + +mode = 'train' +directory = 'data/'+mode+'/' + +# url = '/video' +# cap=cv2.VideoCapture(url) + +cap=cv2.VideoCapture(0) + +while True: + _, frame = cap.read() + frame = cv2.flip(frame, 1) + + cv2.putText(frame, "Sayak-Rana", (160, 240), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (0,0,0), 3) + + count = {'zero': len(os.listdir(directory+"/0")), + 'one': len(os.listdir(directory+"/1")), + 'two': len(os.listdir(directory+"/2")), + 'three': len(os.listdir(directory+"/3")), + 'four': len(os.listdir(directory+"/4")), + 'five': len(os.listdir(directory+"/5"))} + + cv2.putText(frame, "MODE : "+mode, (10, 50), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (0,0,0), 1) + cv2.putText(frame, "IMAGE COUNT", (10, 90), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (0,0,0), 1) + cv2.putText(frame, "ZERO : "+str(count['zero']), (10, 115), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (0,0,0), 1) + cv2.putText(frame, "ONE : "+str(count['one']), (10, 140), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (0,0,0), 1) + cv2.putText(frame, "TWO : "+str(count['two']), (10, 165), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (0,0,0), 1) + cv2.putText(frame, "THREE : "+str(count['three']), (10, 190), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (0,0,0), 1) + cv2.putText(frame, "FOUR : "+str(count['four']), (10, 215), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (0,0,0), 1) + cv2.putText(frame, "FIVE : "+str(count['five']), (10, 240), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (0,0,0), 1) + + + x1 = int(0.5*frame.shape[1]) + y1 = 10 + x2 = frame.shape[1]-10 + y2 = int(0.5*frame.shape[1]) + cv2.rectangle(frame, (x1-1, y1-1), (x2+1, y2+1), (255,0,0) ,3) + roi = frame[y1:y2, x1:x2] + roi = cv2.resize(roi, (200, 200)) + cv2.putText(frame, "R.O.I", (440, 350), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (0,225,0), 3) + cv2.imshow("Frame", frame) + + roi = cv2.cvtColor(roi, cv2.COLOR_BGR2GRAY) + _, roi = cv2.threshold(roi, 120, 255, cv2.THRESH_OTSU) + cv2.imshow("ROI", roi) + + + + interrupt = cv2.waitKey(10) + if interrupt & 0xFF == 27: + break + if interrupt & 0xFF == ord('0'): + cv2.imwrite(directory+'0/'+str(count['zero'])+'.jpg', roi) + if interrupt & 0xFF == ord('1'): + cv2.imwrite(directory+'1/'+str(count['one'])+'.jpg', roi) + if interrupt & 0xFF == ord('2'): + cv2.imwrite(directory+'2/'+str(count['two'])+'.jpg', roi) + if interrupt & 0xFF == ord('3'): + cv2.imwrite(directory+'3/'+str(count['three'])+'.jpg', roi) + if interrupt & 0xFF == ord('4'): + cv2.imwrite(directory+'4/'+str(count['four'])+'.jpg', roi) + if interrupt & 0xFF == ord('5'): + cv2.imwrite(directory+'5/'+str(count['five'])+'.jpg', roi) + +cap.release() +cv2.destroyAllWindows() diff --git a/defects.py b/defects.py new file mode 100644 index 0000000..5df986c --- /dev/null +++ b/defects.py @@ -0,0 +1,69 @@ +import cv2 +import numpy as np +import math + +cap=cv2.VideoCapture(0) + +while(cap.isOpened()): + ret, img = cap.read() + img=cv2.flip(img, 1) + cv2.rectangle(img,(20,20),(250,250),(255,0,0),3) + crop_img = img[20:250, 20:250] + grey = cv2.cvtColor(crop_img, cv2.COLOR_BGR2GRAY) + value = (35, 35) + blurred = cv2.GaussianBlur(grey, value, 0) + _, thresh1 = cv2.threshold(blurred, 127, 255, cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU) + contours, hierarchy = cv2.findContours(thresh1.copy(),cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE) + cnt = max(contours, key = lambda x: cv2.contourArea(x)) + x,y,w,h = cv2.boundingRect(cnt) + cv2.rectangle(crop_img,(x,y),(x+w,y+h),(0,0,255),0) + + hull = cv2.convexHull(cnt) + drawing = np.zeros(crop_img.shape,np.uint8) + + cv2.drawContours(drawing,[cnt],0,(0,255,0),0) + cv2.drawContours(drawing,[hull],0,(0,0,255),0) + + hull = cv2.convexHull(cnt,returnPoints = False) + defects = cv2.convexityDefects(cnt,hull) + + count_defects = 0 + cv2.drawContours(thresh1, contours, -1, (0,255,0), 3) + + for i in range(defects.shape[0]): + s,e,f,d = defects[i,0] + start = tuple(cnt[s][0]) + end = tuple(cnt[e][0]) + far = tuple(cnt[f][0]) + a = math.sqrt((end[0] - start[0])**2 + (end[1] - start[1])**2) + b = math.sqrt((far[0] - start[0])**2 + (far[1] - start[1])**2) + c = math.sqrt((end[0] - far[0])**2 + (end[1] - far[1])**2) + angle = math.acos((b**2 + c**2 - a**2)/(2*b*c)) * 57 + + if angle <= 90: + count_defects += 1 + cv2.circle(crop_img,far,1,[0,0,255],-1) + + cv2.line(crop_img,start,end,[0,255,0],2) + + if count_defects == 1: + cv2.putText(img,"Number : 2", (50,450), cv2.FONT_HERSHEY_SIMPLEX, 1, (255,255,255), 1) + elif count_defects == 2: + cv2.putText(img, "Number : 3", (50,450), cv2.FONT_HERSHEY_SIMPLEX, 1, (255,255,255), 1) + elif count_defects == 3: + cv2.putText(img,"Number : 4", (50,450), cv2.FONT_HERSHEY_SIMPLEX, 1, (255,255,255), 1) + elif count_defects == 4: + cv2.putText(img,"Number : 5", (50,450), cv2.FONT_HERSHEY_SIMPLEX, 1, (255,255,255), 1) + elif count_defects == 5: + cv2.putText(img,"Number : 6", (50,450), cv2.FONT_HERSHEY_SIMPLEX, 1, (255,255,255), 1) + else: + cv2.putText(img,"Number : 1", (50,450), cv2.FONT_HERSHEY_SIMPLEX, 1, (255,255,255), 1) + + cv2.imshow('Gesture', img) + cv2.imshow('Contours', drawing) + cv2.imshow('Defects', crop_img) + cv2.imshow('Binary Image', thresh1) + + k = cv2.waitKey(10) + if k == 27: + break diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..dc110d2 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,40 @@ +absl-py==0.14.1 +astunparse==1.6.3 +cachetools==4.2.4 +certifi==2021.5.30 +charset-normalizer==2.0.6 +clang==5.0 +flatbuffers==1.12 +gast==0.4.0 +google-auth==1.35.0 +google-auth-oauthlib==0.4.6 +google-pasta==0.2.0 +grpcio==1.41.0 +h5py==3.1.0 +idna==3.2 +keras==2.6.0 +Keras-Preprocessing==1.1.2 +Markdown==3.3.4 +numpy==1.19.5 +oauthlib==3.1.1 +opencv-python==4.5.3.56 +opt-einsum==3.3.0 +Pillow==8.4.0 +protobuf==3.18.0 +pyasn1==0.4.8 +pyasn1-modules==0.2.8 +requests==2.26.0 +requests-oauthlib==1.3.0 +rsa==4.7.2 +scipy==1.7.1 +six==1.15.0 +tensorboard==2.6.0 +tensorboard-data-server==0.6.1 +tensorboard-plugin-wit==1.8.0 +tensorflow==2.6.0 +tensorflow-estimator==2.6.0 +termcolor==1.1.0 +typing-extensions==3.7.4.3 +urllib3==1.26.7 +Werkzeug==2.0.1 +wrapt==1.12.1 \ No newline at end of file