biên dịch tài liệu hướng dẫn sử dụng bộ thư viện nguồn mở opencv

163 540 0
biên dịch tài liệu hướng dẫn sử dụng bộ thư viện nguồn mở opencv

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

biên dịch tài liệu hướng dẫn sử dụng bộ thư viện nguồn mở opencv

TRƯỜNG CAO ĐẲNG KỸ THUẬT LÝ TỰ TRỌNG TP.HỒ CHÍ MINH Ỹ KHOA CÔNG NGH THÔNG TIN NGHỆ Đề tài nghiên cứu khoa học sinh viên: c BIÊN DỊCH TÀI HƯ CH HƯỚNG DẪN SỬ DỤNG BỘ THƯ VI VIỆN NGUỒN MỞ OPENCV Sinh viên thực hiện: BÙI T n: TẤN AN Lớp: 10CDTP1 ỄN Người hướng dẫn: NGUYỄ NGỌC TRANG Mục lục: Phần I Mở đầu… ……………… ……………… ……………… ……………… …… Lý chọn đề tài… ……………… ……………… ……………… ………… …… Xác định mục tiêu nghiên cứu: … ……………… ………………………… …… Đối tượng nghiên cứu: … ……………… ……………… …………………….…… Phạm vi nghiên cứu: … ……………….……………… ……………………….…… Đặt giả thuyết: … ……………… ……………… ……………… …………………… Thực trạng khảo sát thư viện nguồn mở OpenCV:……… …… 6.1 Thực trạng: … ……………… ……………… ……………… ………… …… 6.2 Khảo sát… ……………… ……………… ……………… …………… …… Phần II Quy trình thực hiện… ……………… ……………… ………………… Phần III Tổng kết… ……………… ……………… ……………… …………….…… Hướng phát triển đề tài: … ……………… ……………………………… Kinh nghiệm: … ……………… ……………… ………………………… …… Tài liệu hướng dẫn sử sụng OpenCV v2.1… ……………… …… 3 4 5 15 16 17 17 19 Đề tài: BIÊN DỊCH TÀI HƯ CH HƯỚNG DẪN SỬ DỤNG BỘ THƯ VI VIỆN NGUỒN MỞ OPENCV Phần I Mở đầu: Lý chọn đề tài: Tôi quan tâm tới công nghệ nhận dạng máy tính, cơng nghệ mới, ứng dụng rộng rãi ất nhiều ngành khác nhau, đặc biệt lĩnh vực chế tạo robot Nh ặc Nhưng việc tìm kiếm ệc nguồn tài liệu Tiếng Việt OpenCV hiếm, phần lớn tài liệu tiếng Anh, ồn gây nhiều khó khăn cho sinh viên muốn học ứng dụng Vì lí tơi chọn đề tài ăn muốn này, mong muốn cung cấp cho bạn nguồn tài liệu Tiếng Việt, mong giúp ích cho ốn bạn Xác định mục tiêu nghiên cứu: - Mục tiêu: Đề tài này,tôi biên dịch tài liệu h ớng dẫn từ tiếng Anh sang tiếng Việt, ề hướng với code mẫu giúp cho người học dễ dàng cách sử dụng th viện để lập trình ời thư ể - Mục đích: Cung cấp nguồn tài liệu tiếng Việt cho sinh viên Việt Nam tham khảo, học tập, ấp nghiên cứu lập trình dễ dàng th viện OpenCV ứu thư Đối tượng nghiên cứu: - Đối tượng nghiên cứu: Bộ thư viện OpenCV 2.1 C API ện - Khách thể nghiên cứu: Sinh viên ngành Công nghệ thơng tin, đặc biệt lập trình viên ể ặc muốn học tập, nghiên cứu thư viện ện Phạm vi nghiên cứu: OpenCV 2.1 C API Đặt giả thuyết: Việc biên dịch tài liệu OpenCV này, thật giúp ích cho bạn việc học, sử dụng thư viện ? Thật cần thết bạn quan tâm tới ? Có giúp bạn tự học thư viện ? Với nguồn tài liệu biên dịch sang tiếng Việt, việc bạn học thư viện thật dễ dàng Nó cần thiết bạn quan tâm tới Với nguồn tài liệu Tiếng Việt cần thiết để việc học bạn trở nên dễ dàng nhiều Biên dịch tài liệu với code mẫu giúp bạn thật dễ hiểu tự học cách hiệu quả, đạt kết mong muốn Khi hoàn thành đề này, sinh viên viên, lập trình viên Việt Nam dễ dàng sử dụng thư viện OpenCV để viết phần mềm ứng dụng nêu trên, nhanh chóng đón bắt cơng nghệ giới Thực trạng khảo sát thư viện nguồn mở OpenCV: 6.1 Thực trạng: - Nguồn tài liệu Tiếng Việt OpenCV hiếm, phần lớn tài liệu tiếng Anh, gây nhiều khó khăn cho sinh viên muốn học ứng dụng Trên diễn đàn hay website có nhiều đề tài nói OpenCV Ví dụ http://khoinguonit.com/f93/, http://www.ieev.org/ Nhưng hầu hết trang khơng có tài liệu thống OpenCV tiếng Việt mà có số tài liệu đơn lẻ, tài liệu tiếng Anh Ở trường đại học tương tự tài liệu học tập cho sinh viên tiếng Anh Sinh viên Việt Nam muốn khởi đầu việc nghiên cứu phải gặp nhiều khó khăn rào cản ngôn ngữ (Tiếng Anh), việc hiểu thuật ngữ mang tính kỹ thuật với người thời gian không dễ dàng 6.2 Khảo sát: Phiếu khảo sát phát 60 phiếu thu 56 phiếu Dưới biểu đồ chi tiết câu hỏi khảo sát Bạn có quan tâm Robot khơng? 11% 30% 59% Khơng Có, không nhiều Rất quan tâm Bạn có quan tâm cơng nghệ nhận dạng khn mặt người máy tính? 7% 21% 72% Khơng Có, khơng nhiều Rất quan tâm Bạn có biết Thị giác máy tính? (3) 0% 41% 59% Chưa nghe qua Có nghe qua Đang tìm hiểu Đây cơng nghệ nhận dạng máy tính, bạn quan tâm tới chứ? 18% 20% 62% Không Cũng biết qua Rất quan tâm Những ứng dụng thư viện mà bạn biết? 31% 41% 5% 23% Khơng Xử lí màu sắc độ phân giải An ninh (camera thông minh, nhân dạng) Cả nhiều ứng dụng khác Đã bạn tìm kiếm tài liệu tự học nguồn thư viện nào? 29% 34% 37% Chưa Chỉ đọc qua cho biết Chắc chắn 6b Bạn muốn tự học thư viện chứ? 16% 14% 70% Không Cũng muốn thử qua Rất muốn Nếu học, bạn muốn nguồn tài hướng dẫn Tiếng Việt chứ? 7% 93% Tất nhiên Không quan tâm Tài liệu thư viện Tiếng Việt có nhiều không? 9% 29% 62% Khơng biết Ít Nhiều Bạn có tìm kiếm tài liệu liên quan đến thư viện không? 3% 27% 43% 27% Không Cũng Khi cần tìm Thường xuyên 10 Hàm tạo biểu đồ kích thước quy định trả trỏ đến việc tạo biểu đồ Nếu mảng ranges 0, phạm vi bin biểu đồ phải xác định thông qua Hàm cvSetHistBinRanges Mặc dù cvCalcHist cvCalcBackProject xử lý 8-bit hình ảnh mà khơng thiết lập phạm vi bin, họ giả định cách đến 255 thùng cvGetHistValue * D Trả trỏ đến thùng biểu đồ float cvGetHistValue 1D(hist, idx0) float cvGetHistValue 2D(hist, idx0, idx1) float cvGetHistValue 3D(hist, idx0, idx1, idx2) float cvGetHistValue nD(hist, idx) hist Histogram idx0, idx1, idx2, idx3 Chỉ số thùng rác idx mảng số #define cvGetHistValue_1D( hist, idx0 ) ((float*)(cvPtr1D( (hist)->bins, (idx0), )) #define cvGetHistValue_2D( hist, idx0, idx1 ) ((float*)(cvPtr2D( (hist)->bins, (idx0), (idx1), ))) #define cvGetHistValue_3D( hist, idx0, idx1, idx2 ) ((float*)(cvPtr3D( (hist)->bins, (idx0), (idx1), (idx2), ))) #define cvGetHistValue_nD( hist, idx ) ((float*)(cvPtrND( (hist)->bins, (idx), ))) GetHistValue macro trả trỏ vào thùng quy định 1D, 2D, 3D ND biểu đồ Trong trường hợp biểu đồ thưa thớt Hàm tạo bin đặt 0, trừ tồn cvGetMinMaxHistValue Tìm thùng tối thiểu tối đa biểu đồ void cvGetMinMaxHistValue( const CvHistogram* hist, float* value, float* max value, int* idx=NULL, int* max idx=NULL ); hist Histogram min_value Con trỏ trỏ tới giá trị tối thiểu biểu đồ max_value Con trỏ trỏ tới giá trị tối đa biểu đồ min_idx Con trỏ trỏ tới mảng tọa độ cho tối thiểu max_idx Con trỏ trỏ tới mảng tọa độ cho tối đa 149 Hàm tìm thấy thùng tối thiểu tối đa biểu đồ vị trí họ Tất sản lượng đối số tùy chọn Trong số extremas với giá trị tối thiểu số (trong từ điển để) trả Trong trường hợp mức tối đa tối thiểu số, từ điển để (extrema địa điểm) trả cvMakeHistHeaderForArray Làm cho biểu đồ mảng CvHistogram* cvMakeHistHeaderForArray( int dims, int* sizes, CvHistogram* hist, float* data, float** ranges=NULL, int uniform=1 ); dims kích thước biểu đồ sizes mảng kích thước kích thước biểu đồ hist tiêu đề biểu đồ khởi tạo Hàm data mảng sử dụng để lưu trữ thùng biểu đồ ranges bin phạm vi biểu đồ, xem cvCreateHist uniform tính đồng cờ, xem cvCreateHist Hàm khởi tạo biểu đồ, có tiêu đề thùng phân bổ người sử dụng thứ cvReleaseHist không cần phải gọi sau Chỉ có biểu đồ dày đặc khởi tạo cách Hàm trả hist cvNormalizeHist Bình thường hóa biểu đồ void cvNormalizeHist( CvHistogram* hist, double factor ); hist trỏ đến biểu đồ factor yếu tố chuẩn hóa Hàm bình thường hóa thùng biểu đồ cách mở rộng quy mô, chẳng hạn số tiền thùng trở nên factor cvQueryHistValue*D Truy vấn giá trị bin biểu đồ float QueryHistValue_1D(CvHistogram hist, int idx0) hist Histogram idx0, idx1, idx2, idx3 Chỉ số thùng rác idx mảng số #define cvQueryHistValue\_1D( hist, idx0 ) \ cvGetReal1D( (hist)->bins, (idx0) ) 150 #define cvQueryHistValue\_2D( hist, idx0, idx1 ) \ cvGetReal2D( (hist)->bins, (idx0), (idx1) ) #define cvQueryHistValue\_3D( hist, idx0, idx1, idx2 ) \ cvGetReal3D( (hist)->bins, (idx0), (idx1), (idx2) ) #define cvQueryHistValue\_nD( hist, idx ) \ cvGetRealND( (hist)->bins, (idx) ) Các macro trả giá trị bin quy định 1D, 2D, 3D, biểu đồ ND Trong trường hợp biểu đồ thưa thớt Hàm trả 0, bin khơng có mặt biểu đồ khơng có bin tạo cvReleaseHist Phát hành biểu đồ void cvReleaseHist( CvHistogram** hist ); hist đúp trỏ đến biểu đồ phát hành Hàm phát hành (tiêu đề liệu) biểu đồ Con trỏ đến biểu đồ xóa Hàm Nếu *hist trỏ NULL, Hàm khơng có cvSetHistBinRanges Thiết lập giới hạn thùng biểu đồ void cvSetHistBinRanges( CvHistogram* hist, float** ranges, int uniform=1 ); hist Histogram ranges mảng mảng phạm vi bin, xem cvCreateHist uniform tính đồng cờ, xem cvCreateHist Hàm Hàm độc lập để thiết lập phạm vi bin biểu đồ Cho biết thêm mô tả chi tiết ranges thông số uniform xem Hàm cvCalcHist, khởi tạo phạm vi Phạm vi cho thùng biểu đồ phải thiết lập trước biểu đồ tính backproject biểu đồ tính tốn cvThreshHist Ngưỡng biểu đồ void cvThreshHist( CvHistogram* hist, double threshold ); hist trỏ đến biểu đồ threshold Cấp ngưỡng Hàm xóa thùng biểu đồ ngưỡng quy định 151 Chương 3: cvaux Các hàm mở rộng Thị Giác Máy Tính 3.1 Phát mô tả đối tượng 152 Chương 4: highgui Cao cấp giao diện I/O Trong OpenCV thiết kế để sử dụng ứng dụng quy mơ đầy đủ sử dụng phạm vi Hàm giàu khuôn khổ giao diện người dùng (chẳng hạn Qt, WinForms ca cao) giao diện người dùng tất cả, đơi có cần phải thử số Hàm cách nhanh chóng hiển thị kết Đây mơ-đun HighGUI thiết kế cho Nó cung cấp giao diện dễ dàng để: • Tạo thao tác cửa sổ hiển thị hình ảnh "nhớ" nội dung họ (khơng có cần phải xử lý sơn lại kiện từ hệ điều hành) • Thêm trackbars cửa sổ, xử lý kiện chuột đơn giản commmands bàn phím • Đọc ghi hình ảnh đến / từ ổ đĩa nhớ • Đọc video từ máy ảnh tập tin ghi video vào tập tin 4.1 Giao diện người dùng cvConvertImage Chuyển đổi hình ảnh khác với lật dọc tùy chọn void cvConvertImage( const CvArr* src, CvArr* dst, int flags=0 ); src Nguồn hình ảnh dst Điểm đến hình ảnh Phải kênh 3-kênh 8-bit hình ảnh flags Các cờ hoạt động: CV_CVTIMG_FLIP_lật hình ảnh theo chiều dọc CV_CVTIMG_SWAP_RB Hoán đổi kênh màu đỏ màu xanh Trong hình ảnh màu sắc OpenCV BGR kênh tự, nhiên số hệ thống trật tự cần phải đảo ngược trước hiển thị hình ảnh (ShowImage làm điều tự động) CvConvertImage Hàm chuyển đổi hình ảnh khác làm bật kết theo chiều dọc mong muốn Hàm sử dụng ShowImage cvCreateTrackbar Tạo trackbar gắn vào cửa sổ định int cvCreateTrackbar( const char* trackbarName, const char* windowName, int* value, int count, CvTrackbarCallback onChange ); trackbarName Tên trackbar tạo windowName Tên cửa sổ sử dụng phụ huynh cho trackbar tạo 153 value trỏ đến biến số nguyên, có giá trị phản ánh vị trí trượt Khi sáng tạo, vị trí trượt xác định biến count vị trí tối đa trượt Tối thiểu vị trí ln ln onChange Pointer Hàm để gọi thay đổi vị trí trượt Hàm nên prototyped void Foo(int); NULL gọi lại không cần thiết CvCreateTrackbar Hàm tạo (hay gọi trượt phạm vi kiểm soát) trackbar với quy định tên phạm vi, định biến syncronized với trackbar vị trí Specidoanh nghiệp FDI Hàm gọi lại gọi thay đổi vị trí trackbar Trackbar tạo hiển thị đỉnh cửa sổ CV_EXTERN_C_FUNCPTR( void (*CvTrackbarCallback)(int pos) ); cvDestroyAllWindows Phá hủy tất cửa sổ HighGUI void cvDestroyAllWindows(void); CvDestroyAllWindows Hàm phá hủy tất HighGUI cửa sổ mở cvDestroyWindow Phá hủy cửa sổ void cvDestroyWindow( const char* name ); name Tên cửa sổ bị phá hủy CvDestroyWindow Hàm phá hủy cửa sổ với tên gọi cvGetTrackbarPos Trả vị trí trackbar int cvGetTrackbarPos( const char* trackbarName, const char* windowName ); trackbarName Tên trackbar windowName Tên cửa sổ cha mẹ trackbar CvGetTrackbarPos Hàm trả vị trí trackbar quy định cvGetWindowHandle Được xử lý cửa sổ theo tên void* cvGetWindowHandle( const char* name ); name tên cửa sổ Các cvGetWindowHandle Hàm trả cửa sổ xử lý địa (HWND trường hợp Win32 GtkWidget trường hợp GTK+) cvGetWindowName Lấy tên cửa sổ cách xử lý 154 const char* cvGetWindowName( void* windowHandle ); windowHandle Handle cửa sổ CvGetWindowName Hàm trả tên cửa sổ xử lý nguồn gốc (HWND trường hợp Win32 GtkWidget trường hợp GTK +) cvInitSystem Khởi tạo HighGUI int cvInitSystem( int argc, char** argv ); argc Số đối số dòng lệnh argv mảng đối số dòng lệnh CvInitSystem Hàm khởi tạo HighGUI Nếu khơng gọi cách rõ ràng người sử dụng trước cửa sổ tạo ra, gọi ngầm sau với argc = 0, argv = NULL Dưới Win32 khơng có cần phải gọi cách rõ ràng Theo X Window đối số sử dụng để tùy chỉnh nhìn HighGUI cửa sổ kiểm sốt cvMoveWindow Thiết lập vị trí cửa sổ void cvMoveWindow( const char* name, int x, int y ); name tên cửa sổ để di chuyển x x phối hợp góc cùng, bên trái y y phối hợp góc cùng, bên trái CvMoveWindow Hàm thay đổi vị trí cửa sổ cvNamedWindow Tạo cửa sổ int cvNamedWindow( const char* name, int flags ); name tên cửa sổ cửa sổ thích sử dụng định danh cửa sổ flags cờ cửa sổ Hiện nay, cờ hỗ trợ CV_WINDOW_AUTOSIZE Nếu thiết lập, kích thước cửa sổ tự động điều chỉnh để phù hợp với hình ảnh hiển thị (xem ShowImage), người dùng khơng thể thay đổi kích thước cửa sổ tay CvNamedWindow Hàm tạo cửa sổ mà sử dụng trình giữ chỗ cho lứa tuổi trackbars Cửa sổ tạo gọi tên họ Nếu cửa sổ với tên tồn tại, Hàm cvResizeWindow Thiết lập kích thước cửa sổ void cvResizeWindow( const char* name, int width, int height ); name tên cửa sổ để thay đổi kích cỡ width chiều rộng height chiều cao 155 CvResizeWindow Hàm thay đổi kích thước cửa sổ cvSetMouseCallback Gán gọi lại cho kiện chuột void cvSetMouseCallback( const char* windowName, CvMouseCallback onMouse, void* param=NULL ); windowName Tên cửa sổ onMouse trỏ đến Hàm để gọi kiện chuột xảy quy định cửa sổ Hàm nên prototyped void Foo(int event, int x, int y, int flags, void* param); nơi event CV_EVENT_*, x y đồng phối trỏ chuột hệ tọa độ hình ảnh (khơng phải cửa sổ tọa độ), flags kết hợp CV_EVENT_FLAG_*, param người dùng định nghĩa tham số truyền cho cvSetMouseCallback Hàm gọi param người sử dụng xác định tham số thông qua với Hàm gọi lại CvSetMouseCallback Hàm thiết lập Hàm gọi lại cho kiện chuột xảy cửa sổ định Tham số kiện những: CV_EVENT_MOUSEMOVE chuột phong trào CV_EVENT_LBUTTONDOWN lại nút xuống CV_EVENT_RBUTTONDOWN phải xuống CV_EVENT_MBUTTONDOWN Trung nút xuống CV_EVENT_LBUTTONUP lại nút lên CV_EVENT_RBUTTONUP phải nút lên CV_EVENT_MBUTTONUP Trung nút lên CV_EVENT_LBUTTONDBLCLK Còn lại bấm vào nút tăng gấp đôi CV_EVENT_RBUTTONDBLCLK nút phải nhấn đúp chuột CV_EVENT_MBUTTONDBLCLK Trung nút nhấp đúp chuột vào Các tham số flags kết hợp của: CV_EVENT_FLAG_LBUTTON trái nút nhấn CV_EVENT_FLAG_RBUTTON phải nút nhấn CV_EVENT_FLAG_MBUTTON Trung nút nhấn CV_EVENT_FLAG_CTRLKEY điều khiển phím nhấn CV_EVENT_FLAG_SHIFTKEY phím Shift ép CV_EVENT_FLAG_ALTKEY Alt phím nhấn cvSetTrackbarPos Thiết lập vị trí trackbar void cvSetTrackbarPos( const char* trackbarName, const char* windowName, int pos ); 156 trackbarName Tên trackbar windowName Tên cửa sổ mẹ trackbar pos vị trí CvSetTrackbarPos Hàm thiết lập vị trí trackbar quy định cvShowImage Hiển thị hình ảnh cửa sổ định void cvShowImage( const char* name, const CvArr* image ); name tên cửa sổ image hình ảnh hiển thị CvShowImage Hàm hiển thị hình ảnh cửa sổ định Nếu cửa sổ tạo với cờ CV WINDOW AUTOSIZE sau hình ảnh hiển thị với kích thước ban đầu nó, khơn ngoan hình ảnh thu nhỏ để phù hợp với cửa sổ Hàm quy mơ hình ảnh, tùy thuộc vào sâu: Nếu hình ảnh 8-bit khơng dấu, hiển thị Nếu hình ảnh 16-bit số ngun khơng dấu 32-bit, điểm ảnh chia cho 256 Đó là, phạm vi giá trị [0255 * 256] ánh xạ tới [0255] Nếu hình ảnh 32-bit floating-point, giá trị pixel nhân với 255 Đó là, giá trị phạm vi [0,1] ánh xạ tới [0255] cvWaitKey Chờ đợi cho phím nhấn int cvWaitKey( int delay=0 ); delay dừng mili giây CvWaitKey Hàm chờ đợi cho kiện quan trọng vô hạn (delay

Ngày đăng: 01/09/2015, 18:16

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan