- [C#] Cách Sử Dụng DeviceId trong C# Để Tạo Khóa Cho Ứng Dụng
- [SQLSERVER] Loại bỏ Restricted User trên database MSSQL
- [C#] Hướng dẫn tạo mã QRcode Style trên winform
- [C#] Hướng dẫn sử dụng temp mail service api trên winform
- [C#] Hướng dẫn tạo mã thanh toán VietQR Pay không sử dụng API trên winform
- [C#] Hướng Dẫn Tạo Windows Service Đơn Giản Bằng Topshelf
- [C#] Chia sẻ source code đọc dữ liệu từ Google Sheet trên winform
- [C#] Chia sẻ source code tạo mã QR MOMO đa năng Winform
- [C#] Chia sẻ source code phần mềm lên lịch tự động chạy ứng dụng Scheduler Task Winform
- [Phần mềm] Tải và cài đặt phần mềm Sublime Text 4180 full version
- [C#] Hướng dẫn download file từ Minio Server Winform
- [C#] Hướng dẫn đăng nhập zalo login sử dụng API v4 trên winform
- [SOFTWARE] Phần mềm gởi tin nhắn Zalo Marketing Pro giá rẻ mềm nhất thị trường
- [C#] Việt hóa Text Button trên MessageBox Dialog Winform
- [DEVEXPRESS] Chia sẻ code các tạo report in nhiều hóa đơn trên XtraReport C#
- [POWER AUTOMATE] Hướng dẫn gởi tin nhắn zalo từ file Excel - No code
- [C#] Chia sẻ code lock và unlock user trong domain Window
- [DEVEXPRESS] Vẽ Biểu Đồ Stock Chứng Khoán - Công Cụ Thiết Yếu Cho Nhà Đầu Tư trên Winform
- [C#] Hướng dẫn bảo mật ứng dụng 2FA (Multi-factor Authentication) trên Winform
- [C#] Hướng dẫn convert HTML code sang PDF File trên NetCore 7 Winform
Lập trình nhận dạng khuôn mặt sử dụng EmguCV bằng Csharp
Hôm nay, mình hướng dẫn các bạn viết chương trình nhận dạng khuôn mặt, sử dụng thư viện EmguCV 3.0 bằng ngôn ngữ lập trình Csharp. Đầu tiên các bạn cần download EmguCV tại đường dẫn Download EmguCV.
- Sau khi download về, các bạn cài đặt EmguCV ra một thư mục, như video mình hướng dẫn bên dưới mình để ngoài Desktop.
- Tiếp theo, mình imports class DetectFace.cs đi kèm trong bộ cài đặt vào ứng dụng.
- Tiếp đến mình cần imports các thư viện EmguCV vào: Emgu.CV, Emgu.Cuda, Emgu.Until, Emgu.CV.UI.
- Mình chép 2 file nhận dạng khuôn mặt, và mắt trong thư mục OpenCV vào project: haarcascade_frontalface_default.xml và haarcascade_eye.xml
- Mình tiếp tục chép thư viện x64 vào project, ở đây win mình đang sử dụng là window 64bit, còn máy bạn nào sử dụng window 32bit thì imports thư viện x86 vào. Và nhớ sau khi copy các file này vào các bạn cần phải chọn Property cho các file này sang CopyAlways như video mình hướng dẫn bên dưới.
- Để sử dụng được Camera các bạn cần phải import Emgu.CV.UI.dll vào toolbox, sau đó mình lấy control ImageBox ra để hiện thị video của webcam.
Tại sử dụng import thư viện EmguCV này khá là phức tạp nên mình có quay video hướng dẫn bên dưới cho các bạn.
- Dưới đây là code của Form main
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Emgu.CV;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
using Emgu.Util;
using Emgu.CV.Cuda;
using FaceDetection;
namespace Nhan_dang_khuon_mat
{
public partial class Form1 : Form
{
//declaring global variables
private Capture capture = null; //takes images from camera as image frames
private bool captureInProgress; // checks if capture is executing
public Form1()
{
InitializeComponent();
CvInvoke.UseOpenCL = false;
try
{
capture = new Capture();
capture.ImageGrabbed += ProcessFrame;
}
catch (NullReferenceException excpt)
{
MessageBox.Show(excpt.Message);
}
}
private void ProcessFrame(object sender, EventArgs arg)
{
Mat frame = new Mat();
capture.Retrieve(frame, 0);
Mat image = frame; //Read the files as an 8-bit Bgr image
long detectionTime;
List faces = new List();
List eyes = new List();
//The cuda cascade classifier doesn't seem to be able to load "haarcascade_frontalface_default.xml" file in this release
//disabling CUDA module for now
bool tryUseCuda = false;
bool tryUseOpenCL = true;
DetectFace.Detect(
image, "haarcascade_frontalface_default.xml", "haarcascade_eye.xml",
faces, eyes,
tryUseCuda,
tryUseOpenCL,
out detectionTime);
foreach (Rectangle face in faces)
{
CvInvoke.Rectangle(image, face, new Bgr(Color.Purple).MCvScalar, 3);
Bitmap c = frame.Bitmap;
Bitmap bmp = new Bitmap(face.Size.Width, face.Size.Height);
Graphics g = Graphics.FromImage(bmp);
g.DrawImage(c, 0, 0, face, GraphicsUnit.Pixel);
}
foreach (Rectangle eye in eyes)
CvInvoke.Rectangle(image, eye, new Bgr(Color.Green).MCvScalar, 2);
imageBox1 .Image = frame;
}
private void ReleaseData()
{
if (capture != null)
capture.Dispose();
}
private void btnStart_Click(object sender, EventArgs e)
{
if (capture != null)
{
if (captureInProgress)
{ //stop the capture
btnStart.Text = "Start Capture";
capture.Pause();
}
else
{
//start the capture
btnStart.Text = "Stop";
capture.Start();
}
captureInProgress = !captureInProgress;
}
}
private void button1_Click(object sender, EventArgs e)
{
if (capture != null) capture.FlipVertical = !capture.FlipVertical;
}
private void button2_Click_1(object sender, EventArgs e)
{
if (capture != null) capture.FlipHorizontal = !capture.FlipHorizontal;
}
}
}
Chúc các bạn thành công. Hãy nhớ like and share để ủng hộ diễn đàn viết nhiều bài hay hơn nữa
Mọi thắc mắc về bài viết xin đặt câu hỏi tại http://hoidap.laptrinhvb.net mình sẽ giải đáp.
Xin cảm ơn các bạn đã theo dõi.