Skip to content

Image Processing examples added #19

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import cv2
import numpy as np

def callback(x):
pass

cap = cv2.VideoCapture(0)
cv2.namedWindow('image')

ilowH = 0
ihighH = 179

ilowS = 0
ihighS = 255
ilowV = 0
ihighV = 255

cv2.createTrackbar('lowH','image',ilowH,179,callback)
cv2.createTrackbar('highH','image',ihighH,179,callback)
cv2.createTrackbar('lowS','image',ilowS,255,callback)
cv2.createTrackbar('highS','image',ihighS,255,callback)
cv2.createTrackbar('lowV','image',ilowV,255,callback)
cv2.createTrackbar('highV','image',ihighV,255,callback)



while(True):
ret, frame = cap.read()
ilowH = cv2.getTrackbarPos('lowH', 'image')
ihighH = cv2.getTrackbarPos('highH', 'image')
ilowS = cv2.getTrackbarPos('lowS', 'image')
ihighS = cv2.getTrackbarPos('highS', 'image')
ilowV = cv2.getTrackbarPos('lowV', 'image')
ihighV = cv2.getTrackbarPos('highV', 'image')

hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

lower_hsv = np.array([ilowH, ilowS, ilowV])
higher_hsv = np.array([ihighH, ihighS, ihighV])
mask = cv2.inRange(hsv, lower_hsv, higher_hsv)
mask = cv2.erode(mask, None, iterations=6)
mask = cv2.dilate(mask, None, iterations=6)
frame = cv2.bitwise_and(frame, frame, mask=mask)

cv2.imshow('image', frame)
k = cv2.waitKey(1000) & 0xFF # large wait time to remove freezing
if k == 113 or k == 27:
break


cv2.destroyAllWindows()
cap.release()
47 changes: 47 additions & 0 deletions sampleImageprocessing/Controll Mouse with a moving object/Mouse.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import cv2
import numpy as np

import win32api
global cam
cam = cv2.VideoCapture(0)

def diffImg(t0, t1, t2):
d1 = cv2.absdiff(t2, t1)
d2 = cv2.absdiff(t1, t0)
return cv2.bitwise_and(d1, d2)
def main():
global cam
t_minus = cv2.cvtColor(cam.read()[1], cv2.COLOR_RGB2GRAY)
t = cv2.cvtColor(cam.read()[1], cv2.COLOR_RGB2GRAY)
t_plus = cv2.cvtColor(cam.read()[1], cv2.COLOR_RGB2GRAY)
while True:
ret, frame = cam.read()
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
lower_hsv = np.array([0, 130, 147])
higher_hsv = np.array([22, 255, 215])
mask = cv2.inRange(hsv, lower_hsv, higher_hsv)
mask = cv2.erode(mask, None, iterations=5)
mask = cv2.dilate(mask, None, iterations=5)
cnts = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)
cnt=cnts[0]
if len(cnts)>0:
x,y,w,h = cv2.boundingRect(cnt)
xx,yy=(2*x+w)/2 , (2*y+h)/2
if xx>0 and xx<1366 and yy>0 and yy<768:
win32api.SetCursorPos((1366-(xx*3),yy*3))


(cnts) = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)
t_minus = t
t = t_plus
t_plus = cv2.cvtColor(cam.read()[1], cv2.COLOR_RGB2GRAY)
cv2.imshow("Mouse", frame)
key = cv2.waitKey(10)
if key == 27:
cv2.destroyWindow(winName)
break
main()


Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# ImageProcessing
Image Processing projects With OpenCV Python.

This Program can control mouse cursor with a moving object.It detects the onject by its color.
Use "HSV Color filter.py" to filter the object.
Then Edit "Mouse.py" and change the following lines with values HSV values

lower_hsv = np.array([lowH, lowS,lowV])
higher_hsv = np.array([highH, highS, highV])

Save it and RUN!
90 changes: 90 additions & 0 deletions sampleImageprocessing/Hand Detection/Finger Detect.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
import numpy as np
import cv2
from math import *
def diffImg(t0, t1, t2):
d1 = cv2.absdiff(t2, t1)
d2 = cv2.absdiff(t1, t0)
return cv2.bitwise_and(d1, d2)

cap = cv2.VideoCapture(0)
nl,pl=[0,0,0,0,0],[0,0,0,0,0]
jjjj=[0,0,0,0,0]
while(1):
ret, frame = cap.read()
crop_frame = frame[0:300, 0:300]
gray_image = cv2.cvtColor(crop_frame, cv2.COLOR_BGR2GRAY)
ret, mask = cv2.threshold(gray_image, 145, 255, cv2.THRESH_BINARY)
mask_inv = cv2.bitwise_not(mask)
mask_inv = cv2.erode(mask_inv, None, iterations=1)
mask_inv = cv2.dilate(mask_inv, None, iterations=1)
drawing=mask_inv
ret,thresh = cv2.threshold(mask_inv,127,255,0)
im2,contours,hierarchy = cv2.findContours(thresh, 1, 2)
cv2.rectangle(frame, (0, 0), (300, 300), (255,0,0), 2)


if len (contours)>0:
max_area=100
ci=0
for i in range(len(contours)):
cnt=contours[i]
area = cv2.contourArea(cnt)
if(area>max_area):
max_area=area
ci=i

