質問編集履歴
3
エラー箇所の引用、追記を行いました。 宜しくお願いします
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=
|
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
|
-
|
162
|
+
make: *** [all] エラー 2
|
182
163
|
```
|
183
|
-
構わずmake installをすると, 同様のエラーが返されます。当然OpenCVがインストールされている筈もなく...
|
184
164
|
|
185
|
-
|
165
|
+
アドバイス願います。
|
2
OpenCVのビルドを行い, その手順を追記しました。 ビルドは失敗に終わりましたが\.\.\.
title
CHANGED
File without changes
|
body
CHANGED
@@ -133,4 +133,53 @@
|
|
133
133
|
###補足情報というか蛇足
|
134
134
|
このエラーの対処に数日費やしましたが, どうにも解決の見込みがないと思い, 質問させて頂きました。
|
135
135
|
PythonもopenCVも初心者なので, 検討違いのアプローチをしているかもしれませんがご了承下さい。
|
136
|
-
|
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の導入方法について追記致しました。
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
Linux -
|
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
|
|