Skip to content
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 numberDiff line numberDiff 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()
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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()
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Image Processing examples added by shanaka95 · Pull Request #19 · lugnitdgp/Learn-Python · GitHub
Skip to content
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 numberDiff line numberDiff 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()
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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()
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Image Processing examples added by shanaka95 · Pull Request #19 · lugnitdgp/Learn-Python · GitHub
Skip to content
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 numberDiff line numberDiff 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()
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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()
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Image Processing examples added by shanaka95 · Pull Request #19 · lugnitdgp/Learn-Python · GitHub
Skip to content
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 numberDiff line numberDiff 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()
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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()
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Image Processing examples added by shanaka95 · Pull Request #19 · lugnitdgp/Learn-Python · GitHub
Skip to content
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 numberDiff line numberDiff 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()
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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()
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Image Processing examples added by shanaka95 · Pull Request #19 · lugnitdgp/Learn-Python · GitHub
Skip to content
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 numberDiff line numberDiff 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()
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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()
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Image Processing examples added by shanaka95 · Pull Request #19 · lugnitdgp/Learn-Python · GitHub
Skip to content
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 numberDiff line numberDiff 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()
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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()
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Image Processing examples added by shanaka95 · Pull Request #19 · lugnitdgp/Learn-Python · GitHub
Skip to content
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 numberDiff line numberDiff 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()
Original file line numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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 numberDiff line numberDiff 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()