[Opencv là gì?] Những thông tin về opencv có thể bạn chưa biết!

Mục lục

1. Tìm hiểu về thuật ngữ opencv là gì?

Opencv hiểu một cách đơn giản nhất chính là thư viện nguồn mở và được sử dụng phổ biến hàng đầu cho Computer Vision, Machine Learning và đến nay có thêm tính năng làm tăng tốc GPU cho các hoạt động dựa theo real time. Dự án về opencv này được bắt đầu thực hiện vào năm 1999 tại Intel bởi Gary Bradsky.

Thư viện nguồn mở opencv này được phát hành theo giấy phép BSD, chính bởi vậy mà nó được miễn phí hoàn toàn cho các hoạt động học tập, đồng thời cũng vẫn được sử dụng với mục đích thương mại khác. Hiện nay, opencv có trên các giao diện lập trình khác nhau như là Python, C, C++, Java,… và nó có thể hỗ trợ được cho các hệ điều hành bao gồm Linux, Windows, iOS, OS, Android. Ứng dụng opencv này được thiết kế nhằm mục đích hỗ trợ cho quá trình tính toán, chuyên dùng cho các ứng dụng thời gian thực được hiệu quả nhất. Riêng đối với C/C++ tối ưu thì opencv có thể tận dụng được các bộ xử lý đa lõi và mang đến kết quả đáng bất ngờ.

Cũng chính bởi những tiện ích trên mà opencv hiện đang có 1 cộng đồng người dùng vô cùng lớn, hoạt động hùng hậu trên toàn thế giới, nhu cầu sử dụng opencv cũng ngày càng có xu hướng tăng lên mạnh mẽ khi con người đang chạy đua về việc sử dụng Computer Vision, đặc biệt là các công ty chuyên về công nghệ.

2. Những tính năng nổi bật của opencv

Opencv thu hút được đông đảo người dùng tin tưởng, sử dụng bởi những tính năng vô cùng đặc biệt, phân chia các nhóm tính năng cùng các module riêng như sau:

- Opencv có khả năng giúp xử lý cũng như hiển thị lên các hình ảnh, video, I hay O (highgui, corem imgproc).

- Có thể phát hiện ra được các vật thể như là nonfee, objdetect, features2d,…).

- Opencv có thể giúp geometry – based monocular hoặc là stereo computer vision như là calib3d, videostab, stitching,…).

- Tính năng computational photography như là superres, video hay photo,…

- Có tính năng machine learning và clustering như flann, ml,…

- Opencv cũng có tính năng CUDA acceleration hay còn được biết đến là GPU.

3. Opencv được ứng dụng trong các lĩnh vực như thế nào?

Hiện nay, opencv được ứng dụng khá rộng rãi với nhiều mục đích khác nhau cả trong công nghệ và các lĩnh vực đời sống khác bao gồm:

- Ứng dụng vào hình ảnh street view

- Có thể kiểm tra, giám sát tự động

- Ứng dụng robot và xe hơi tự lái

- Phân tích được các hình ảnh trong y học

- Tìm kiếm cũng như phục hồi được các hình ảnh, video

- Ứng dụng vào phim và các cấu trúc 3D chuyển động

- Ứng dụng vào nghệ thuật sắp đặt tương tác

4. Các module phổ biến của opencv

Trong opencv sẽ có các cấu trúc module khác nhau và nó bao gồm cả một số thư viện liên kết tĩnh hoặc cũng có thể là liên kết động. Dưới đây là một số module phổ biến nhất của opencv, cùng tham khảo nhé!

- Core (core functionality) – được biết đến là một module nhỏ gọn, giúp xác định được các cấu trúc dữ liệu cơ bản nhất và nó bao gồm cả các mảng đa chiều dày đặc, các chức năng cơ bản. Core cũng được sử dụng bởi rất nhiều các module khác trong opencv.

- Imgproc (Image Processing) – đây là module có chức năng xử lý các hình ảnh gồm có lọc hình ảnh tuyến tính, phi tuyến tính, cho phép biến đổi về hình học như là chỉnh size, warp phối cảnh, ánh xạ lại trên cơ sở bảng chung, afin,…), đồng thời module này cũng có khả năng chuyển đổi không gian màu, các biểu đồ,…

- Video (video analysis) – module này cho phép phân tích các video có các tính năng ước tính chuyển động, tách nền cũng như các thuật toán theo dõi vật thể trong opencv.

