2013-01-31 35 views
23

Tôi gặp sự cố này khi tôi cố gắng nhập cv2 trên python và nhận thông báo lỗi sau.ImportError: Tải DLL không thành công:% 1 không phải là ứng dụng Win32 hợp lệ

>>> import cv2 
Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
ImportError: DLL load failed: %1 is not a valid Win32 application. 

Tôi hiểu rằng có rất nhiều bài đăng về vấn đề này khi đề xuất rằng bit của gói khác với gói python.

Tuy nhiên, mọi thứ tôi đang chạy là 64 bit. Tôi đang trên win7 64 bit, tôi có các phân phối winpython 2.7.3.3, 64 bit, và tôi biên dịch opencv trong 64 bit với hướng dẫn cung cấp here và đặt dll cv2.pyd trong thư mục Lib/site-package của python.

Rất tiếc, đề xuất sử dụng phiên bản 32 bit của python không hoạt động đối với tôi nữa vì tôi phải xử lý các mảng quá lớn cho 32 bit.

Xin cảm ơn !!!

------ CẬP NHẬT

Điều duy nhất còn thiếu là để thêm các con đường mới binaries opencv (C: \ OpenCV \ xây dựng \ bin \ Release) vào biến môi trường PATH Windows, khởi động lại python.

Mọi thứ có vẻ đang hoạt động tốt ngay bây giờ!

Trả lời

20

Thông điệp ImportError là một chút sai lầm vì tham chiếu đến Win32, trong khi vấn đề là chỉ đơn giản là DLL opencv không được tìm thấy.

Sự cố này đã được giải quyết bằng cách thêm đường dẫn tệp nhị phân opencv vào biến môi trường Windows PATH (ví dụ, trên máy tính của tôi đường dẫn này là: C: \ opencv \ build \ bin \ Release).

+6

Các bước cần thực hiện để thực hiện việc này là gì? – Exzile

+0

Những gì tôi không nhận được là, tại sao không thông báo lỗi nhà nước DLL mà không thể được nạp? % 1 chỉ đơn thuần là một trình giữ chỗ cho tên của DLL. – antred

+0

Ah ok. Vì vậy, bạn phải sao chép cv2.pyd từ thư mục x64, nếu bạn đang dùng máy 64 bit để sửa lỗi đó. @antred Nó là một trình giữ chỗ.Nó thường được thay thế bằng DLL nhưng nó không hoạt động vì 32 bit không tải được trên máy 64 bit. –

4

Bạn có thể thử cài đặt phiên bản 32 bit của opencv

+1

Hãy nhớ rằng vấn đề này đã được giải quyết như được đề cập trong phần CẬP NHẬT của câu hỏi. – Francis

+0

xin lỗi, xấu của tôi :) –

+3

@Francis một khi bạn đã tìm thấy một giải pháp, xin vui lòng luôn luôn thêm nó như là một câu trả lời, thay vì thêm nó vào câu hỏi của bạn. – Tshepang

2

Hoặc bạn phải xây dựng lại mô-đun cv2 để giành chiến thắng 64bit.

0

Khi tôi gặp lỗi này, nó sẽ biến mất sau khi máy tính của tôi bị lỗi và khởi động lại. Hãy thử đóng và mở lại IDE của bạn, nếu nó không hoạt động, hãy thử khởi động lại máy tính của bạn. Tôi vừa mới cài đặt các thư viện tại thời điểm đó mà không cần khởi động lại pycharm khi tôi gặp lỗi này.

Không bao giờ đóng PyCharm trước để kiểm tra vì máy tính bị nổ của tôi cứ bị rơi một cách ngẫu nhiên ... làm việc trên cái đó, nhưng ít nhất là giải quyết vấn đề này .. ít chiến thắng .. :).

1

Tất cả bạn phải làm là sao chép các tập tin cv2.pyd từ thư mục x86 (C: \ OpenCV \ xây dựng \ python \ 2.7 \ x86 \ ví dụ) để C: \ Python27 \ Lib \ web- gói \, không phải từ thư mục x64.

Hy vọng sẽ giúp bạn.

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