はじめに
openCVで出てくる
ret, frame = cap.read()
これの意味はなにか?文法てきによく分かっていなかったのでまとめてみた。
端的にいうと
cap.read()
に画像情報が格納されていたらretは
>>>print(ret) True
もし格納されていなかったら
>>>print(ret) False
タプル
タプルに格納された値を展開して、変数に代入できる。
ちなみにリストにおいても同様の操作が可能。
>>> t =(0,1,2,3) >>> a,b,c,d = t >>> print (a) 0 >>> print(b) 1 >>> print(c) 2 >>> print(d) 3
リストと組み合わせるとこんなことも出来てしまう。
>>> tt = [(11,12),(13,43),(1,2)] >>> a,b = tt[1] >>> print(1) 1 >>> print(a) 13 >>> print(b) 43
cap.read()
同様に考えるて、中身を見てみると、 retはTrue, frameは画像の情報っぽい。
>>> import cv2 >>> cap = cv2.VideoCapture(0) >>> ret, frame = cap.read() >>> print(ret) True >>> print(frame) [[[ 86 86 98] [ 84 85 96] [ 75 82 102] ... [201 235 248] [211 232 242] [211 232 242]] [[ 87 88 97] [ 87 88 97] [ 77 86 105] ... [221 237 244] [222 232 242] [222 232 242]] [[ 90 86 96] [ 90 86 96] [ 78 89 103] ... [231 235 237] [219 234 243] [218 233 242]] ... [[ 54 85 80] [ 58 89 84] [ 61 89 87] ... [ 34 49 58] [ 22 48 64] [ 22 48 64]] [[ 61 84 85] [ 64 86 87] [ 59 89 87] ... [ 29 48 58] [ 20 49 64] [ 22 51 67]] [[ 63 85 81] [ 67 88 85] [ 55 90 87] ... [ 26 52 64] [ 24 54 67] [ 26 55 69]]] >>>
参考文献
Pythonでタプルやリストをアンパック(複数の変数に展開して代入) | note.nkmk.me
Python - Pythonのretってなんですか|teratail