10000 是检测灵敏度阈值,根据需要调整灵敏度。
#coding=utf-8 import cv2 import numpy as np import usb.core import usb.backend.libusb1 import requests import time cap = cv2.VideoCapture(1) backend = usb.backend.libusb1.get_backend(find_library=lambda x: "/usr/lib/libusb-1.0.so") # dev = usb.core.find(idVendor=0x18e3, idProduct=0x5031, backend=backend) dev.ctrl_transfer(0x21,0x01,0x0800,0x0600,[0x50,0xff]) dev.ctrl_transfer(0x21,0x01,0x0f00,0x0600,[0x00,0xf6]) dev.ctrl_transfer(0x21,0x01,0x0800,0x0600,[0x25,0x00]) dev.ctrl_transfer(0x21,0x01,0x0800,0x0600,[0x5f,0xfe]) dev.ctrl_transfer(0x21,0x01,0x0f00,0x0600,[0x00,0x03]) dev.ctrl_transfer(0x21,0x01,0x0f00,0x0600,[0x00,0x02]) dev.ctrl_transfer(0x21,0x01,0x0f00,0x0600,[0x00,0x12]) dev.ctrl_transfer(0x21,0x01,0x0f00,0x0600,[0x00,0x04]) dev.ctrl_transfer(0x21,0x01,0x0800,0x0600,[0x76,0xc3]) dev.ctrl_transfer(0x21,0x01,0x0a00,0x0600,[4,0x00]) firstFrame = None while(1): ret, frame = cap.read() frame = cv2.resize(frame, (1280, 480), interpolation=cv2.INTER_CUBIC) frame_left = frame[0:480,0:640] frame_right = frame[0:480,640:1280] gray = cv2.cvtColor(frame_left, cv2.COLOR_BGR2GRAY) gray = cv2.GaussianBlur(gray, (21, 21), 0) if firstFrame is None: firstFrame = gray continue frameDelta = cv2.absdiff(firstFrame, gray) thresh = cv2.threshold(frameDelta, 25, 255, cv2.THRESH_BINARY)[1] thresh = cv2.dilate(thresh, None, iterations=2) (_, cnts, _) = cv2.findContours(thresh.copy(), cv2.RETR_CCOMP, cv2.CHAIN_APPROX_SIMPLE) g = frame.copy() ii = 0 for c in cnts: if cv2.contourArea(c) < 10000: continue ii = 1 #(x, y, w, h) = cv2.boundingRect(c) #print (cv2.contourArea(c)) #cv2.rectangle(g, (x, y), (x + w, y + h), (0, 255, 0), 2) if ii == 1: url = "http://br.bj.oupeng.com:10080" t = time.time() cv2.imwrite("./"+str(t)+".jpg", g) files = {'file123':(str(t)+'.png',open("./"+str(t)+".jpg",'rb'))} data = {'time',str(t)} r = requests.post(url, files=files )#, data = data) print(r.text) cv2.imshow("br",g) firstFrame = gray.copy() ##去掉绿色通道,生成红蓝图 #zeros = np.zeros(frame_2.shape[:2], dtype = "uint8") #merged = cv2.merge([b,zeros,r2]) #cv2.imshow("br",merged) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows()