Files
ai-titration/vid_chk.py
flt6 27c1b08365 final
Former-commit-id: 251b57f490efdc292b0c4c019431219b75ee890c
2025-07-03 22:29:31 +08:00

57 lines
1.4 KiB
Python

import cv2
import numpy as np
flag = False
vidId = 1
cap = cv2.VideoCapture(vidId, cv2.CAP_DSHOW)
while not flag:
suc,im = cap.read()
cv2.imshow("image",im)
k = cv2.waitKey(0)
if k & 0xff == ord('q'):
# cap.release()
# cv2.destroyAllWindows()
flag=True
else:
vidId+=1
cap.release()
cap.open(vidId, cv2.CAP_DSHOW)
print(f"使用摄像头索引: {vidId}")
import ch340
base = 30
pump = ch340.CH340()
while True:
suc,im = cap.read()
hsv = cv2.cvtColor(im,cv2.COLOR_BGR2HSV)
s = hsv[:,:,1]
mask = s>base
cv2.imshow('mask',im*mask[:,:,np.newaxis])
tot = mask.shape[0]*mask.shape[1]
val = np.sum(mask)
rate = val/tot
thr = (0.05,0.2, 0.5)
ret = ""
if rate < thr[0]:
ret = "transport"
elif rate <thr[1]:
ret = "middle"
elif rate < thr[2]:
ret = "about"
else:
ret = "colored"
im = cv2.putText(im, f"Rate: {rate:.2},base={base},{ret}", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)
cv2.imshow('image',im)
k = cv2.waitKey(1)
if k & 0xff == ord('w'):
base+=1
elif k & 0xff == ord('s'):
base-=1
elif k & 0xff == ord('a'):
pump.push_async(speed=0.1,vol=0.1)
elif k & 0xff == ord('q'):
print("Camera index = ", vidId)
print("k =",base)
cap.release()
cv2.destroyAllWindows()
break