简体   繁体   中英

Reduced camera resolution but higher display window in python open cv

I am working on a project which requires to do face detection on raspberry pi. I have a USB camera to do this. The frame rate was apparently very slow. So, I scaled down the capture resolution using VideoCapture.set() . This decreased the resolution to 320, 214 as I set it. This increased the capture frame rate considerably but it the feed in displayed the feed on a window on 320 X 214. I want to keep the same capture resolution but I want higher size display window. I am just a beginner to python and open cv. Please help me do it. Below is the code I wrote for just a simple camera feed.

    import numpy as np
    import cv2
    import time

    cap = cv2.VideoCapture(-1)

    cap.set(3, 320) #width
    cap.set(4, 216) #height
    cap.set(5, 15)  #frame rate
    time.sleep(2)

    while(cap.isOpened()):
        ret, frame = cap.read()
        cv2.imshow("captured video", frame)
        if cv2.waitKey(33) == ord('q'):
            break

cap.release()
cv2.destroyAllWindows()

If I understand you correctly, you want the display image to be a scaled up version of the original. If so, you just need cv2.resize

display_scale = 4
height, width = frame.shape[0:2]
height_display, width_display = display_scale * height, display_scale * width
# you can choose different interpolation methods
frame_display = cv2.resize(frame, (display_width, display_height),
                           interpolation=cv2.INTER_CUBIC)
cv2.imshow("captured video", frame_display)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM