You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

47 lines
1.1 KiB

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()