OpenCV với C# nhận dạng cử chỉ tay

Hiện nay e đang nghiên cứu về nhận dạng cử chỉ tay của người câm điếc.
Các ac ai đã làm share cho e một chút kinh nghiệm được không ạ.
1 vấn đề nữa là e học C# quen rồi, giờ xử lý ảnh cần thư viện OpenCV, mà tìm hiểu thì hình như openCV không dùng được với C# hay sao đấy. E thấy toàn hướng dẫn dùng C++ thôi. :((( . E muốn hỏi là có dùng C# với Opencv có được không và cài đặt opencv thế nào để dùng được với C#.
Em cảm ơn các bác

Opencv dùng quá dễ với C#.
Sử dụng qua PInvoke.

Bước 1: Giải nén opencv và chọn lấy các dll cần thiết sẽ dùng và copy vào thư mục build của C#.

Bước 2: Khai báo hàm trong dll của opencv.

using System.Runtime.InteropService;

public static class OpencvPInvoke{
[DllImport("opencv_highgui.dll")
public static extern IntPtr cvCreateCameraCapture(int index);
// hàm tương ứng là cvCreateCameraCapture(int index) trong opencv C++

Bước 3: Sử dụng.
Sử dụng như Opencv bên C++.

IntPtr cap = OpencvPinvoke.cvCreateCameraCapture(0);OpencvPInvoke.cvSetCaptureProperty(...,..);
IntPtr Image = OpencvPInvoke.....

Bạn có thể tải mã nguồn EmguCV về học hỏi thêm.

4 Likes

cảm ơn nhé.
M sẽ thử, tại chưa dùng bao giờ nên không biết. :blush:

Bạn dùng thẳng EMGU CV đi , h nó ra bản 3.x rùi đấy, lên tận trang chủ mà tải , các hàm cơ bản bạn hiểu được trong OpenCV thì cũng có thể hiểu được trong EMGU CV thôi, Có điều C# chậm hơn C++ rất nhiều và ít ai thích làm trí tuệ trên C#

Mình đã dùng EmguCV. Nhưng nó có nhược điểm là khi chạy nó sẽ tải toàn bộ dll của OpenCv nên sẽ rất tốn RAM. Nên sử dụng PInvoke(EmguCV cũng chỉ là sử dụng PInvoke để truy xuất tài nguyên của OPenCV mà thôi), mặc dù nó khó hơn nhưng nó sẽ làm việc theo ý mình.
Có một điều, C# chậm hơn C++ ở những đoạn mã managedcode. Khi tải và chạy những đoạn mã của Opencv là mã unmagedcode thì nó sẽ giữ nguyên tốc độ của C++.

1 Like

em muốn hỏi síu .
nhiều code nó chỉ chạy open theo từng phiên bản muốn dùng chung phải chỉnh như nào ạ!?
mong được phản hồi nhanh ạ…1
em cảm ơn

Ý bạn là phiên bản của opencv hay emgucv ?
Nếu các dll nó không có tên phiên bản thì có thể copy đè lên file cũ.
Nếu có tên thì phải sửa lại thư viện khá nhiều. Phải có mã nguồn gốc và sửa ở phần load dll. Nó không đơn giản lắm đâu nhé.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?