ret, frame = cap.read() のretとはなにか?

スポンサーリンク

はじめに

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

Python, OpenCVで動画を読み込み(ファイル・カメラ映像) | note.nkmk.me

OpenCV: cv::VideoCapture Class Reference