Files
2026-03-31 13:28:59 +02:00

45 lines
1.2 KiB
Python

import cv2
import numpy as np
from matplotlib import pyplot as plt
video=cv2.VideoCapture(0)
mode=0
nbr_classes=180
while True:
ret, frame=video.read()
if ret is False:
quit()
if mode:
frame=cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
hist=cv2.calcHist([frame], [0], None, [nbr_classes], [0, 256])
label="Intensité"
else:
hsv=cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
hist=cv2.calcHist([hsv], [0], None, [nbr_classes], [0, 180])
label="Couleur"
cv2.normalize(hist, hist, 0, 255, cv2.NORM_MINMAX)
cv2.putText(frame, "Mode[o] {:d} Nbr classes[p|m]: {:d}".format(mode, nbr_classes), (10, 30), cv2.FONT_HERSHEY_COMPLEX_SMALL, 1, (0, 0, 255), 1)
plt.clf()
plt.plot(hist)
plt.title(label)
plt.show(block=False)
cv2.imshow("image", frame)
plt.pause(0.001)
key=cv2.waitKey(5)&0xFF
if key==ord('q'):
quit()
if key==ord('o'):
mode=not mode
nbr_classes=(255 if mode else 180)
if key==ord('p'):
nbr_classes*=2
if key==ord('m'):
nbr_classes//=2
video.release()
cv2.destroyAllWindows()