ちょっと先の未来クイズ第2問

ラズパイとパイカメラを使用して5枚連続撮影したいのですが
for文の中の”i”の書き方がわからないです。
ご親切な方、よろしければご教示頂けないでしょうか?
以下が現状のうまくいかないところです。
while True:
for i in range(5):
ret, img(i) = cap.read()
img(i) = cv2.resize(img(i), (640,480))
date = datetime.now().strftime("%Y%m%d_%H%M%S")
cv2.rectangle(img(i), (0,450), (300, 480), color=(255,255,0),thickness= -1)
cv2.putText(img(i), f'{date}',(0,475),fontType,1,(0,0,0),1)
cv2.imshow("camera(i)", img(i))
cv2.moveWindow("camera(i)", 0,0)
key = cv2.waitKey(1)
if cv2.waitKey(1) & 0xFF == ord('q'):
break

A 回答 (3件)

ちょっとそのライブラリを使ったことがないので、詳しくは分からないのですが


img(i)の(i)を全て取っ払って
“camera(i)”はf”camera{i}”
にしたらうまくいく気がしなくもないです
的外れでしたらごめんなさい
    • good
    • 1
この回答へのお礼

助かりました

ご回答ありがとうございます!
その通りでできました!!
ありがとうございました!!

お礼日時:2022/01/04 15:27

> imgに1~5の番号を振りたい



プログラミング初心者によくあることです。
「変数名を別の変数や値を使って決める」というようなことは、「できない」と思っておいてください。
※ 多くの言語では実際にできません
※ できるような言語でも「どうしてもそれしか無い場合の最後の手段」で、他に方法があればそちらを使います。


今回の例だと「複数の値をまとめてあつかうための型である listやdictを使う」というのが常套手段です。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます!
listやdictですか。。。listについては本で少しかじったのですが
dictについては全く。。。
もしよろしければlistでのやり方をご教示頂けないでしょうか?
for i in range(5):
img = ['img1','img2','img3','img4','img5']
img[i] = cap.read()
こんな感じでしょうか?

お礼日時:2022/01/03 18:43

capはどんなオブジェクトなのか、クラスはなにか


が無いとはっきりと言えませんが
img(i) という表記があやしいと思います。
どんな意図があってこう書いたのですか?
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます!
img(i)ですよね、そこの書き方がわからなくて。。。
5ループさせて、それぞれのimgに1~5の番号を振りたいと
思って書いたのですが、違いますよね。
もしよろしければ、ご教示頂けないでしょうか?
capはcap = cv2.VideoCapture(0) # 任意のカメラ番号に変更する
です。

お礼日時:2022/01/03 16:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報