Library

Face_recognition - thư viện nhận diện khuôn mặt

Face_recognition – thư viện nhận diện khuôn mặt P1

Có nhiều thư viện nhận diện khuôn mặt khác nhau, nhưng face_recognition nhận diện khá chính xác & dễ sử dụng. Bài viết này giới thiệu cách cài đặt, sử dụng lib face_recognition trên Windows. Tên lib này không có 1 thương hiệu nào mà đặt tên bằng từ khóa chung, nên mình sẽ viết tắt là FR.

Bài viết này chỉ tập trung vào việc sử dụng lib, còn việc build lib sẽ viết ở bài khác.

deeplearning

Thử nghiệm Deeplearning cho người mới bắt đầu

Bài viết này viết theo bài Nhận diện vật thể bằng ImageAI. Bài viết đó dành cho các bạn sinh viên CNTT tìm hiểu, bài viết này dành cho ai muốn biết Deep Learning là gì. Làm theo bài này các bạn có thể chạy thử được ImageAI với hình ảnh của bạn.

Bài viết này sử dụng thư viện Django để làm web server, hiển thị kết quả trên web. Các thư viện và source code sử dụng ở mức tối thiểu để không làm khó các bạn.

Nhận diện vật thể bằng ImageAI

Nhận diện vật thể bằng ImageAI

ImageAI là project phát hiện & nhận diện vật thể trong ảnh. Sử dụng thuật toán thị giác máy tính và deep learning cho ra kết quả chính xác cao. Project viết bằng Python và dễ dàng chạy trên nhiều hệ điều hành khác nhau.

Bài viết này tương đối đơn giản và dễ dàng thực hành. Chỉ cần sử dụng vài câu lệnh là các bạn có thể test thử độ chính xác trước khi nghiên cứu sâu hơn.

Để sử dụng, bạn cần phải biết cách cài đặt các thư viện Python & hiểu cách sử dụng VirtualEnv.

Cấu trúc opencv

Cấu trúc OpenCV

Sau khi make OpenCV từ source code thành công sẽ được solution OpenCV. Bài này sẽ mô tả các công dụng các project bên trong OpenCV để các bạn include vừa đủ. Không thừa không thiếu, mọi thứ vừa đủ là tốt nhất.

Nếu tự make OpenCV bằng Cmake không thành công các bạn có thể sử dụng source mình đã make sẵn.

OpenCV 3.2.0 build cho Visual Studio 2015
OpenCV 3.4.2 build cho Visual Studio 2015

opencv

Share thư viện OpenCV 3.4.2 build sẵn

OpenCV là thư viện mã nguồn mở, cung cấp cho nhiều ngôn ngữ & platform khác nhau. Người dùng download về rồi dùng Cmake để build phiên bản phù hợp nhất để sử dụng. Như là Visual Studio 2013, 2015, 2017, x86 hoặc x64,… sao cho phù hợp.

Có nhiều bạn gặp rắc rối khi build OpenCV do có quá nhiều option, do đó mình mình share bản Visual Studio 2015. Bản này là bản mình đang sử dụng và thấy rằng khá phổ biến với mọi người.

Download

Download (Github)

Tạo ứng dụng OpenCV bằng C#

Bạn thích viết 1 project bằng C# vì nó dễ thiết kế giao diện, các API thân thiện, dễ sử dụng. Tuy nhiên OpenCV không hỗ trợ C#, do đó để có thể sử dụng các tính năng trong OpenCV có nhiều phương pháp, phổ biến nhất hiện nay là dùng EmguCV. EmguCV là thư viện wrapper chuyển đổi tất cả các hàm của openCV từ C++ sang .NET. Tuy nhiên nó có nhiều nhược điểm: tốc độ xử lý chậm, bắt buộc người dùng phải include tất cả file dll dung lượng lớn.

c922

Đọc hình ảnh từ webcam trong opencv

Webcam là thiết bị input phổ biến nhất, rẻ tiền nhất so với các loại camera khác. Tầm 150k là đã mua được, loại tốt fullHD 60fps cũng tầm 2 đến 3 triệu đồng. Do đó Webcam phù hợp nhất với sinh viên và người nghiên cứu không chuyên.

Webcam bình thường tầm 13-14 fps (frame per second) chỉ phù hợp với các ứng dụng đơn giản. Muốn làm chuyên nghiệp cần mua những loại webcam tốt, thậm chí là camera IP để dễ dàng hơn trong việc giải quyết bài toán đặt ra.

Kinh nghiệm cho thấy phần cứng tốt sẽ lập trình dễ dàng hơn. Nếu không đầu tư cho phần cứng thì tính ra còn lỗ hơn về công sức, và đôi khi bế tắc.

OpenCV cung cấp sẵn class cv::VideoCapture() với rất nhiều khả năng: đọc webcam, đọc camera IP và video. Do 3 nguồn đó đều có chung đặc điểm là liên tục trả về hình ảnh (gọi là frame) nên dùng chung class.

camera-ip

Kết nối camera IP trong opencv

Bên cạnh Webcam thì Camera IP cũng rất là thông dụng, nó có nhiều ưu điểm hơn hẳn Webcam. Cụ thể là:
– Kết nối tới khoảng cách xa hơn bằng wifi hoặc cáp mạng
– Camera IP được thiết kế để làm việc liên tục nhiều ngày, nhiều giờ
– Camera IP có nhiều chức năng hơn: có lens, có hồng ngoại nhìn đêm, có chức năng chống ngược sáng,…
– Hỗ trợ thẻ nhớ ngoài để quay phim trong trường hợp không kết nối được

Và các ứng dụng thương mại cũng sử dụng camera IP là chủ yếu. Ít khi dùng webcam cho thương mại do webcam thiết kế cho nhu cầu cá nhân. Do đó bài này sẽ hướng dẫn các bạn kết nối camera IP trong OpenCV.

[C++] Các hàm vẽ cơ bản trong OpenCV

[C++] Các hàm vẽ cơ bản trong OpenCV

OpenCV cung cấp các hàm vẽ cơ bản như vẽ điểm, vẽ đường thẳng, đường tròn, elip, hình chữ nhật, text,… Mục đích là khi nhận dạng hoặc phát hiện được đối tượng thì vẽ lên ảnh output cho dễ nhìn

mk_wm1000_ci

[C++] Xử lý sự kiện (event) mouse và keyboard

OpenCV hỗ trợ các sự kiện của mouse và keyboard ở mỗi window, do thư viện HighGUI xử lý. Dựa vào đó mà có thể tạo ra các ứng dụng lấy màu ở 1 điểm nào đó, hoặc các chương trình phức tạp tuỳ theo thao tác của người sử dụng.