Clean up project directory.
This commit is contained in:
@@ -1,79 +0,0 @@
|
||||
# -*- 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)
|
||||
|
||||
min_seg_threshold = 1.2
|
||||
max_seg_threshold = 1.8
|
||||
|
||||
# Need to make this get correct skin tones.
|
||||
# img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
|
||||
# img_gray[img_gray[:,:] > 90] = 255
|
||||
# img_gray[img_gray[:,:] < 90] = 0
|
||||
|
||||
img_bin = np.zeros(shape=(img.shape[0], img.shape[1]), dtype=int)
|
||||
img = np.where(img[:,:,1] == 0, 0, img[:,:,1])
|
||||
img[(img[:,:,2]/img[:,:,1] > min_seg_threshold) & (img[:,:,2]/img[:,:,1] < max_seg_threshold)] = [255,255,255]
|
||||
|
||||
# Threshold to binary.
|
||||
ret,img_thresh = cv2.threshold(img_bin, 127, 255, cv2.THRESH_BINARY)
|
||||
|
||||
# Following method is much faster -> 0.00143s
|
||||
# Still want to speed up further by lowering reliance on memory, which is quite heavy..
|
||||
k = np.sum(img_thresh) / 255
|
||||
|
||||
# Taking indices for num of rows.
|
||||
x_ind = np.arange(0,img_thresh.shape[1])
|
||||
y_ind = np.arange(0,img_thresh.shape[0])
|
||||
coords = np.zeros((img_thresh.shape[0], img_thresh.shape[1], 2))
|
||||
coords_x = np.zeros((img_thresh.shape[0], img_thresh.shape[1]))
|
||||
coords_y = np.zeros((img_thresh.shape[0], img_thresh.shape[1]))
|
||||
coords_x[:,:] = x_ind
|
||||
|
||||
|
||||
# Even this is extremely quick as it goes through rows in the numpy array, which in python is much faster than columns
|
||||
for element in y_ind:
|
||||
coords_y[element,:] = element
|
||||
|
||||
# Now need to get the average x value and y value for centre of gravity
|
||||
xb = int(np.sum(coords_x[img_thresh == 255])/k)
|
||||
yb = int(np.sum(coords_y[img_thresh == 255])/k)
|
||||
|
||||
centre = (int(np.sum(coords_x[img_thresh == 255])/k), int(np.sum(coords_y[img_thresh == 255])/k))
|
||||
|
||||
#x,y,k,xb,yb = 0,0,0,0,0
|
||||
#
|
||||
## this is inherently slow...like very very slow...0.114s
|
||||
#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.
|
||||
# First get equation of the circle:
|
||||
# y = sart(r2 - (x-c)2 + c)
|
||||
|
||||
cv2.imshow("Binary-cot-out", img_thresh)
|
||||
cv2.waitKey(0)
|
||||
cv2.destroyAllWindows()
|
||||
@@ -1,34 +0,0 @@
|
||||
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)
|
||||
|
||||
min_seg_threshold = 1.2
|
||||
max_seg_threshold = 3
|
||||
|
||||
# prevent divide by zero, by just forcing pixel to be ignored.
|
||||
np.where(img[:,:,1] == 0, 0, img[:,:,1])
|
||||
img[(img[:,:,2]/img[:,:,1] > min_seg_threshold) & (img[:,:,2]/img[:,:,1] < max_seg_threshold)] = [255,255,255]
|
||||
|
||||
# Try removing image noise.
|
||||
#img = cv2.fastNlMeansDenoising(img)
|
||||
|
||||
cv2.imshow('image', img)
|
||||
cv2.waitKey(0)
|
||||
cv2.destroyAllWindows()
|
||||
|
||||
# Remove non-hand parts
|
||||
|
||||
# Find centre of the hand
|
||||
# Hand parts are white pixels.
|
||||
# Find sum of each col/row to find the left/rightmost and top/bottommost white pixels.
|
||||
# Have used a for loop but obviously that is going to be slow.
|
||||
|
||||
# Draw appropriate circle
|
||||
|
||||
# Calculate number of different peaks.
|
||||
# Article just traced around the circle and counted number of times switched from
|
||||
# zero to one.
|
||||
@@ -30,7 +30,7 @@ class SimpleHandRecogniser(HandRecogniser):
|
||||
|
||||
# Apply another blur to rmeove any small holes/noise
|
||||
self.img_cut = self.__denoise(self.img_cut)
|
||||
ret, self.img_cut = cv2.threshold(self.img_cut, 50, 255, cv2.THRESH_BINARY)
|
||||
_, self.img_cut = cv2.threshold(self.img_cut, 50, 255, cv2.THRESH_BINARY)
|
||||
|
||||
def __denoise(self, image):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user