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 yêu cầu mà chọn ngôn ngữ cho phù hợp.

Mục lục

Các ngôn ngữ phổ biến nhất

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

C++ là ngôn ngữ có tốc độ thực thi nhanh, đa nền tảng, quản lý tốt bộ nhớ đến từng byte, đặc biệt có con trỏ rất “vi diệu”. Nhờ có con trỏ mà quản lý tốt vùng nhớ trên RAM nên hầu hết các thư viện Machine Learning đều sử dụng C++ làm giải thuật.

Nhược điểm của C++ là code phức tạp, khó hiểu. VD hàm đơn giản như lấy danh sách file trong folder cũng rất dài dòng phức tạp, vì vậy ít được ưa chuộng.

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ề

Vì sao C++ và Python được ưa chuộng?

Điểm tương đồng của C++ và Python:

  • Hỗ trợ CUDA
  • Đầy đủ các chức năng của ngôn ngữ lập trình hiện đại
  • Đa nền tảng: Windows, Ubuntu
  • Cộng đồng hỗ trợ đông đảo (Python đông hơn)
  • Chạy nhanh tương đương nhau, phải đo mới biết chương trình nào chạy nhanh hơn

Công ty phần mềm sử dụng ngôn ngữ nào?

Trả lời: công ty phần mềm sử dụng Python, C++ và C# trong quá trình phát triển và sản xuất sản phẩm phần mềm.

1. Giai đoạn nghiên cứu

Giai đoạn nghiên cứu sẽ sử dụng Python để viết thuật toán, kiểm tra tính khả thi. Do code Python dễ đọc, ngắn gọn nên dễ dàng điều chỉnh cho đến khi hoàn thiện giải thuật.

2. Giai đoạn hoàn thiện

  • Nếu viết ứng dụng dạng client – server có thể tích hợp vào Django để sử dụng
  • Nếu viết Windows application thì viết ứng dụng console bằng Visual Studio để port (chuyển đổi) code Python sang C++. Sau đó là viết giao diện bằng C#
  • Nếu viết ứng dụng Linux thì cũng viết bằng Visual C++, sau đó qua Linux build bằng QT studio

Kết luận

2 ngôn ngữ được sử dụng nhiều nhất là C++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.

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