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
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ó.
"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.
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.
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.
- 1. Cắt ảnh bằng C#
- 2. Cách lấy tên hình ảnh bằng jQuery?
- 3. Cách lấy danh sách các thiết bị quay video (máy ảnh web) trên linux (ubuntu)? (C/C++)
- 4. Đọc mã QR bằng máy ảnh - Android
- 5. Android xoay ảnh 90 độ (chụp bằng máy ảnh)
- 6. cách đăng URL bằng hình ảnh trên facebook bằng ShareKit
- 7. Phát hiện số webcam/máy ảnh trên PC bằng OpenCv
- 8. Lấy chiều cao hình ảnh bằng CarrierWave
- 9. Khoảng cách lấy nét của máy ảnh
- 10. Cách chụp ảnh và lưu hình ảnh bằng Máy ảnh Android gốc
- 11. Xoay máy ảnh trong Three.js bằng chuột
- 12. OpenCV với Máy ảnh mạng
- 13. Đặt lại máy ảnh bằng OrbitControls.js
- 14. Cách chụp ảnh tĩnh từ webcam trên linux
- 15. Cách lấy kích thước hình ảnh (byte) bằng PIL
- 16. Cách di chuyển máy ảnh trong Blender 2.61 bằng Python
- 17. Chụp ảnh bằng Android bằng cách sử dụng FFmpeg
- 18. hiển thị hai ảnh png đồng thời bằng pylab
- 19. Chụp ảnh màn hình máy tính để bàn bằng javascript
- 20. cách tải hình ảnh lên ACF bằng update_field trên wordpress
- 21. Làm cách nào để truy xuất các thuộc tính của ảnh chụp trên máy ảnh kỹ thuật số bằng .NET?
- 22. Lấy thư mục ảnh hiện tại của máy ảnh
- 23. C# cách lấy bitmap từ hình ảnh
- 24. Cắt ảnh bằng CGImageCreateWithImageInRect
- 25. Lấy số hàng bị ảnh hưởng cho câu lệnh SQLite bằng cách sử dụng API C
- 26. Cân bằng trắng tự động cho máy ảnh
- 27. Cách lấy dữ liệu pixel từ một hình ảnh bằng cách sử dụng R
- 28. Vẽ trên một hình ảnh bằng Raphael.js
- 29. Xem trước máy ảnh Android - Cách 'đóng băng' máy ảnh?
- 30. Ảnh hưởng của việc ngủ (0) trong C++ trên Linux
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
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ó. –