#Largest area contour
cnts = contours[ci]
M = cv2.moments(cnts)
cX = int(M["m10"] / M["m00"])
cY = int(M["m01"] / M["m00"])
cv2.circle(frame,(cX,cY),10,[100,255,255],3)
hull = cv2.convexHull(cnts)
hull2 = cv2.convexHull(cnts,returnPoints = False)
defects = cv2.convexityDefects(cnts,hull2)
FarDefect = []

try:
ccc=0
for i in range(defects.shape[0]):
s,e,f,d = defects[i,0]
start = tuple(cnts[s][0])
end = tuple(cnts[e][0])
far = tuple(cnts[f][0])
dist = sqrt( (start[0] - end[0])**2 + (start[1] - end[1])**2 )

if 1:
FarDefect.append(far)
#print end[0]-far[0],far[1]-end[1]
a=sqrt((far[0]-end[0])**2+ (end[1]-far[1])**2)
b=sqrt((start[0]-far[0])**2+ (start[1]-far[1])**2)
c=sqrt((start[1]-end[1])**2+(start[0]-end[0])**2)
angle=(a**2+b**2-c**2)/(2*a*b)
angle=acos(angle)

if (angle*180)/(22/7)<90 and dist>10:
cv2.line(frame,(cX,cY),end,[125,255,0],1)
cv2.line(frame,(cX,cY),end,[125,255,0] ,1)
cv2.circle(frame,end,10,[100,255,255],3)
cv2.line(frame,(cX,cY),end,[125,255,0],1)
cv2.circle(frame,end,10,[100,255,255],3)

except Exception as e:
pass

cv2.imshow('Dilation',drawing)

frame = cv2.resize(frame, (1366, 765), interpolation=cv2.INTER_CUBIC)
cv2.imshow('frame',frame)

#cv2.imshow('cropped frame',crop_frame)
cv2.imshow('grey cropped frame',gray_image)
cv2.imshow('t',mask)
cv2.imshow('t2',mask_inv)
#cv2.imshow('drawing',drawing)

if cv2.waitKey(1) & 0xFF == ord('q'):
break

cap.release()
cv2.destroyAllWindows()
9 changes: 9 additions & 0 deletions sampleImageprocessing/Hand Detection/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# ImageProcessing
Image Processing projects With OpenCV Python.

This program identifies fingers of one hand.Just run "Finger Detect.py" and you can seea blue rectangle on the top left.
Make that area with a light color background and bring your one hand to that area.

See this video

https://vimeo.com/228470426
52 changes: 52 additions & 0 deletions sampleImageprocessing/Object Detect By Color/HSV Color filter.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
import cv2
import numpy as np

def callback(x):
pass

cap = cv2.VideoCapture(0)
cv2.namedWindow('image')

ilowH = 0
ihighH = 179

ilowS = 0
ihighS = 255
ilowV = 0
ihighV = 255

cv2.createTrackbar('lowH','image',ilowH,179,callback)
cv2.createTrackbar('highH','image',ihighH,179,callback)
cv2.createTrackbar('lowS','image',ilowS,255,callback)
cv2.createTrackbar('highS','image',ihighS,255,callback)
cv2.createTrackbar('lowV','image',ilowV,255,callback)
cv2.createTrackbar('highV','image',ihighV,255,callback)



while(True):
ret, frame = cap.read()
ilowH = cv2.getTrackbarPos('lowH', 'image')
ihighH = cv2.getTrackbarPos('highH', 'image')
ilowS = cv2.getTrackbarPos('lowS', 'image')
ihighS = cv2.getTrackbarPos('highS', 'image')
ilowV = cv2.getTrackbarPos('lowV', 'image')
ihighV = cv2.getTrackbarPos('highV', 'image')

hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

lower_hsv = np.array([ilowH, ilowS, ilowV])
higher_hsv = np.array([ihighH, ihighS, ihighV])
mask = cv2.inRange(hsv, lower_hsv, higher_hsv)
mask = cv2.erode(mask, None, iterations=6)
mask = cv2.dilate(mask, None, iterations=6)
frame = cv2.bitwise_and(frame, frame, mask=mask)

cv2.imshow('image', frame)
k = cv2.waitKey(1000) & 0xFF # large wait time to remove freezing
if k == 113 or k == 27:
break


cv2.destroyAllWindows()
cap.release()
11 changes: 11 additions & 0 deletions sampleImageprocessing/Object Detect By Color/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# ImageProcessing
Image Processing projects With OpenCV Python


Run "HSV Color filter.py" and filter the object color you want to detect.
Then edit "object detect by color.py" and change the following lines with values HSV values

lower_hsv = np.array([lowH, lowS,lowV])
higher_hsv = np.array([highH, highS, highV])

Save it and RUN!
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import numpy as np
import cv2

cap = cv2.VideoCapture(0)
dd=True
while(dd):
ret, frame = cap.read()
fg=frame
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
lower_hsv = np.array([0, 163, 182])
higher_hsv = np.array([110, 255, 254])
mask = cv2.inRange(hsv, lower_hsv, higher_hsv)
mask = cv2.erode(mask, None, iterations=2)
mask = cv2.dilate(mask, None, iterations=2)

cnts = cv2.findContours(mask.copy(), cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)
cnt = cnts[0]
M = cv2.moments(cnt)
if len(cnts)>0:
frame=fg

x,y,w,h = cv2.boundingRect(cnt)
cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),2)



cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break

cap.release()
cv2.destroyAllWindows()