2013-02-01 33 views
25

OpenCV, Ubuntu makinemde Python ile çalışıyorum. Ben indirilen ve OpenCV yükledim fakat ettik ben şu hatayı olsun (bir web kamerası görüntüleri yakalayabilir ve ekrana götüren olmalı) aşağıdaki python koduOpenCV hatası: işlev uygulanmadı

import cv 

cv.NamedWindow("w1", cv.CV_WINDOW_AUTOSIZE) 
capture = cv.CaptureFromCAM(0) 

def repeat(): 
    frame = cv.QueryFrame(capture) 
    cv.ShowImage("w1", frame) 
    time.sleep(10) 

while True: 
    repeat() 

çalıştırmayı denediğinizde:

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 
Ben OpenCV yüklü nereden gelen klasöre taşımak, paketleri yükleme ve

sudo make uninstall 
make 
sudo make install 

çalıştırmak Ama piton çalıştırmayı denediğinizde, bana aynı er veriyor:

yüzden onların istediklerini yapmak ror. Bir şey mi eksik?

+0

Daha yeni 'cv2' modülünü denediniz mi? Ayrıca, hem opencv hem de python bağlamaları havuzlarda bulunur, – goncalopp

cevap

24

Size gtk ile hata veriyorsa, qt'yi deneyin.

sudo apt-get install libqt4-dev 
cmake -D WITH_QT=ON .. 
make 
sudo make install 

Bu işe yaramazsa, kolay bir çıkış yolu vardır. (Eğer gerekli kitaplıkların yüklemiş olduğu görünse de, ama yine bunu bir kez deneyebilirsiniz)

sudo apt-get install libopencv-* 

Bu gerekli tüm bağımlılıkları indirecektir. Bu muhtemelen OpenCV 2.3.1'i (Ubuntu 12.04) kuracaktır. Ancak, OpenCV 2.4.3'ün /usr/local/lib sürümüne sahip olduğunuzdan, /etc/ld.so.conf'da bu yolu ekleyin ve ldconfig'u yapın. Yani şimdi OpenCV kullandığınız zaman, en son sürümü kullanacaksınız. Bunu yapmanın en iyi yolu bu değil, ancak qt veya gtk ile hala sorun yaşıyorsanız, bunu bir kez deneyin. Bu çalışmalı.

+0

Apt-get'i benim için hiçbir şey indirmeye veya derlemeye gerek yoktur. Teşekkürler! – Dan

+0

sudo apt-get install libqt4-dev -> komut bulunamadı hatası, iOS uygulaması için kullanıyorum. –

+0

O zaman apt-get ile gelmeyen OS X'de olduğunuzu farz ediyorum. Bunun yerine, "cmake -D WITH_QT = ON" komutunu çalıştırmayı denediğimde bazı çılgın sebeplerden dolayı [homebrew] (http://brew.sh) – ericmarkmartin

10

Umarım bu cevap hala yararlıdır, ancak problemin çok eski olmasına rağmen.

Eğer Anaconda yüklediyseniz

ve (bu durumda olduğu gibi) GTK + desteklemiyorsa OpenCV, sadece

conda install -c menpo opencv=2.4.11 

bir söz hata üretmez uygun OpenCV sürümünü kuracaktır yazabilirsiniz. Ayrıca, Anaconda'nın bir parçası olsaydı, daha önceden yüklenmiş olan OpenCV'yi yeniden yükler. Eğer zaman içinde herhangi bir noktada opencv-piton pip paketini kullanarak OpenCV kurduysanız

+2

Bu benim için python 3.5.2 ile çalışmıyor. Kurulum libopencv- * başkaları tarafından tavsiye edilmez. 2.7 sanal bir ortam yaptım ve bu ortam içinde çalışıyor. Teşekkürler! Ama herşeyin python3 ile çalışmasını isterdim ... hepimiz yıllar önce lol'u yükseltmemiz gerekiyordu. –

+3

@JulianCienfuegos, sanal ortamlarından birinde 3.5.2 python 3.5.2 ile conda 4.3.11 var ve yazarak OpenCV 3.1.0'ı yüklüyor 'conda install opencv'. Conda'nız daha eskiyse, conda güncellemesinin bunu düzeltmesi mümkündür. –

24

öncelikle Ayrıca başka bir kaynaktan yüklemek için dikkat https://pypi.python.org/pypi/opencv-python

IMPORTANT NOTE MacOS and Linux wheels have currently some limitations:

  • video related functionality is not supported (not compiled with FFmpeg)
  • for example cv2.imshow() will not work (not compiled with GTK+ 2.x or Carbon support)

alınan aşağıdaki nota farkında sen gerekir olmak opencv-python paketini kaldırın.

1

Libgtk2.0-dev ve pkg-config veya libqt4-dev yüklemeden önce. Opencv'i kaldırdığınızdan emin olun. Bunu, python kabuğunuza import cv2'yi çalıştırarak onaylayabilirsiniz. Başarısız olursa, gereken paketleri kurun ve cmake'yi yeniden çalıştırın.

4

Bu sorunu çözmeye çalışırken zamanınızı boşa harcamayın; bu, yapımcıları kendiliğinden açıkça ortaya koymuştur. Bu nedenle, cv2 yerine. imshow()img = cv2.imread(image_path) plt.imshow(img, cmap = 'gray', interpolation = 'bicubic') plt.xticks([]), plt.yticks([]) # to hide tick values on X and Y axis plt.show() kullan