2016-04-09 6 views
-3

私はGPIOピン17の入力を毎回Webカメラで写真を撮るためにPythonでスクリプトをプログラミングしています。私はwhileループを使用していますが、ピン17に接続されているbuttomが押されず、Trueに設定されます。そのセットをFalseにプッシュすると、コードが開始されます。ifステートメントを続ける

私の問題は次のとおりです。if文のコードは、buttomが解放されてTrueに戻される前に終了できません。それで、それはただ停止し、画像を表示します。どのように私は、コードを取得することができますの任意のアイデアをし、それは真の状態に戻りますか?

EDIT:ifステートメントは、ボタンが押されている限り実行されます。解放されると停止します。意味:私がリリースまでプッシュする時、スクリプトは画像を表示するだけで、 "waitKey"コマンドとbeyound dosentが実行されます。そのセットは "True"に戻っているからです。すでにコメントで述べた

import RPi.GPIO as GPIO 
import time 
import cv2 
import os 

GPIO.setmode(GPIO.BCM) 

GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP) 

while True: 
    input_state = GPIO.input(17) 
    if input_state == False: 
    print('Button Pressed') 
    capture = cv2.VideoCapture(0) 
    capture.set(3,1280) 
    capture.set(4,1024) 
    ret, img = capture.read() 
    cv2.imshow("input", img) 
    cv2.waitKey(1500) 
    del(capture) 
    cv2.VideoCapture(0).release() 
+3

あなたの質問の字下げは正しいですか?私はその孤独な 'if'行が何をしているのか判断できません。 – usr2564301

+0

現在、何もしていません。それが私が尋ねた理由です。 – usr2564301

+0

ifの代わりにwhileを入れてください。 input_stateは読み込み入力ですが、falseになるとループを終了し、次のコードを続けます。 – Micka

答えて

1

として、if文が適切に字下げされません後コード:しかし、私はそれをHERESにコードを

を完了する必要があります。

下記のフォーマット済みのものをお試しください。条件が成立するまで、代わりに、単一のif文、ループの:

import RPi.GPIO as GPIO 
import time 
import cv2 
import os  
GPIO.setmode(GPIO.BCM)  
GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP) 

while True: 
    input_state = GPIO.input(17) 
    if not input_state: # not False = True 
     print('Button Pressed') 
     capture = cv2.VideoCapture(0) 
     capture.set(3,1280) 
     capture.set(4,1024) 
     ret, img = capture.read() 
     cv2.imshow("input", img) 
     cv2.waitKey(1500) 
     del(capture) 
     cv2.VideoCapture(0).release() 
     input_state = True 
+1

input_state ... –

+0

@JacquesdeHooge変更後: – Mitty

+0

テスト済みです。変更なし – bjsi9

0

イムない構文についてとてもわからないのpythonコーダ:

は、このコードを試してみてください。

import RPi.GPIO as GPIO 
import time 
import cv2 
import os 

GPIO.setmode(GPIO.BCM) 

GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_UP) 

while True: 
    input_state = GPIO.input(17) 
    while input_state: 
     input_state = GPIO.input(17) 
    print('Button Pressed') 
    capture = cv2.VideoCapture(0) 
    capture.set(3,1280) 
    capture.set(4,1024) 
    ret, img = capture.read() 
    cv2.imshow("input", img) 
    cv2.waitKey(1500) 
    del(capture) 
    cv2.VideoCapture(0).release() 
+0

変更はありませんが、変更はありません。画像は別ウィンドウで表示され、もう一度閉じると表示されます。私がボタンを押すと、同じウィンドウ内の新しい画像が表示されます。 – bjsi9

+0

あなたはどんな振る舞いをしたいですか?手動でウィンドウを閉じる必要があります:cv.DestroyWindow(name) – Micka

関連する問題