- Cali 3d (Camera Calibration and 3D Reconstruction) – đây là thuật toán hình học đa chiều cơ bản nhất, có thể hiệu chuẩn máy ảnh single và stereo cũng như dự đoán được các đối tượng, thuật toán như là thư tín âm thanh nổi, các yếu tố giúp tái tạo 3D.

- Features2d (2D features framework) – module có thể phát hiện được các đặc tính nổi bật nhất trong bộ nhận diện, thông số đối chọi hay bộ truy xuất thông số,…

- Objdetect (object detection) – module giúp phát hiện ra các đối tượng, đồng thời mô phỏng cho các hàm đã được định sẵn như là predefined classes. Ví dụ như là con người, khuôn mặt, mắt, xe hơi,…

- Highgui (high – level GUI) – đây là một giao diện rất dễ sử dụng nhằm thực hiện quá trình giao tiếp UI đơn giản trong opencv.

- Videoio (video I/O) – đây cũng là giao diện dễ sử dụng nhằm thu, mã hóa các video trong opencv.

- GPU – đây chính là các thuật toán giúp tăng tốc GPU từ những module opencv khác.

- Ngoài ra thì còn một số module hỗ trợ như là Google test wrapper, Flann, Python binding,…

5. Hướng dẫn cách cài đặt opencv đơn giản nhất

5.1. Lựa chọn ngôn ngữ nào để lập trình opencv?

Trước khi cài đặt opencv, chúng ta sẽ cần phải xác định được loại ngôn ngữ mình sẽ lựa chọn để lập trình sao cho phù hợp. Hiện nay, opencv hỗ trợ rất nhiều ngôn ngữ khác nhau, mỗi loại sẽ có những đặc điểm và thế mạnh riêng. Do đó, người dùng cần lưu ý, cân nhắc cẩn thận để đưa ra được quyết định đúng đắn, phù hợp nhất.

- Ngôn ngữ lập trình C++: loại ngôn ngữ phổ biến nhất hiện nay, được nhiều người áp dụng bởi nó khá nhanh, nhiều option. Và nếu như bạn có IDE, visual studio thì C++ chính là một sự lựa chọn rất tốt. Các thiết lập của ngôn ngữ lập trình này vô cùng hữu ích cho các sản phẩm của opencv sau này mặc dù ban đầu có phần hơi phức tạp, tuy nhiên, sau này quen dần thì sẽ rất dễ sử dụng.

- Ngôn ngữ lập trình Python: đây là loại ngôn ngữ được sử dụng cũng khá nhiều nhằm mục đích là demo hay test các opencv. Ưu điểm của ngôn ngữ này đó chính là có tính ngắn gọn, ít phải thiết lập phức tạp. Ngoài ra, nếu bạn sử dụng ngôn ngữ Python thì cũng vẫn có thể code được trên nhiều hệ điều hành khác nhau.

- Android: loại ngôn ngữ có tích hợp sẵn camera rất tiện lợi, do đó có thể sẽ sớm trở thành xu hướng của opencv trong thời gian tới.

- Ngôn ngữ lập trình Java: loại ngôn ngữ được đánh giá là nhanh, đa nền tảng và nó cũng được sử dụng tương tự như ngôn ngữ C++.

- Ngôn ngữ C# mang đến các tính năng code hiện đại, tiện lợi và dễ dàng sử dụng. Bên cạnh đó, ngôn ngữ này còn có thư viện đa nền tảng đó là EmguCV có chức năng hỗ trợ trong quá trình sử dụng. Tuy nhiên, nền tảng này lại có 1 điểm trừ đó là yêu cầu người dùng phải copy toàn bộ các file*.dll của lib đính kèm với ứng dụng. Do đó, ứng dụng này sẽ khá nặng đối với một số hệ điều hành.

Như vậy, tùy thuộc vào nhu cầu sử dụng cũng như tính chất của công việc, các dự án mà bạn phụ trách mà hãy đưa ra quyết định lựa chọn ngôn ngữ phù hợp nhất, mang đến hiệu quả cao trong công việc. Ví dụ như nếu bạn muốn xử lý hình ảnh thì nên chọn ngôn ngữ C++, còn muốn thiết kế UX/UI thì có thể chọn ngôn ngữ C#. Đặc biệt, với các chương trình cần demo thì nên chọn ngôn ngữ lập trình Python hoặc là Android,…

