This is a Computer vision package that makes its easy to run Image processing and AI functions. At the core it uses OpenCV and Mediapipe libraries.
You can simply use pip to install the latest version of cvzone.
pip install opencvzone
import opencvzone import cv2 cap = cv2.VideoCapture(0) detector = opencvzone.FaceDetector() while True: success, img = cap.read() img, bboxs = detector.findFaces(img) print(bboxs) cv2.imshow("Image", img) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows()
import opencvzone import cv2 cap = cv2.VideoCapture(0) cap.set(3, 1280) cap.set(4, 720) detector = opencvzone.HandDetector(detectionCon=0.5, maxHands=1) while True: # Get image frame success, img = cap.read() # Find the hand and its landmarks img = detector.findHands(img) lmList, bbox = detector.findPosition(img) # Display cv2.imshow("Image", img) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows()
if lmList: # Find how many fingers are up fingers = detector.fingersUp() totalFingers = fingers.count(1) cv2.putText(img, f'Fingers:{totalFingers}', (bbox[0] + 200, bbox[1] - 30), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)
if lmList: # Find Distance Between Two Fingers distance, img, info = detector.findDistance(8, 12, img) cv2.putText(img, f'Dist:{int(distance)}', (bbox[0] + 400, bbox[1] - 30), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)
if lmList: # Find Hand Type myHandType = detector.handType() cv2.putText(img, f'Hand:{myHandType}', (bbox[0], bbox[1] - 30), cv2.FONT_HERSHEY_PLAIN, 2, (0, 255, 0), 2)
import opencvzone import cv2 cap = cv2.VideoCapture(0) detector = opencvzone.PoseDetector() while True: success, img = cap.read() img = detector.findPose(img) lmList = detector.findPosition(img, draw=False) if lmList: print(lmList[14]) cv2.circle(img, (lmList[14][1], lmList[14][2]), 15, (0, 0, 255), cv2.FILLED) cv2.imshow("Image", img) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows()
import opencvzone import cv2 cap = cv2.VideoCapture(0) detector = opencvzone.FaceMeshDetector(maxFaces=2) while True: success, img = cap.read() img, faces = detector.findFaceMesh(img) if faces: print(faces[0]) cv2.imshow("Image", img) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows()
import opencvzone import cv2 cap = cv2.VideoCapture(0) cap.set(3, 1280) cap.set(4, 720) while True: success, img = cap.read() imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) imgList = [img, img, imgGray, img, imgGray, img,imgGray, img, img] stackedImg = opencvzone.stackImages(imgList, 3, 0.4) cv2.imshow("stackedImg", stackedImg) if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows()
import opencvzone import cv2 cap = cv2.VideoCapture(0) detector = opencvzone.HandDetector() while True: # Get image frame success, img = cap.read() # Find the hand and its landmarks img = detector.findHands(img, draw=False) lmList, bbox = detector.findPosition(img, draw=False) if bbox: # Draw Corner Rectangle cvzone.cornerRect(img, bbox) # Display cv2.imshow("Image", img) cv2.waitKey(1)
import opencvzone import cv2 fpsReader = opencvzone.FPS() cap = cv2.VideoCapture(0) cap.set(3, 1280) cap.set(4, 720) while True: success, img = cap.read() fps, img = fpsReader.update(img,pos=(50,80),color=(0,255,0),scale=5,thickness=5) cv2.imshow("Image", img) cv2.waitKey(1)
import opencvzone import cv2 from ctypes import cast, POINTER from comtypes import CLSCTX_ALL from pycaw.pycaw import AudioUtilities, IAudioEndpointVolume wCam, hCam = 640, 480 cap = cv2.VideoCapture(1) cap.set(3, wCam) cap.set(4, hCam) pTime = 0 detector = opencvzone.HandDetector(detectionCon=0.5, maxHands=1) devices = AudioUtilities.GetSpeakers() interface = devices.Activate(IAudioEndpointVolume._iid_, CLSCTX_ALL, None) volume = cast(interface, POINTER(IAudioEndpointVolume)) volRange = volume.GetVolumeRange() minVol = volRange[0] maxVol = volRange[1] vol = 0 volBar = 400 volPer = 0 area = 0 colorVol = (255, 0, 0) while True: success, img = cap.read() # Find Hand img = detector.findHands(img) lmList, bbox = detector.findPosition(img, draw=True) if len(lmList) != 0: # Filter based on size area = (bbox[2] - bbox[0]) * (bbox[3] - bbox[1]) // 100 # print(area) if 250 < area < 1000: # Find Distance between index and Thumb length, img, lineInfo = detector.findDistance(4, 8, img) # print(length) # Convert Volume volBar = np.interp(length, [50, 200], [400, 150]) volPer = np.interp(length, [50, 200], [0, 100]) # Reduce Resolution to make it smoother smoothness = 10 volPer = smoothness * round(volPer / smoothness) # Check fingers up fingers = detector.fingersUp() # print(fingers) # If pinky is down set volume if not fingers[4]: volume.SetMasterVolumeLevelScalar(volPer / 100, None) cv2.circle(img, (lineInfo[4], lineInfo[5]), 15, (0, 255, 0), cv2.FILLED) colorVol = (0, 255, 0) else: colorVol = (255, 0, 0) # Drawings cv2.rectangle(img, (50, 150), (85, 400), (255, 0, 0), 3) cv2.rectangle(img, (50, int(volBar)), (85, 400), (255, 0, 0), cv2.FILLED) cv2.putText(img, f'{int(volPer)} %', (40, 450), cv2.FONT_HERSHEY_COMPLEX,1, (255, 0, 0), 3) cVol = int(volume.GetMasterVolumeLevelScalar() * 100) cv2.putText(img, f'Vol Set: {int(cVol)}', (400, 50), cv2.FONT_HERSHEY_COMPLEX,1, colorVol, 3) # Frame rate cTime = time.time() fps = 1 / (cTime - pTime) pTime = cTime cv2.putText(img, f'FPS: {int(fps)}', (40, 50), cv2.FONT_HERSHEY_COMPLEX,1, (255, 0, 0), 3) cv2.imshow("Img", img) cv2.waitKey(1)