2012-12-12 74 views
5

Tôi hiện đang làm việc trên một dự án có liên quan đến việc đọc các tệp video mp4. Vấn đề tôi gặp phải là nó sử dụng Python 2.7 (32 bit), OpenCV 2.4.3 (cv2.pyd) trong máy tính Windows 7.Không thể mở tệp video ".mp4" bằng OpenCV 2.4.3, Python 2.7 trong máy Windows 7

Đoạn mã như sau:

try: 
     video = cv2.VideoCapture("video.mp4") 
except: 
     print "Could not open video file" 
     raise 
print video.grab() 

"video.grab()" luôn luôn trả về false: có nghĩa là nó không đọc các tập tin "video.mp4" Nhưng khi chúng tôi cố gắng này:

try: 
     video = cv2.VideoCapture("video.avi") 
except: 
     print "Could not open video file" 
     raise 
print video.grab() 

"video.grab()" trả về true: nghĩa là nó có thể đọc ".avi" tệp.

Một cách khác là chúng tôi đã thử đoạn mã giống nhau trên Linux và Mac và có vẻ như hoạt động tốt, có nghĩa là nó có thể đọc cả tệp mp4 và tệp avi.

Sự cố này tương tự như this problemthis problem. Cả hai vẫn không có một câu trả lời rõ ràng và khả thi.

Tôi sẽ đánh giá cao bất kỳ trợ giúp hoặc giải pháp nào ngoài việc chỉ sử dụng Linux hoặc Mac để lập trình điều này vì tôi cần điều này để làm việc trên cả ba hệ thống.

+0

Tôi đang xử lý vấn đề này. Có một giải pháp thanh lịch ngay bây giờ? – madman2890

Trả lời

0

mp4 của bạn có thể có codec mà hệ thống của bạn không có hỗ trợ (hoặc opencv không có hỗ trợ) trong khi codec avi của bạn có thể được hỗ trợ. Ngoài ra nếu opencv đang sử dụng libav để giải mã, bạn nên cài đặt nó.

+0

Tôi không biết liệu hệ thống có hỗ trợ mp4 hay không. Khi tôi đang sử dụng opencv + python trong máy Mac của tôi và Linux của tôi, tôi có thể đọc mp4 một cách dễ dàng. Kể từ codec, tôi có thể xem mp4 bằng bất kỳ phần mềm nào khác. Kể từ libav, nó đi kèm với gói opencv và cũng đã tải xuống một libav mới cho Windows từ trang web FFmpeg ... Tôi chỉ không biết nếu tôi đã cài đặt đúng ... Bạn có biết cách cài đặt libav và thư viện cho opencv + python để sử dụng? –

+0

Sẽ an toàn khi nói rằng hệ thống của tôi hỗ trợ mp4 nếu tôi có thể mở cùng một tệp video và nó phát bên trong trình phát cổ phiếu (tôi chạy Windows 10)? – ilya1725

14

Tôi đã có cùng một vấn đề trước đây, giải quyết bằng cách bước này:

Kiểm tra OpenCV của bạn python phiên bản

>>> from cv2 import __version__ 
>>> __version__ 
'2.4.0' 

Sau đó, sao chép của bạn opencv_ffmpeg.dll-C:\Python27\ và đổi tên nó để phù hợp OpenCV Python bản của bạn. Trong trường hợp của tôi, tôi phải đổi tên nó thành opencv_ffmpeg240.dll.

Cập nhật: Trên Windows, bạn có thể tìm thấy tệp DLL opencv_ffmpeg bên trong thư mục xây dựng của bản cài đặt OpenCV. Ví dụ: C:\dev\opencv\build\x86\vc12\bin

Sau đó, chỉ cần sao chép và dán tệp opencv_ffmpeg<version>.dll vào thư mục gốc của bản cài đặt Python của bạn.

+0

Cảm ơn bạn! Ban đầu tôi bắt đầu với python 3 cho đến khi tôi nhận thấy một số blog mà tôi theo dõi đã được chuyển sang 2.7. Điều này đơn giản đã làm các trick. –

2

Tôi gặp sự cố này khi sử dụng phiên bản OpenCV 2.4.11 và Python 2.7 trong hệ điều hành Windows 7. Tôi đã không thể mở và thao tác các tập tin mp4, nhưng đã có thể mở các tập tin avi.

Giải pháp trong trường hợp của tôi là sao chép tệp opencv_ffmpeg2411.dll từ thư mục xây dựng của bản cài đặt OpenCV của tôi và dán nó vào thư mục gốc của bản cài đặt Python của tôi. Vì vậy, trong trường hợp của tôi, các tập tin DLL là trong "C: \ dev \ opencv \ build \ x86 \ vc12 \ bin", và tôi sao chép nó vào "C: \ Program Files (x86) \ Python2.7".

0

Tôi gặp sự cố tương tự với tệp video .mpg của mình. Không thể mở nó trong openCV.

Tôi đã sao chép openCv_ffmpeg330.dll từ thư mục C:\OpenCV\build\bin folder into the c:\python27.

Đã hoạt động!.

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