簡體   English   中英

opencv while循環,回到第一個循環

[英]opencv while loops, going back to first loop

我有以下python代碼(並且我正在使用opencv3)。 此代碼需要完成的工作是拍攝通用攝像機的實時流,然后分析靜態圖片(或幀)。 我遇到的問題是,退出第二個嵌套的while循環后,我可以弄清楚如何返回到初始循環(#1st循環)。

該代碼應:

進行直播時,按“ q”捕獲幀並轉到第二個循環中的下一個循環:如果“ s”(在分析了圖像之后),則應回到第一個循環。 如果為“ esc”,則程序應終止。

我確實嘗試過遞歸方法(def()),但遇到另一個問題,我無法弄清楚如何終止程序。

import numpy as np
import cv2

cap = cv2.VideoCapture(0)
#Set LED brightness for camera
cap.set(cv2.CAP_PROP_BRIGHTNESS, 120)

#1st loop
while (True):

    #capture camera stream
    ret, frame = cap.read()
    cv2.imshow('live image', frame)
if cv2.waitKey(0) == ord('q'):

    cap.release()
    cv2.destroyAllWindows()
    pass
    print ('image alteration block')



    #2nd loop
    while (True):
        img = frame
        cv2.imshow('image',img)
        k = cv2.waitKey(0)
        if k == 27:         # wait for ESC key to exit and terminate progra,
            cv2.destroyAllWindows()
            break

        elif k == ord('s'): # wait for 's' key to save the image and go back to the live stream
            cv2.imwrite('messigray.png',img)
            print ('go back to the beginning')
            cv2.destroyAllWindows()
        continue  #NOT SURE WHAT TO DO HERE

您不允許程序轉義第二個while循環。 在第二個循環中使用其他while條件。 代替while(True)使用布爾值:

#2nd loop
    second=True 
    while (second):
        img = frame
        cv2.imshow('image',img)
        k = cv2.waitKey(0)
        if k == 27:         # wait for ESC key to exit and terminate progra,
            cv2.destroyAllWindows()
            break

        elif k == ord('s'):
            cv2.imwrite('messigray.png',img)
            print ('go back to the beginning')
            cv2.destroyAllWindows()
            #modify the loop condition
            second = False 
        continue

那應該使您擺脫第二個循環,依靠中斷並不總是處理while循環的最佳方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM