2013-02-15 58 views
5

Có thư viện nào tôi có thể sử dụng để lấy ảnh từ máy ảnh GigE có đồng bằng C trên Linux không? Để cụ thể hơn, tôi có một camera Basler GigE và phần mềm pylon được cài đặt. Ngoài ra còn có mã mẫu trong C++. Nhưng tôi muốn và cần phải sử dụng C (trong công việc của tôi điều này thực sự là THE điều phải làm để sử dụng C). Nó sẽ là tuyệt vời nếu có cái gì đó hữu ích như libdc1394 chỉ dành cho GigE.Cách lấy Ảnh bằng Máy ảnh GigE trên Linux với Đồng bằng C

Trả lời

-6

Nếu tôi hiểu bạn đúng, "GigE" chỉ là "gigabit Ethernet", và sau đó tôi cho rằng máy ảnh chạy IP. A trivial Google search dường như hỗ trợ điều này (những giao diện giống như cáp Ethernet với tôi).

Vì vậy, bạn sẽ có thể sử dụng bất kỳ hướng dẫn ổ cắm vườn nào cho C để nhận thông tin về cách mở kết nối với máy ảnh.

Tất nhiên, bạn sẽ cần thông tin giao thức có thể dành riêng cho máy ảnh, để tìm hiểu nội dung cần gửi để có được hình ảnh và cách diễn giải dữ liệu được trả lại. Điều này có thể được trích xuất từ ​​mã C++ mà bạn đã có.

+0

Mã mẫu không cho tôi biết bất kỳ điều gì về giao thức. Nó chỉ cần nhập các lớp từ nhị phân. Mặc dù nếu tôi có thông số giao thức thì nó sẽ giúp tôi hiểu. – Bitterblue

+0

Tầm nhìn GigE không sử dụng UDP qua IP, nhưng nó đã được xác định rất kém và tôi không nghĩ rằng có bất kỳ triển khai miễn phí nào của nó. –

6

"GigE Vision" thực sự là tiêu chuẩn máy ảnh tầm nhìn máy tính và hầu hết các máy ảnh cũng triển khai chuẩn Genicam để điều chỉnh thông số. Ít nhất đó là lý thuyết - Tôi có một máy ảnh GigE tốc độ cao không được tìm thấy bởi Pylon hoặc AVT vì một số lý do không rõ (chính thức nó chỉ được hỗ trợ bởi eBus từ Pleora). Bạn có thể có được thông số kỹ thuật cho các tiêu chuẩn đó, nhưng tôi không chắc liệu chúng có sẵn tự do hay không.

Về thư viện, tôi chỉ thử Aravis trong Ubuntu12.04 và nó hoạt động cho máy ảnh của tôi (streaming 512x512 pixel với 190 khung hình/giây). Nó được viết bằng C theo như tôi có thể nói. Như một gợi ý, để biên dịch Viewer được bao gồm, bạn phải cài đặt tất cả các gói gstreamer-dev, bao gồm libgstreamer-plugins-base0.10-dev.

2

Chuẩn GigE không thân thiện với mã nguồn mở - bạn phải trả phí giấy phép hàng năm cho tổ chức tiêu chuẩn, đó là lý do tại sao phần lớn phần mềm sử dụng GigE Vision đều tốn một khoản tiền đáng kể. Một nhóm các công ty đến với nhau để làm cho tiêu chuẩn và họ không có khả năng xuất bản nó cho thế giới bất cứ lúc nào sớm.

Vì vậy, đây là một số tùy chọn của bạn (mà tôi có thể nghĩ đến) ...

1) Tự mình tự thiết kế giao thức. Nó khá phức tạp nên đó sẽ là một dự án lớn.

2) Có thể bạn sẽ gặp may mắn và tìm một công ty có phiên bản C của SDK mà họ có thể bán cho bạn?

3) Sử dụng C++ :-) (jk ...)

4) Pay tổ chức tiêu chuẩn để cung cấp cho bạn truy cập hoặc hợp tác với một công ty đó là trên nó.

5) Sử dụng các dự án nguồn mở đang cố gắng thiết kế lại tiêu chuẩn. (Tôi không biết quy tắc pháp lý là gì). Ví dụ: Aravis và OpenGigEVision. Các giải pháp này có thể sẽ không đầy đủ trong một thời gian, nhưng ít nhất chúng cũng nên hỗ trợ những điều cơ bản.

Tôi nghĩ rằng # 5 là đặt cược tốt nhất của bạn nếu bạn không có nhiều thời gian hoặc tiền bạc để chi tiêu.

4

Hầu hết các triển khai sẽ sử dụng C++ và phát hiện tốt nhất một tòa nhà c-api vì GenICam là một điều rất phức tạp để triển khai - và công cụ triển khai tham chiếu hoàn toàn miễn phí và được hầu hết các nhà cung cấp SDK sử dụng. Bạn có thể thực hiện rất nhiều việc mua lại mà không cần nhiều trong C nhưng rất khó để cắt GenICam ra khỏi vòng lặp - điều này là do các nhà cung cấp đã sử dụng các tài liệu XML của GenICam như một loại ngôn ngữ lập trình miền cụ thể - nỗ lực có thể so sánh được với triển khai trình duyệt web từ đầu.

Aravis không tồn tại nhưng phụ thuộc vào gstreamer và dường như chủ yếu ở C nhưng nó sẽ chỉ đi xa trên sự hỗ trợ XML phức tạp cần thiết cho nhiều máy ảnh. Tôi không bao giờ sử dụng gstreamer trong một nhiệm vụ quan trọng thiết lập hoặc nơi hoạt động đáng tin cậy là cần thiết ngoài việc hiệu suất cao hoặc hiệu quả cao là cần thiết. Tôi tin rằng lựa chọn tốt nhất trên thị trường là SDK FYI của Pleora - không liên quan. Có nói rằng - Tôi đã viết như một thư viện (với C++ :-) mà tôi không thể chia sẻ để giải quyết vấn đề tôi đã đề cập.

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