2013-02-01 34 views
25

Tôi đang cố gắng để OpenCV làm việc với Python trên máy Ubuntu của mình. Tôi đã tải về và cài đặt OpenCV, nhưng khi tôi cố gắng để chạy đoạn mã sau python (mà nên chụp ảnh từ một webcam và đẩy họ vào màn hình)Lỗi OpenCV: chức năng không được triển khai

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() 

tôi nhận được lỗi sau:

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 

Vì vậy, tôi làm những gì họ yêu cầu: cài đặt các gói, di chuyển đến thư mục mà ta cài đặt OpenCV, và chạy

sudo make uninstall 
make 
sudo make install 

Nhưng khi tôi cố gắng chạy python, nó mang lại cho tôi những er cùng ror. Tui bỏ lỡ điều gì vậy?

+0

bạn đã thử mô-đun 'cv2' mới hơn chưa? Ngoài ra, cả hai opencv và các ràng buộc python là trong kho, không cần phải tải về hoặc biên dịch bất cứ điều gì – goncalopp

Trả lời

24

Nếu nó cung cấp cho bạn lỗi với gtk, hãy thử qt.

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

Nếu cách này không hiệu quả, có cách dễ dàng.

sudo apt-get install libopencv-* 

Điều này sẽ tải xuống tất cả các phụ thuộc bắt buộc (mặc dù có vẻ như bạn đã cài đặt tất cả thư viện bắt buộc nhưng vẫn có thể thử). Điều này có thể sẽ cài đặt OpenCV 2.3.1 (Ubuntu 12.04). Nhưng kể từ khi bạn có OpenCV 2.4.3 trong /usr/local/lib bao gồm đường dẫn này trong /etc/ld.so.conf và làm ldconfig. Vì vậy, bây giờ bất cứ khi nào bạn sử dụng OpenCV, bạn sẽ sử dụng phiên bản mới nhất. Đây không phải là cách tốt nhất để làm điều đó nhưng nếu bạn vẫn gặp sự cố với qt hoặc gtk, hãy thử điều này một lần. Điều này sẽ làm việc.

+0

Apt-get đã làm điều đó cho tôi. Cảm ơn! – Dan

+0

sudo apt-get cài đặt libqt4-dev -> lệnh không tìm thấy lỗi, tôi đang sử dụng cho ứng dụng iOS. –

+0

Sau đó, tôi giả sử bạn đang ở trên OS X, mà không đi kèm với apt-get. Thay vào đó, sử dụng [homebrew] (http://brew.sh) – ericmarkmartin

10

Tôi hy vọng câu trả lời này vẫn hữu ích, mặc dù vấn đề có vẻ khá cũ.

Nếu bạn đã cài đặt Anaconda, và OpenCV bạn không hỗ trợ GTK + (như trong trường hợp này), bạn chỉ có thể gõ

conda install -c menpo opencv=2.4.11 

Nó sẽ cài đặt phiên bản OpenCV phù hợp mà không tạo ra một lỗi được đề cập. Bên cạnh đó, nó sẽ cài đặt lại OpenCV được cài đặt trước đó nếu có một phần như Anaconda.

+2

Điều này không hiệu quả đối với tôi với python 3.5.2. Không cài đặt libopencv- * được đề xuất bởi người khác. Tôi đã tạo ra một môi trường ảo 2.7 và nó hoạt động trong môi trường đó. Cảm ơn! Nhưng tôi muốn tất cả mọi thứ đã làm việc với python3 ... tất cả chúng ta đều phải nâng cấp năm trước lol –

+3

@JulianCienfuegos, tôi có conda 4.3.11 với python 3.5.2 trong một môi trường ảo và cài đặt OpenCV 3.1.0 bằng cách nhập 'conda install opencv'. Nếu conda của bạn lớn hơn, có thể cập nhật conda sẽ sửa chữa nó. –

24

Nếu bạn cài đặt OpenCV sử dụng gói pip opencv-python tại bất kỳ thời điểm nào, phải nhận thức của các lưu ý sau đây, lấy từ 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)

Cũng lưu ý rằng để cài đặt từ một nguồn khác, trước tiên bạn phải xóa gói opencv-python

1

Trước khi cài đặt libgtk2.0-dev và pkg-config hoặc libqt4-dev. Đảm bảo rằng bạn đã gỡ cài đặt opencv. Bạn có thể xác nhận điều này bằng cách chạy nhập khẩu cv2 trên vỏ python của bạn. Nếu nó không thành công, sau đó cài đặt các gói cần thiết và chạy lại cmake.

4

Đừng lãng phí thời gian của bạn để giải quyết vấn đề này, điều này đã khiến các nhà sản xuất tự làm rõ, Vì vậy, thay vì cv2. imshow() sử dụng 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()

Các vấn đề liên quan