Nên lập trình OpenCV bằng ngôn ngữ nào?

OpenCV hiện tại hỗ trợ nhiều ngôn ngữ, mỗi ngôn ngữ có thế mạnh riêng, vậy thì tùy theo nhu cầu mà chọn ngôn ngữ cho phù hợp.

C++: Đây là ngôn ngữ chính, được ưa chuộng nhất vì nó nhanh, nhiều tùy chọn, có IDE là Visual Studio quá tốt. Người mới học sẽ khá bối rối với các thiết lập của nó, nhưng sau này các thiết lập đó rất hữu ích để tối ưu hóa sản phẩm

Python: Do ngôn ngữ này viết code ngắn gọn nhất, ít phải cài đặt, thiết lập nên Python được dùng để demo OpenCV nhiều nhất. Khi code bằng Python thì dễ dàng lập trình trên nhiều hệ điều hành.

Java: Cũng tương tự C++, tốc độ nhanh, đa nền tảng.

Android: Là tương lai của OpenCV vì tích hợp sẵn camera, tiện lợi, linh hoạt.

C#, VB.NET Có thư viện cross-platform là EmguCV hỗ trợ. Code tiện lợi, dễ dàng, các API của .NET rất tiện dụng cho lập trình viên. Tuy nhiên EmguCV đòi hỏi người dùng phải copy toàn bộ file *.dll của lib đi kèm với ứng dụng, làm cho ứng dụng rất nặng nề

Kết luận

2 ngôn ngữ được sử dụng nhiều nhất là C++ và Python. Cả 2 đều có thể sử dụng cho nghiên cứu lẫn phát triển sản phẩm thương mại.

Như vậy thì tùy theo nhu cầu mà sử dụng ngôn ngữ cho phù hợp, tuy nhiên một khi đã nắm vững OpenCV thì ngôn ngữ nào cũng không phải là vấn đề. Bản thân tui đang sử dụng C++ để xử lý hình ảnh, sau đó chuyển kết quả cho C# hiển thị vì C# dễ thiết kế UI. Còn android thì có thể viết code và demo tính năng của chương trình cho khách hàng xem ngay lập tức.

Về tương lai sau này khi các máy tính nhúng như Rasperry PI phổ biến thì viết code rồi nhúng vào đó bán theo phần cứng sẽ dễ dàng hơn. Còn theo hướng phần mềm thì khá khó bán với các ứng dụng OpenCV.

2 thoughts on “Nên lập trình OpenCV bằng ngôn ngữ nào?

  1. Bài viết rất hay ạ! Cám ơn AD
    à trong bài viết AD có nói là sử dụng c++ để xử lí ảnh sau đó chuyển kq cho c# hiển thị. em cũng đang muốn làm như vậy ạ vì em đang thiết kế c# quen rồi giờ chuyển sang c++ GUI cảm thấy hơi khó. Mong AD phản hồi ạ
    em cám ơn!
    Gmail: nguyenvandang100798@gmail.com

Leave a Reply