Download miễn phí Đồ án Robot di dộng bám theo vật





MỤC LỤC
PHẦN Trang
Phần 1.Lý thuyết định vị robot 6
Phần 2.Thiết kế mạch điều khiển 9
Phần 3. Thiết kế phần cơ Robot 18
Phần 4. Điều khiển Robot 20
Phần 5. Xử lý ảnh 25
Phần 6.Tổng quan về OPENCV 30
Phần 7. Truyền dữ liệu bằng module RF 40
Phần 8. Chương trình điều khiển 46
 



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

heck box “ Add bin directory to path”.
Sau khi cài đặt
Thư mục OpenCV có chứa và thư mục con. Thư mục “docs” có chứa các tài liệu html cho tất cả các hàm và kiểu dữ liệu. từ các tài liệu này bạn có thể làm các ví dụ, bạn cũng có thể duyệt (browse) thư mục “samples”.
Bạn cũng cần đến những file header khi biên dịch chương trình nó có ở trong các module của OpenCv. Mặc dù bạn không cần làm việc này. tui thích tập hợp chúng lại với nhau vào trong một thư mục.
Trên cả Linux và Windows, bạn có thể xác định vị trí của những header bằng cách tìm kiếm thư mục cài đặt và các thư mục con của nó với các file có đuôi mở rộng là *.h, *.hpp. sẽ có rất nhiều file được tìm thấy. bạn sẽ không cần tất cả các file. Header cho tất cả các modules ngoại trừ HighGUI đã được đính sẵn trong mỗi module. Bạn có thể bỏ các header trong thư mục “src” cho nhưng module này. Với HighGUI bạn sẽ cần đến file highgui.h được lưu ở otherlibs/highgui.
Lập trình với OpenCV: vài điều cơ bản
Những điều cần biết về Header và Libraries
Hầu hết chương trình OpenCV cần cv.h và highgui.h.Sau đó để nhận dạng mặt chúng ta cần thêm cvaux.h. Phần còn lại của file header được thêm vào bởi những header cao nhất ( high-level headers).
Nếu bạn để các file header trong các thư mục khác nhau( cài đặt mặc định), hãy chắc chắn rằng đường dẫn của trình biên dịch có các thư mục đó. Nếu bạn gom chúng lại một thư mục hãy chắc chắn rằng nó trùng với đường dẫn của trình biên dịch của bạn.
Figure 1:Ví dụ chương trình đọc một ảnh từ file và ghi nó vào một file khác với dịnh dạng khác
Mối liên kết của bạn sẽ cần cả hai thư viện và tên của thư viện tĩnh để sử dụng. thư viện tĩnh bạn cần liên kết đến file cxcore.lib, cv.lib, và highgui.lib. và sau đó bạn cần thêm file cvaux.lib để nhận dạng gương mặt. tất cả các file này đều nằm trong thư mục “lib”.
Đọc và ghi ảnh
Xuất nhập ảnh rất dễ dàng với OpenCV/ hình 1 chỉ cho chúng ta thấy một chương trình hoàn chỉnh để đọc một ảnh và ghi ảnh đó sang một file thứ hai trong một định dạng khác.
Để đọc một file ảnh đơn giản ta chỉ cần gọi cvloadImage(), trong ví dụ nó nằm ở dòng thứ 14. OpenCV hỗ trợ hầu hết các định dạng ảnh phổ biến như JPEG, PNG và BMP. Bạn không cần cung cấp thông tin của định dạng ảnh. cvLoadImage xác định định dạng file bằng cách đọc các file header.
Để ghi một hình ảnh ra file, gọi hàm cvSaveImage(). Hàm này quyết định định dạng file nào sẽ được dùng từ đuôi mở rộng. trong ví dụ này đuôi mở rộng là “PNG”. Vì vậy nó sẽ ghi dữ liệu ảnh dưới định dạng PNG.
Cả hai hàm cvLoadImage() và cvSaveImage() đều nằm trong HighGUI module.
Khi bạn hoàn thành việc sử dụng nhập ảnh từ cvLoadImage(), bạn cần thả free bằng cách gọi hàm cvReleaseImage(), như ở dòng 29 hàm này sẽ lấy địa chỉ của một điểm làm input tạo “ngắt an toàn”. Nó trả tự do cho cấu trúc ảnh chỉ khi ảnh không rỗng. sau khi trả tự do, nó sẽ đặt giá trị điểm ảnh về 0.
Thu video trục tiếp
Chụp một khung hình từ một webcam, hay từ các thiết bị quay video kĩ thuật số khác dễ dàng như load hình từ một file. Hình 2 cho chúng ta thấy một danh sách các lệnh để khởi tạo cấu trúc chụp, và lưu các video frames và đóng các giao diện chụp.
Figure 2: Ví dụ chương trình chụp ảnh video và lưu chúng vào một file
Giao diện chụp được khởi tạo tại dòng 19 bằng cách gọi hàm cvCaptureFromCAM(). Hàm này trả một pointer về cấu trúc cvCapture. Bạn không thể truy cập trực tiếp vào cấu trúc này. Thay vào đó bạn sẽ lưu pointer qua lệnh cvQueryFrame().
Khi bạn hoàn thành việc sử dụng thu video, bạn gọi lệnh cvReleaveCapture() để thả nổi thu video. Giống như hàm cvReleaseImage(), bạn hãy lưu địa chỉ của pointer cvCapture bằng hàm cvReleaseCapture().
Không được thả rỗi hay chỉnh sửa IplImage bạn nhận được từ cvQueryFrame()! Nếu bạn cần sửa dữ liệu ảnh hãy tạo một bản copy với câu lệnh như sau:
// Copy the video frame
IplImage *pImgToChange = cvCloneImage(pVideoFrame);
// Insert your image-processing code here ...
// Free the copy after using it cvReleaseImage(&pImgToChange);
Chuyển đổi màu
Hình 3 biểu diễn mã lệnh để chuyển đổi một ảnh màu sang một ảnh xám. OpenCV hỗ trợ chuyển đổi từ nhiều chuẩn mẫu màu khác nhau, gồm RGB, HSV, YCrCb và CIELAB.
Lưu ý các hàm chuyển đổi cvCvtColor() đòi hỏi hai ảnh đầu vào. ảnh thứ nhất pRGBImag là ảnh nguồn còn ảnh thứ hai pGrayImag là ảnh sản phẩm nó sẽ chứa kết quả chuyển đổi khi hàm cvCvtColor() được gọi lại.
Figure 3: Ví dụ chương trình chuyển đổi ảnh màu qua ảnh đen trắng
Bởi mô hình này có nguồn ngẫu nhiên và hình ảnh kết quả để xử lý hàm và rất phổ biến trong OpenCV bạn sẽ cần chúng để tạo ảnh sản phẩm. như ở dòng 25 lệnh gọi hàm cvCreateImage() tạo ra một ảnh có cùng kích thước như ảnh ban đầu.
OpenCV lưu ảnh như thế nào
OpenCV lưu hình ảnh giống như C,IplImage. IPL ở trong thư viện xử lý ảnh là một thừa kế từ phiên bản trước của OpenCV.
Kiểu dữ liệu IplImage được xác định trong CXCORE. Thêm vào đó là dữ liệu ảnh thô, nó chứa một số mô tả chi tiết gọi header của ảnh bao gồm:
Width – chiều rộng ảnh bằng pixels
Height – chiều cao ảnh bằng pixels
Depth – một vài phần tử bất biến xác định nó chỉ ra số bits trên mỗi pixel trên mỗi kênh. Ví dụ nếu depth=IPL_DEPTH_8U dữ liệu cho mỗi pixel được lưu trong 8 bit với giá trị unsigned (unsigned values).
nChannels – số kênh dữ liệu(từ 1 đến 4). Mỗi kênh chứa một kiểu dữ liệu pixel. Ví dụ một ảnh RGB có 3 channels – đỏ, xanh lá, xanh dương (đôi khi nó được gọi là ảnh BGR bởi vì dữ liệu pixel được lưu ở dạng xanh dương, xanh lá, đỏ). ảnh đen trắng chỉ có chứa một kênh là độ sáng của pixel.
Truy xuất giá trị pixel
Bạn có thể tạo nhiều kiểu hàm khác nhau nhờ OpenCV mà không cần truy xuất trực tiếp vào dữ liệu pixel thô. Ví dụ, như nhận dạng khuôn mặt, tracking, và nhận dạng chương trình được nêu sau,trong series này bạn không cần truy xuất dữ liệu thô bằng tay mà thay vào đó chúng hoạt động bằng pointer của ảnh và các cấu trúc cấp cao khác. Sự tính toán các mức pixel được thi hành bên trong các hàm của OpenCV. Tuy nhiên nếu bạn ghi thuật toán xử lya ảnh của chính bạn bạn có thể cần đến truy xuất vào dữ liệu pixel thô. Có hai cách để thực hiện như sau:
Truy xuất pixel đơn giản
Cách dễ dàng nhất để đọc các pixel riêng lẻ là với hàm cvGet2D():
CvScalar cvGet2D(const CvArr*, int row, int col);
Hàm này lấy 3 thông số là một pointer chứa dữ liệu (CVArr*), và mảng được xếp theo hang và theo cột.
Dữ liệu chứa đựng có thể có cấu trúc IplImage. Cái hang cao nhất của điểm ảnh có row = 0 và hang thấp nhất có row = chiều cao -1
Hàm cvGet2D() trả về cấu trúc dạng C là CvScalar được xác định như sau:
typedef struct CvScalar
{
double val[4];
}
CvScalar;
Giá trị của mỗi điểm ảnh cho mỗi kênh được nằm trong val. Với ảnh đen trắng, val[0] chứa độ sáng của điểm ảnh, ba giá trị khác được đặt bằng 0. Với ảnh có 3 kênh BGR thì blue = val[0], green = val[1],và red = val[2].
Các hàm bổ sung cvSet2D() cho phép bạn chỉnh sửa giá trị điểm ảnh. Nó được khai báo như sau:
void cvSet2D(CvArr*, int row, int col,
CvSca...
 

daigai

Well-Known Member
Trích dẫn từ moonoutdoor:
Bạn cho mình link tài liệu full với, đang cần xài@@
bạn gửi wa mail: [email protected]
hay inbox cũng dc
Thank bạn


Bạn download tại đây nhé
 

Các chủ đề có liên quan khác

Top