2016-12-27 27 views
5

私はコーナー検出を行うためにthis tutorialに従っており、私はcv2.imshowを使用する必要があります。 cv2.imshowを使用しているエラー(不特定のエラー)

import cv2 
import numpy as np 

filename = '1.jpg' 
img = cv2.imread(filename) 
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 

gray = np.float32(gray) 
dst = cv2.cornerHarris(gray,2,3,0.04) 

#result is dilated for marking the corners, not important 
dst = cv2.dilate(dst,None) 

# Threshold for an optimal value, it may vary depending on the image. 
img[dst>0.01*dst.max()]=[0,0,255] 

cv2.imshow('dst',img) 

が、私はこのエラーを得た:

OpenCV Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script) in cvShowImage, file /root/mc-x86-2.7/conda-bld/opencv-3_1482254836916/work/opencv-3.1.0/modules/highgui/src/window.cpp, line 545 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
cv2.error: /root/mc-x86-2.7/conda-bld/opencv-3_1482254836916/work/opencv-3.1.0/modules/highgui/src/window.cpp:545: error: (-2) The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function cvShowImage 

だから、私はlibgtk2.0-devのとのpkg-config設定インストールされているが、それは問題を解決しませんでした。ここに私のコードです。エラーメッセージはcmakeを実行すると言いましたが、どこに?ドライブにCMakeLists.txtファイルはありません。

this oneのように私はいくつかの答えに従っています:まず、OpenCVをウェブサイトに直接ダウンロードし、cmakeを実行してmakeとmakeを実行します。すべては大丈夫ですが、私はアナコンダを使用しますが、それは私が、/ usr/binに/のpythonからのPythonを開き、別のメッセージに着いたとき、私はまだ同じエラーを持っている:私は私の画像を表示することはできません現時点では

init done 
opengl support available 

を。私がしなければならないこと?

+0

opencvをインストールするには、conda install -c https://conda.binstar.org/menpo opencvをインストールします。それは建物を必要としません。 – Tejas

+0

私はすでにそれをしました。それは動作しません。私は同じエラーが発生します。 – Pierre

+0

CMakeの実行時にGTKを有効にしましたか?デフォルトでは無効になっている可能性があります。 – Headcrab

答えて

2

は私の質問では、私は2つの問題がありました。USR/libに/パイソン/から

  1. を、私は、画像を表示することができませんでしたが、私は はエラーを持っていませんでした。

  2. アナコンダフレームワークでは、関数imshowは実装されていませんでした。 最初問題については

私が正しくドキュメントを読んでいなかったので、それは本当に簡単でした。それはcv2.waitKey()機能について、こう述べています。

Besides binding keyboard events this function also processes many other GUI events, so you MUST use it to actually display the image.

だから、私は画像を表示する)(cv.imshow後cv2.waitKey(1)を呼び出す必要があります。 問題については

  • は、私は(私はそれが最善だかわからないが、それは動作します)、それを解決するための手動による方法を使用していました。 /home/user/anaconda3/libフォルダのlibopencv*ファイルを/usr/local/lib/フォルダのlibopencv*ファイルに置き換えました。

  • その後、私は `/home/user/anaconda3/lib/libstdc++.so 'ファイルを' /usr/lib/i386-linux-gnu/libstdc++.so 'ファイルで更新しなければなりませんでした。


もクリーンな代替ありますが、あなたはそれを行うには、インストールプロセスを再起動する必要があります。 cmakeコマンドを実行すると、パラメータ-D CMAKE_INSTALL_PREFIXはanacondaフォルダを参照する必要があります(私にとっては/home/pierre/anaconda3/です)。その後、あなたはいつものようにインストールを続行する必要があります。今すぐ

make 
sudo make install 

を、あなたはAnacaonda(;あなたは/usr/bin/pythonをロードした場合、それは動作しませんが、唯一のアナコンダ付き)でのOpenCVを使用することができます。

関連する問題