2021年8月13日(金) 22:10
python は2と3が入っている。念のため両方で pip と flisk が使えるようにする。
更に Apache を入れ、flisk 用のテンプレートを設置。カメラテストのプログラムを動かすと、最新ジェットパックの時と同様のエラーが出た。

ならばと、昨日実行させた VideoCapture(0) だけ確認するプログラムを動かす。やはり、派手にエラーが出る。絶望したのだが、リセットすると元に戻った。
試行錯誤し、カメラのデーター形式をモーションjpegに変更することに成功。
#!/usr/bin/env python3
import cv2
cap = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc('m','j','p','g')
cap.set(cv2.CAP_PROP_FOURCC, int(fourcc))
width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
fps = cap.get(cv2.CAP_PROP_FPS)
print("WIDTH:", width)
print("HEIGHT:", height)
print("FPS:", fps)
これで、フレームレートが30に向上したことが確認できる。

ただし、動作するのは python だけ。python3 で実行すると、無限ループにでも入ったように反応が無くなり、強制終了することになる。
この際とにかく動くことが重要で、バージョンの上がった環境など用意しなくていい。もう、そういう諦めの境地である。このまま、python2 で動かすことにする。
今度は、結果表示している最後の3行に、read() を挿入。
print("WIDTH:", width)
print("HEIGHT:", height)
ret, img = cap.read()
print("FPS:", fps)
すると、暫く待たされた挙げ句に read() でエラー発生。

ここまで良い線来ているのに、どうしても read() できない。出ているエラーについても調べたが、有用な前例は皆無。ちなみに、cap.isOpened() はしっかり True が返って来ている。それなのに、read() できない。
どれだけ調べても、read() できないという前例がどこにもない。みんなすんなり、read() ではエラーが出ていない。返り値がエラーという前例はあっても、read() 自体が動作しないという前例がない。どうにもならない。
こうなると、相性により動かない、このカメラは使えない、という最悪の結果が見えてきた。
written by higashino [Sタンク 1/16] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]
Generated by MySketch GE 1.4.1
Remodelling origin is MySketch 2.7.4