如何在 Open CV Python 中缩放网络摄像头?

新手上路,请多包涵

我希望我的网络摄像头在 open cv python 中放大,但我不知道该怎么做。谁能帮我解决我的问题?

 import cv2
video = cv2.VideoCapture(0)
while True:
    check, frame = video.read()
    cv2.imshow('Video', frame)
    key = cv2.waitKey(1)
    if key == 27:
        break
  video.release()
  cv2.destroyAllWindows

原文由 Hayasiiiint 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

您可以使用此解决方案。它使工作->裁剪+缩放+向上排列和向下排列。

 import cv2

        def show_webcam(mirror=False):
            scale=10

            cam = cv2.VideoCapture(0)
            while True:
                ret_val, image = cam.read()
                if mirror:
                    image = cv2.flip(image, 1)

                #get the webcam size
                height, width, channels = image.shape

                #prepare the crop
                 centerX,centerY=int(height/2),int(width/2)
                radiusX,radiusY= int(scale*height/100),int(scale*width/100)

                minX,maxX=centerX-radiusX,centerX+radiusX
                minY,maxY=centerY-radiusY,centerY+radiusY

                cropped = image[minX:maxX, minY:maxY]
                resized_cropped = cv2.resize(cropped, (width, height))

                cv2.imshow('my webcam', resized_cropped)
                if cv2.waitKey(1) == 27:
                    break  # esc to quit

                #add + or - 5 % to zoom

                if cv2.waitKey(1) == 0:
                    scale += 5  # +5

                if cv2.waitKey(1) == 1:
                    scale = 5  # +5

            cv2.destroyAllWindows()

        def main():
            show_webcam(mirror=True)

        if __name__ == '__main__':
            main()

原文由 Amara BOUDIB 发布,翻译遵循 CC BY-SA 4.0 许可协议

缩放只是增加图像尺寸。只需使用 PIL 将帧转换为图像然后调整大小功能即可增加图像大小。示例代码

    import tkinter
    import cv2
    from PIL import Image,ImageTk

    root = tkinter.Tk()

    root.geometry("1000x500+200+0")
    w = 1000
    h = 630

    capture = tkinter.Canvas(root, bd=2, bg="blue", height=h, width=w)
    capture.grid(column = 0, row = 0)
    video = None
    frame = None
    img=None
    show=None
    begin = False
    def start_capture(event):
        global begin,frame,img,root,show,capture,video
        video = cv2.VideoCapture(0)
        begin = True
        while begin:
            check, frame = video.read()

            img = Image.fromarray(frame)
            w,h = img.size
            img = img.resize((w*2,h*2))
            show = ImageTk.PhotoImage(img)
            capture.create_image(0,0,anchor=tkinter.NW,image=show)
            root.update()

    def stop_capture(event):
        global video,begin
        begin = False
        video.release()

    start = tkinter.Button(root, text='Start')
    start.grid(column = 0, row = 2)
    start.bind('<Button-1>', start_capture)
    stop = tkinter.Button(root, text='Stop')
    stop.grid(column = 1, row = 2)
    stop.bind('<Button-1>', stop_capture)

    root.mainloop()

原文由 Medhavi Monish 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题