import cv2
|
|
import time
|
|
import numpy as np
|
|
|
|
cap = cv2.VideoCapture(1)
|
|
|
|
def threshold_slow(image):
|
|
h = image.shape[0]
|
|
w = image.shape[1]
|
|
for y in range(0, h):
|
|
for x in range(0, w):
|
|
if np.any(image[y, x] != 0):
|
|
return True
|
|
|
|
return False
|
|
|
|
while True:
|
|
ret, frame = cap.read()
|
|
frame_org = frame
|
|
frame = frame[100:300, 100:300]
|
|
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
|
|
sensitivity = 40
|
|
lower_white = np.array([0,0,255-sensitivity])
|
|
upper_white = np.array([255,sensitivity,255])
|
|
mask = cv2.inRange(hsv, lower_white, upper_white)
|
|
res = cv2.bitwise_and(frame,frame, mask=mask)
|
|
|
|
res = cv2.erode(res, None, iterations=2)
|
|
res = cv2.dilate(res, None, iterations=4)
|
|
|
|
mask = cv2.erode(mask, None, iterations=2)
|
|
mask = cv2.dilate(mask, None, iterations=4)
|
|
|
|
if threshold_slow(res):
|
|
cv2.rectangle(frame_org, (100, 100), (300, 300), (255, 0, 0), 2)
|
|
|
|
cv2.imshow('frame', frame)
|
|
cv2.imshow('org', frame_org)
|
|
cv2.imshow('mask', mask)
|
|
cv2.imshow('res', res)
|
|
|
|
k = cv2.waitKey(5) & 0xFF
|
|
if k == ord('q'):
|
|
break
|
|
|
|
cap.release()
|
|
cv2.destroyAllWindows()
|