2016-12-27 17 views
5

Tôi đang theo dõi this tutorial để phát hiện góc và tôi phải sử dụng cv2.imshow. Đây là mã của tôi:Lỗi khi sử dụng cv2.imshow (Lỗi không xác định)

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) 

Tôi đã nhận lỗi này:

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 

Vì vậy, tôi cài đặt libgtk2.0-dev và pkg-config nhưng nó đã không giải quyết được vấn đề. Các thông báo lỗi cho biết để chạy cmake nhưng ở đâu? Không có tệp CMakeLists.txt trong ổ của tôi.

Sau đó, tôi làm theo một số câu trả lời trên trang web này như this one: đầu tiên, tôi đã tải xuống OpenCV trực tiếp trên trang web và tôi chạy cmake, tạo và cài đặt. Tất cả là ổn nhưng tôi vẫn có lỗi tương tự khi tôi sử dụng Anaconda nhưng nó có một thông báo khác khi tôi mở Python từ/usr/bin/python:

init done 
opengl support available 

Hiện tại, tôi không thể hiển thị hình ảnh của mình. Tôi phải làm gì?

+0

Bạn có thể cài đặt opencv với: conda install -c https://conda.binstar.org/menpo opencv. Nó sẽ không cần xây dựng. – Tejas

+0

Tôi đã làm điều đó. Nó không hoạt động; Tôi nhận được lỗi tương tự. – Pierre

+0

Bạn có bật GTK khi chạy CMake không? Nó có thể bị tắt theo mặc định. – Headcrab

Trả lời

2

Trong câu hỏi của tôi, tôi đã có hai vấn đề:

  1. Từ/usr/lib/python, tôi đã không thể hiển thị hình ảnh nhưng tôi đã không có lỗi;

  2. Với khung Anaconda, chức năng imshow không được triển khai.

Đối với vấn đề đầu tiên , nó đã thực sự dễ dàng vì tôi không đọc tài liệu một cách chính xác. Nó nói, về cv2.waitKey() chức năng:

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

Vì vậy, tôi chỉ phải gọi cv2.waitKey (1) sau khi cv.imshow() để hiển thị hình ảnh.

Đối với phần thứ hai vấn đề ,

  • tôi đã sử dụng một phương pháp thủ công để giải quyết nó (Tôi không chắc đó là tốt nhất nhưng nó hoạt động). Tôi đã thay thế tất cả các tệp libopencv* trong thư mục /home/user/anaconda3/lib bằng các tệp libopencv* trong thư mục /usr/local/lib/.

  • Sau đó, tôi phải cập nhật tệp `/home/user/anaconda3/lib/libstdc++.so 'bằng tệp' /usr/lib/i386-linux-gnu/libstdc++.so '.


Ngoài ra còn có một sự thay thế sạch hơn nhưng bạn nên khởi động lại quá trình cài đặt để làm điều đó. Khi bạn chạy lệnh cmake, tham số -D CMAKE_INSTALL_PREFIX phải tham chiếu đến thư mục anaconda của bạn (đối với tôi, đó là /home/pierre/anaconda3/). Sau đó, bạn chỉ cần phải tiếp tục quá trình cài đặt như bình thường:

make 
sudo make install 

Bây giờ, bạn có thể sử dụng OpenCV với Anacaonda (nhưng chỉ với Anaconda, nó không hoạt động nếu bạn nạp /usr/bin/python).

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