Update to working greyscale recognition
This commit is contained in:
62
GestureRecognition/HandRecGray.py
Normal file
62
GestureRecognition/HandRecGray.py
Normal file
@@ -0,0 +1,62 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Created on Thu Nov 22 14:16:46 2018
|
||||
|
||||
@author: pivatom
|
||||
"""
|
||||
|
||||
import numpy as np
|
||||
import cv2
|
||||
|
||||
img = cv2.imread('H:\car\GestureRecognition\IMG_0818.png', 1)
|
||||
|
||||
# Downscale the image
|
||||
img = cv2.resize(img, None, fx=0.1, fy=0.1, interpolation = cv2.INTER_AREA)
|
||||
|
||||
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
|
||||
|
||||
img_gray[img_gray[:,:] > 90] = 255
|
||||
img_gray[img_gray[:,:] < 90] = 0
|
||||
|
||||
# Threshold to binary.
|
||||
ret,img_thresh = cv2.threshold(img_gray, 127, 255, cv2.THRESH_BINARY)
|
||||
|
||||
# Doesn't take too long.
|
||||
k = np.sum(img_thresh) / 255
|
||||
|
||||
x_ind = np.indices(img_thresh.shape[1])
|
||||
coords = np.zeros(img_thresh.shape)
|
||||
|
||||
|
||||
# generate individual coordinates for x then transpose the matrix o
|
||||
#
|
||||
# First sum x coordinates.
|
||||
#xb = int(img_ind[img_thresh == 255].sum(axis=1).sum()/k)
|
||||
#print(xb)
|
||||
# Then sum y coordinates
|
||||
#yb = int(img_ind[img_thresh == 255].sum(axis=0).sum()/k)
|
||||
#print(yb)
|
||||
|
||||
x,y,k,xb,yb = 0,0,0,0,0
|
||||
|
||||
# this is inherently slow...like very very slow...
|
||||
for pix in img_thresh:
|
||||
for j in pix:
|
||||
if j == 255:
|
||||
k += 1
|
||||
xb += x
|
||||
yb += y
|
||||
x += 1
|
||||
y += 1
|
||||
x = 0
|
||||
|
||||
centre = (int(xb/k), int(yb/k))
|
||||
|
||||
cv2.rectangle(img_thresh, centre, (centre[0] + 20, centre[1] + 20), (0,0,255), 3)
|
||||
cv2.circle(img_thresh, centre, 140, (0,0,0), 3)
|
||||
|
||||
# Now need to trace around the circle to figure out where the fingers are.
|
||||
|
||||
cv2.imshow("Binary-cot-out", img_thresh)
|
||||
cv2.waitKey(0)
|
||||
cv2.destroyAllWindows()
|
||||
Reference in New Issue
Block a user