teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

エラー箇所の引用、追記を行いました。 宜しくお願いします

2016/12/16 09:22

投稿

CygMin
CygMin

スコア17

title CHANGED
File without changes
body CHANGED
@@ -12,75 +12,12 @@
12
12
  OpenCVのVideoCaptureでファイルが開けなくて困っています。
13
13
 
14
14
  ### 試したこと
15
- LinuxでopenCVのoptical flowを使おうと思い, 以下のqiitaの記事を参考にサンプルコードを試してみたところ, 以下のエラーが生じました。
15
+ LinuxでopenCVのoptical flowを使おうと思い, 以下のqiitaの記事に記載されているサンプルコードを試してみたところ, 以下のエラーが生じました。
16
16
 
17
17
  - [OpenCVでオプティカルフローをリアルタイムに描画する](http://qiita.com/olympic2020/items/772549d0fc3c89fb3cc4)
18
18
 
19
19
 
20
- ```python
21
- # coding: utf-8
22
20
 
23
- import numpy as np
24
- import cv2
25
-
26
- cap = cv2.VideoCapture('../res/768x576.avi')
27
-
28
- # Shi-Tomasiのコーナー検出パラメータ
29
- feature_params = dict( maxCorners = 100,
30
- qualityLevel = 0.3,
31
- minDistance = 7,
32
- blockSize = 7 )
33
-
34
- # Lucas-Kanade法のパラメータ
35
- lk_params = dict( winSize = (15,15),
36
- maxLevel = 2,
37
- criteria = (cv2.TERM_CRITERIA_EPS | cv2.TERM_CRITERIA_COUNT, 10, 0.03))
38
-
39
- # ランダムに色を100個生成(値0~255の範囲で100行3列のランダムなndarrayを生成)
40
- color = np.random.randint(0, 255, (100, 3))
41
-
42
- # 最初のフレームの処理
43
- end_flag, frame = cap.read()
44
- gray_prev = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
45
- feature_prev = cv2.goodFeaturesToTrack(gray_prev, mask = None, **feature_params)
46
- mask = np.zeros_like(frame)
47
-
48
- while(end_flag):
49
- # グレースケールに変換
50
- gray_next = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
51
-
52
- # オプティカルフロー検出
53
- feature_next, status, err = cv2.calcOpticalFlowPyrLK(gray_prev, gray_next, feature_prev, None, **lk_params)
54
-
55
- # オプティカルフローを検出した特徴点を選別(0:検出せず、1:検出した)
56
- good_prev = feature_prev[status == 1]
57
- good_next = feature_next[status == 1]
58
-
59
- # オプティカルフローを描画
60
- for i, (next_point, prev_point) in enumerate(zip(good_next, good_prev)):
61
- prev_x, prev_y = prev_point.ravel()
62
- next_x, next_y = next_point.ravel()
63
- mask = cv2.line(mask, (next_x, next_y), (prev_x, prev_y), color[i].tolist(), 2)
64
- frame = cv2.circle(frame, (next_x, next_y), 5, color[i].tolist(), -1)
65
- img = cv2.add(frame, mask)
66
-
67
- # ウィンドウに表示
68
- cv2.imshow('window', img)
69
-
70
- # ESCキー押下で終了
71
- if cv2.waitKey(30) & 0xff == 27:
72
- break
73
-
74
- # 次のフレーム、ポイントの準備
75
- gray_prev = gray_next.copy()
76
- feature_prev = good_next.reshape(-1, 1, 2)
77
- end_flag, frame = cap.read()
78
-
79
- # 終了処理
80
- cv2.destroyAllWindows()
81
- cap.release()
82
- ```
83
-
84
21
  結果:
85
22
  ```
86
23
  OpenCV Error: Assertion failed (scn == 3 || scn == 4) in ipp_cvtColor, file /home/travis/miniconda/conda-bld/work/opencv-3.1.0/modules/imgproc/src/color.cpp, line 7456
@@ -160,26 +97,69 @@
160
97
  ```
161
98
  $ mkdir build
162
99
  $ cd build
163
- $ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_FFMPEG=OFF -D BUILD_opencv_python2=ON ..
100
+ $ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_FFMPEG=ON -D BUILD_opencv_python2=ON ../opencv-3.0.0
164
101
  ```
165
102
  make用にコア数を調べて,
166
103
  ```
167
104
  $ grep -c ^processor /proc/cpuinfo
168
105
  ```
169
106
  outputが8だったので, 以下のオプションをつけてmake
107
+ 気長に待ちます。
170
108
  ```
171
109
  $ make -j8
172
110
  ```
173
- すると以下のメッセージが出力された。
111
+ すると以下のメッセージが出力されました。
174
112
  ```
175
113
  Makefile:149: ターゲット 'all' のレシピで失敗しました
176
114
  make: *** [all] エラー 2
177
115
  ```
178
116
  makeの進捗が75%で止まっている。allってファイルが無いらしい。
179
117
  ...allって何だ
118
+
119
+ アドバイスを求めたところ, allは「全体をビルドする過程のどこかでエラーが出て止まってしまった」ことを意味しているとのこと。(ご回答有難うございます)
120
+ エラーの解決の為には根本原因となっているエラーメッセージが必要とのことなので, もう一度ビルド作業をやり直しました。
121
+ $ make -j8を行った直後の状態で, 端末で「エラー」を検索。
122
+ ヒットした箇所の周辺から最後までを引用...しようと思ったけど, teratailの字数制約に引っかかったので怪しいと思われる箇所を抜粋しました。
123
+
180
124
  ```
125
+ Scanning dependencies of target opencv_perf_cudabgsegm
126
+ [ 68%] Building CXX object modules/cudabgsegm/CMakeFiles/opencv_perf_cudabgsegm.dir/perf/perf_main.cpp.o
127
+ //usr/lib/libvtkIO.so.5.10: `TIFFReadDirectory@LIBTIFF_4.0' に対する定義されていない参照です
128
+ //usr/lib/libvtkIO.so.5.10: `TIFFIsTiled@LIBTIFF_4.0' に対する定義されていない参照です
129
+ //usr/lib/libvtkIO.so.5.10: `TIFFScanlineSize@LIBTIFF_4.0' に対する定義されていない参照です
130
+ //usr/lib/libvtkIO.so.5.10: `TIFFClose@LIBTIFF_4.0' に対する定義されていない参照です
131
+ //usr/lib/libvtkIO.so.5.10: `TIFFGetFieldDefaulted@LIBTIFF_4.0' に対する定義されていない参照です
132
+ //usr/lib/libvtkIO.so.5.10: `TIFFSetWarningHandler@LIBTIFF_4.0' に対する定義されていない参照です
133
+ //usr/lib/libvtkIO.so.5.10: `_TIFFmalloc@LIBTIFF_4.0' に対する定義されていない参照です
134
+ //usr/lib/libvtkIO.so.5.10: `TIFFDefaultStripSize@LIBTIFF_4.0' に対する定義されていない参照です
135
+ //usr/lib/libvtkIO.so.5.10: `TIFFReadTile@LIBTIFF_4.0' に対する定義されていない参照です
136
+ //usr/lib/libvtkIO.so.5.10: `TIFFWriteScanline@LIBTIFF_4.0' に対する定義されていない参照です
137
+ //usr/lib/libvtkIO.so.5.10: `_TIFFfree@LIBTIFF_4.0' に対する定義されていない参照です
138
+ //usr/lib/libvtkIO.so.5.10: `TIFFGetField@LIBTIFF_4.0' に対する定義されていない参照です
139
+ //usr/lib/libvtkIO.so.5.10: `TIFFClientOpen@LIBTIFF_4.0' に対する定義されていない参照です
140
+ //usr/lib/libvtkIO.so.5.10: `TIFFNumberOfDirectories@LIBTIFF_4.0' に対する定義されていない参照です
141
+ //usr/lib/libvtkIO.so.5.10: `TIFFOpen@LIBTIFF_4.0' に対する定義されていない参照です
142
+ //usr/lib/libvtkIO.so.5.10: `TIFFReadRGBAImage@LIBTIFF_4.0' に対する定義されていない参照です
143
+ //usr/lib/libvtkIO.so.5.10: `TIFFSetField@LIBTIFF_4.0' に対する定義されていない参照です
144
+ //usr/lib/libvtkIO.so.5.10: `TIFFSetErrorHandler@LIBTIFF_4.0' に対する定義されていない参照です
145
+ //usr/lib/libvtkIO.so.5.10: `TIFFSetDirectory@LIBTIFF_4.0' に対する定義されていない参照です
146
+ //usr/lib/libvtkIO.so.5.10: `TIFFReadScanline@LIBTIFF_4.0' に対する定義されていない参照です
147
+ //usr/lib/libvtkIO.so.5.10: `TIFFNumberOfTiles@LIBTIFF_4.0' に対する定義されていない参照です
148
+ collect2: error: ld returned 1 exit status
149
+ modules/viz/CMakeFiles/opencv_test_viz.dir/build.make:238: ターゲット 'bin/opencv_test_viz' のレシピで失敗しました
150
+ make[2]: *** [bin/opencv_test_viz] エラー 1
151
+ CMakeFiles/Makefile2:3793: ターゲット 'modules/viz/CMakeFiles/opencv_test_viz.dir/all' のレシピで失敗しました
152
+ make[1]: *** [modules/viz/CMakeFiles/opencv_test_viz.dir/all] エラー 2
153
+ make[1]: *** 未完了のジョブを待っています....
154
+
155
+ (中略)
156
+
157
+ Scanning dependencies of target opencv_cudafilters
158
+ [ 74%] Building CXX object modules/cudafilters/CMakeFiles/opencv_cudafilters.dir/src/filtering.cpp.o
159
+ [ 74%] Linking CXX shared library ../../lib/libopencv_cudafilters.so
160
+ [ 74%] Built target opencv_cudafilters
161
+ Makefile:149: ターゲット 'all' のレシピで失敗しました
181
- sudo make install
162
+ make: *** [all] エラー 2
182
163
  ```
183
- 構わずmake installをすると, 同様のエラーが返されます。当然OpenCVがインストールされている筈もなく...
184
164
 
185
- どなたかアドバイス願います。
165
+ アドバイス願います。

2

OpenCVのビルドを行い, その手順を追記しました。 ビルドは失敗に終わりましたが\.\.\.

2016/12/16 09:22

投稿

CygMin
CygMin

スコア17

title CHANGED
File without changes
body CHANGED
@@ -133,4 +133,53 @@
133
133
  ###補足情報というか蛇足
134
134
  このエラーの対処に数日費やしましたが, どうにも解決の見込みがないと思い, 質問させて頂きました。
135
135
  PythonもopenCVも初心者なので, 検討違いのアプローチをしているかもしれませんがご了承下さい。
136
- 複数のサンプルコードを眺めた限り, optical flowを使うには取り敢えずVideoCaptureを用いているので, これが動かない限りはoptical flowは使えないのかな、と思ったりしてます。
136
+
137
+ ###追記
138
+ ####OpenCVのビルドを試す
139
+ 編集・追記依頼でopencvのFFmpeg機能をOpenCVから使うにはオプションを有効にする必要があるとコメントを頂いたので, 恐々ビルドインストールを敢行致しました。 ビルドの方法は以下のサイトを参考にしました。
140
+
141
+ - リンク1: [Ubuntu14.04にpython用にOpenCV3.0.0をインストール](http://qiita.com/bohemian916/items/23abea5ef9fadcc8bce0)
142
+ - リンク2: [OpenCV3.1.0のインストールメモ (Ubuntu 14.04 LTS)](http://umejan.hatenablog.com/entry/2016/04/20/233642)
143
+ - リンク3: [OpenCV Ubuntu Documentation](https://help.ubuntu.com/community/OpenCV)
144
+
145
+ まずはディレクトリの作成とopencvのzipをダウンロードして展開
146
+ リンク3の情報から, 既にffmpegがインストールされている場合は取り除いておいた方が良さそうなので, remove
147
+
148
+ ```
149
+ $ mkdir OpenCV
150
+ $ cd OpenCV
151
+ $ sudo apt-get -qq remove ffmpeg
152
+ $ wget http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/3.0.0/opencv-3.0.0.zip
153
+ $ unzip opencv-3.0.0.zip
154
+ ```
155
+ リンク2のコメントから, libtiff4-devをlibtiff5-devに変更してrequirementをインストール
156
+ ```
157
+ $ sudo apt-get install build-essential libgtk2.0-dev libjpeg-dev libtiff5-dev libjasper-dev libopenexr-dev cmake python-dev python-numpy python-tk libtbb-dev libeigen3-dev yasm libfaac-dev libopencore-amrnb-dev libopencore-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev libqt4-dev libqt4-opengl-dev sphinx-common texlive-latex-extra libv4l-dev libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev default-jdk ant libvtk5-qt4-dev
158
+ ```
159
+ requirementがインストールできたら, いよいよビルドです。リンク1に「ubuntuでは、WITH_FFMPEG=OFFを忘れずに。」と記載されているのは見なかったことにしてWITH_FFMPEG=ONにしてcmake
160
+ ```
161
+ $ mkdir build
162
+ $ cd build
163
+ $ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D WITH_FFMPEG=OFF -D BUILD_opencv_python2=ON ..
164
+ ```
165
+ make用にコア数を調べて,
166
+ ```
167
+ $ grep -c ^processor /proc/cpuinfo
168
+ ```
169
+ outputが8だったので, 以下のオプションをつけてmake
170
+ ```
171
+ $ make -j8
172
+ ```
173
+ すると以下のメッセージが出力された。
174
+ ```
175
+ Makefile:149: ターゲット 'all' のレシピで失敗しました
176
+ make: *** [all] エラー 2
177
+ ```
178
+ makeの進捗が75%で止まっている。allってファイルが無いらしい。
179
+ ...allって何だ
180
+ ```
181
+ sudo make install
182
+ ```
183
+ 構わずmake installをすると, 同様のエラーが返されます。当然OpenCVがインストールされている筈もなく...
184
+
185
+ どなたかアドバイス願います。

1

OpenCVの導入方法について追記致しました。

2016/12/16 08:02

投稿

CygMin
CygMin

スコア17

title CHANGED
@@ -1,1 +1,1 @@
1
- Linux - openCV VideoCaptureが動作しない
1
+ Linux - OpenCV VideoCaptureが動作しない
body CHANGED
@@ -1,8 +1,13 @@
1
1
  ###環境
2
2
  - OS: ubuntu 16.04 LTS
3
3
  - python 3.5.2 (Anaconda 2.5.0 64bit)
4
- - opencv 3.1.0
4
+ - opencv 3.1.0 (condaによるインストール)
5
5
 
6
+ ※ OpenCVはcondaにより導入しています。
7
+ ```
8
+ conda install -c https://conda.anaconda.org/menpo opencv3
9
+ ```
10
+
6
11
  ###発生している問題・エラーメッセージ
7
12
  OpenCVのVideoCaptureでファイルが開けなくて困っています。
8
13