質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

2回答

1925閲覧

Python Kivy で Camera キャプチャデータを取得する方法

vibrato

総合スコア52

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

1グッド

1クリップ

投稿2017/12/11 10:21

編集2017/12/12 03:33

python kivy の Camera からキャプチャデータを取得したいと考えているのですが方法が解りません…

python

1from kivy.app import App 2from kivy.lang import Builder 3from kivy.uix.boxlayout import BoxLayout 4 5Builder.load_string(''' 6<Root>: 7 Camera: 8 id: camera 9 resolution: (640, 480) 10 play: True 11''') 12 13class Root(BoxLayout): 14 def root(self): 15 return 16 17class Camera(App): 18 def build(self): 19 return Root() 20 21Camera().run()

↑Kivyにおいてこの最低限のコードでカメラは起動します。

Python

1import cv2 2cam = cv2.VideoCapture(0) 3while cv2.waitKey(10) == -1: 4 cap = cam.read()[1] 5 cv2.imshow('camera', cap)

↑OpenCVにおいてはこの最低限のコードでカメラが起動します

この時OpenCVの方では

python

1 cap = cam.read()[1]

この「cap」にキャプチャデータが出力されているので、その後、このデータを様々なことに利用できると思うのですが、Kivy方ではそのデータの取得方法が解りません;
どのように取得すべきなのでしょうか?

ご教授のほど宜しくお願い致します。
###追記
Kivyの方のコードは情報整理のため編集してありますが、
こちらのコード【Camera Example】を参考にしたものです。

YouheiSakurai👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

次のHPでカメラの映像をPng形式のファイルに書き出す例があります。Camera Example参考になるのでは?

投稿2017/12/11 19:33

MasahikoHirata

総合スコア3747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

vibrato

2017/12/12 03:26

回答ありがとうございます。 情報整理のために編集してありますが、実は上のコードはそのCamera Examplから拾ってきたものです。 ですので、この質問を単純に言い換えるとCamera Examplを見て(他もいろいろ見ましたが;)解らないのでご教授お願いしますという感じです…
guest

0

kivy.uix.camera.Camera は kivy.uix.image.Image の sub class なので texture属性から得られますよ。
それと、もしCameraから得た映像を表示する必要が無いなら kivy.core.camera.Camera を直接使う手もあります。

投稿2017/12/12 08:58

編集2017/12/12 09:03
gottadiveintopy

総合スコア736

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

vibrato

2017/12/12 11:46

回答ありがとうございます。 >>kivy.uix.image.Image の sub class なので texture属性から得られますよ。 すいません。まだkivyを深く理解してないもので、頂いたアドバイスも理解しきれていません; できればコードを書いていただけるととても助かります。
gottadiveintopy

2017/12/14 09:45

例えばCamera Exampleのcaputure()内で class CameraClick(BoxLayout): def capture(self): camera = self.ids['camera'] pixels = camera.texture.pixels とすることで画像データを得られます。
vibrato

2017/12/14 15:41

アドバイスの通り試しましたが、自分の知識と理解力が低いせいか、得られたデータを画像データとして扱うことが出来ませんでした; type()で見てみたところ<class 'bytes'>となり、これをwrite()で書き込んでみたり、 img = cv2.imread(pixels)としてみましたがエラーが起こりました; どのようにすれば画像データとして扱えるのでしょうか?
gottadiveintopy

2017/12/15 04:47 編集

cv2.imread()は見たところファイルから読み込む関数ですよね? メモリ上のRawデータから読み込む関数は無いんですか? pixelsですが単純な画素だけのRawデータなので、それをOpenCVで扱う為には画像の形式を別に伝える必要があるはずです。 画像サイズは texture.size で、 他の情報は https://kivy.org/docs/api-kivy.graphics.texture.html の pixels の項目に書いてあります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問