5.2. Cách cài đặt opencv đơn giản nhất, bạn đã biết?

Để có thể cài đặt được opencv, điều đầu tiên các bạn cần thực hiện đó chính là tải opencv về máy và sau đó click vào file vừa tải về, tiến hành cài đặt để thư mục xuất hiện ở ổ mà mình muốn (ở đây ví dụ là ổ E).

Tùy vào từng ngôn ngữ lập trình bạn lựa chọn mà sẽ có cách cài đặt khác nhau như sau:

- Đối với ngôn ngữ Python thì bạn sẽ tiến hành các bước gồm:

+ Sau khi đã cài đặt opencv xong, trong thư mục build của opencv, các bạn sẽ thấy thư viện của opencv đã được mở sẵn, bạn tiến hành copy file cv.pyd vào trong lib/site – packages của thư mục gốc đó của Python.

+ Thư viện opencv đối với ngôn ngữ lập trình Python sẽ sử dụng numpy và để cài đặt numpy, các bạn hãy cài đặt pip, sử dụng nó để cài numpy cho máy.

+ Tiến hành tải file get – pip.py về máy.

+ Cuối cùng là cài đặt pip, cài đặt numpy cho máy là đã hoàn thành việc cài đặt opencv cho Python.

- Cài đặt opencv đối với ngôn ngữ lập trình C++ từ Source code:

+ Đầu tiên, các bạn tải, cài đặt CMake và Mingw về máy tính của mình.

+ Đối với việc build thư viện opencv bằng source code Cmake thì tại trường “where is the source code”, các bạn sẽ chọn địa chỉ source code trong thư mục của opencv vừa cài đặt về máy, đồng thời tại trường “where to the build the binaries” sẽ sử dụng để build ở một thư mục.

+ Tiếp theo, các bạn sẽ ấn vào nút “configure” – chọn “generator” thông qua MinGw Makefiles.

+ Khi màn hình hiển thị config lên thì các bạn cần click bỏ chọn dòng enable precompiled headers  và chọn vào “generate”.

+ Sau khi bạn tạo xong Cmake thì sẽ tiến hành chạy lệnh mingw32 – make từ chính thư viện MinGW vừa mới cài đặt về máy tính. Trong trường hợp vạn muốn chạy nhiều core khác nhau và tăng tốc độ thực hiện thì có thể chọn vào lệnh mingw32 – make – j4.

Một điều cần lưu ý khi gặp phải các lỗi build module videoio đó là hãy mở ngay đến file cap_dshow.cpp, thêm dòng lệnh code trên đầu của file là #define STRSAFF_NO_DEPRECATE.

Như vậy, chỉ với một vài bước khá đơn giản trên, các bạn đã có thể cài đặt xong     opencv cho các ngôn ngữ lập trình của mình và áp dụng vào công việc theo nhu cầu rồi.

6. Học opencv ở đâu chất lượng?

Đối với opencv, các bạn có thể không cần qua các trường đại học, cao đẳng mà có thể tìm đến các trung tâm đào tạo chuyên môn hoặc cũng có thể tự học ở nhà nếu yêu thích và có cố gắng.

Cụ thể, hiện nay có rất nhiều các website, các trang blog chia sẻ về kiến thức liên quan đến opencv dành cho các bạn như là opencv webinar, documentations, issue tracking, aishack, kho tính năng opencv,…

Các bạn cũng có thể tìm đến các khóa học miễn phí, trả phí như là khóa học chính chủ opencv, khóa học udemy, datacamp, learn opencv hay pyimagesearch,… Bên cạnh đó cũng có rất nhiều tài liệu có liên quan đến opencv trên các trạng mạng mà các bạn có thể tìm hiểu thêm nếu có nhu cầu nhé!

Hy vọng bài viết của timviec24h.vn đã cung cấp đến bạn đọc những thông tin hữu ích nhất, giúp các bạn có thể áp dụng một cách hiệu quả vào công việc của mình nhé!

Và nếu bạn quan tâm đến nhiều thông tin khác liên quan đến các phần mềm, ứng dụng hay ngôn ngữ lập trình trong lĩnh vực công nghệ thông tin thì đừng quên thường xuyên truy cập vào website timviec24h.vn để khám phá, tìm hiểu và cập nhật nhanh nhất những thông tin mình muốn nhé!

Đăng ngày 20/11/2020, 49 lượt xem