Thư viện xử lý ảnh OpenCV3.0
2 posters
Trang 1 trong tổng số 1 trang
Thư viện xử lý ảnh OpenCV3.0
Lịch sử: #OpenCV
Nguồn download:
Môi trường lập trình:
Cách cài đặt vào Visual Studio 2012,2013
Bước 1: Chuẩn bị các đường dẫn cho việc sử dụng OpenCV 3.0
Mở Property Pages của Project đang làm việc (Alt+F7)
+Configuration Properties> VC++Directories cho ứng dụng Form ( Form Application Project)
>> Include Directories: Điền đường dẫn các folder chứa tập tin header (.h hay .hpp) cho OpenCV
của tôi là D:\Storages\OpenCV3.0\opencv\build\include
>> Library Directories: Điền đường dẫn các folder chứa tập tin library .lib cho OpenCV
của tôi là visual studio 2012 nên dùng bản vc11 của bạn là visual 2013 thì là vc12, tôi dùng hệ điều hành 32 bít thì là x86, bạn dùng hệ 64bit thì là x64
D:\Storages\OpenCV3.0\opencv\build\x86\vc11\lib
>> Source Directories: Điền đường dẫn các folder chứa tập tin header cho OpenCV
của tôi là D:\Storages\OpenCV3.0\opencv\build\x86\vc11\bin
+Configuration Properties> C/C++ cho ứng dụng Console ( Console Application Projectt)
cũng tương tự như Include Directories phía trên
Bước 2: Thiết lập các thư viện chuẩn cho Debug, Release, Mình hướng dẫn cho phần Debug, phần Release các bạn làm tương tự chỉ thay một chữ cái d sau cùng của tên library opencv_world300d.lib thành opencv_world300.lib là xong
Mở tab Linker trong cửa sổ Property pages
Bước 3: Khai báo các lớp được dùng, các lớp này là các tập tin header thôi còn các file thực thi đã được thêm vào phía trên rồi, chỉ cần khai bao là Visual Studio tự động biên dịch các thành phần còn lại
#include "opencv2/imgproc.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/objdetect.hpp"
Bạn dùng thêm những component khác như detect motion chẳng hạn thì tìm đúng các tệp header của nó để mà nhúng vào trong chương trình.
Thêm nứa: nếu bạn ngại gõ cv:: trước lệnh nào đó ví dụ như cv::copy để sao chép mảng, ma trận, ảnh thì bạn có thể thêm khai báo sau phía trên cùng sau mấy dòng include
using namespace cv;
Lúc này bạn chỉ cần gõ copy thay vì cv::copy. Mình không khuyến khích điều này vì nó sẽ dễ gây ambigous (định nghĩa không rõ ràng) với những lệnh từ các lớp hay không gian miền khác. Ví dụ abs là hàm trị tuyệt đối có ở rất nhiều thư viện dễ gây lỗi chương trình nếu không chỉ rõ là bạn dùng của lớp nào
Nguồn download:
Môi trường lập trình:
Cách cài đặt vào Visual Studio 2012,2013
Bước 1: Chuẩn bị các đường dẫn cho việc sử dụng OpenCV 3.0
Mở Property Pages của Project đang làm việc (Alt+F7)
+Configuration Properties> VC++Directories cho ứng dụng Form ( Form Application Project)
>> Include Directories: Điền đường dẫn các folder chứa tập tin header (.h hay .hpp) cho OpenCV
của tôi là D:\Storages\OpenCV3.0\opencv\build\include
>> Library Directories: Điền đường dẫn các folder chứa tập tin library .lib cho OpenCV
của tôi là visual studio 2012 nên dùng bản vc11 của bạn là visual 2013 thì là vc12, tôi dùng hệ điều hành 32 bít thì là x86, bạn dùng hệ 64bit thì là x64
D:\Storages\OpenCV3.0\opencv\build\x86\vc11\lib
>> Source Directories: Điền đường dẫn các folder chứa tập tin header cho OpenCV
của tôi là D:\Storages\OpenCV3.0\opencv\build\x86\vc11\bin
+Configuration Properties> C/C++ cho ứng dụng Console ( Console Application Projectt)
cũng tương tự như Include Directories phía trên
Bước 2: Thiết lập các thư viện chuẩn cho Debug, Release, Mình hướng dẫn cho phần Debug, phần Release các bạn làm tương tự chỉ thay một chữ cái d sau cùng của tên library opencv_world300d.lib thành opencv_world300.lib là xong
Mở tab Linker trong cửa sổ Property pages
Bước 3: Khai báo các lớp được dùng, các lớp này là các tập tin header thôi còn các file thực thi đã được thêm vào phía trên rồi, chỉ cần khai bao là Visual Studio tự động biên dịch các thành phần còn lại
#include "opencv2/imgproc.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/objdetect.hpp"
Bạn dùng thêm những component khác như detect motion chẳng hạn thì tìm đúng các tệp header của nó để mà nhúng vào trong chương trình.
Thêm nứa: nếu bạn ngại gõ cv:: trước lệnh nào đó ví dụ như cv::copy để sao chép mảng, ma trận, ảnh thì bạn có thể thêm khai báo sau phía trên cùng sau mấy dòng include
using namespace cv;
Lúc này bạn chỉ cần gõ copy thay vì cv::copy. Mình không khuyến khích điều này vì nó sẽ dễ gây ambigous (định nghĩa không rõ ràng) với những lệnh từ các lớp hay không gian miền khác. Ví dụ abs là hàm trị tuyệt đối có ở rất nhiều thư viện dễ gây lỗi chương trình nếu không chỉ rõ là bạn dùng của lớp nào
Được sửa bởi jackauk ngày Sat Oct 03, 2015 11:37 pm; sửa lần 3.
jackauk- Thành viên thường
- Tổng số bài gửi : 63
Điểm danh tiếng : 2
Join date : 16/08/2015
Age : 35
Đến từ : TP Hồ Chí Minh
Re: Thư viện xử lý ảnh OpenCV3.0
Main modules:
core. Nhân tính toán
imgproc. Xử lý ảnh
imgcodecs. Đọc và ghi têp tin ảnh
videoio. Xuất nhập media
highgui. GUI cấp cao
video. Phân tích video
calib3d. Canh chỉnh video và dựng hình 3D
features2d. Nền tảng đặc trưng 2D
objdetect. Phát hiện đối tượng
ml. Học máy
flann. Nhóm và tìm kiếm trong không gian đa chiều
photo. Tính toán nhiếp ảnhơ/b]
stitching. [b]Ghép(đính) ảnh
cudaarithm. Tính toán trên ma trận
cudabgsegm. Phân mảnh(lớp) của nền ảnh
cudacodec. Mã hóa và giải mã video
cudafeatures2d. Phát hiện và mô tả các đặc trưng
cudafilters. Lọc ảnh
cudaimgproc. Image Processing
cudalegacy. Legacy support
cudaobjdetect. Object Detection
cudaoptflow. Optical Flow
cudastereo. Stereo Correspondence
cudawarping. Image Warping
cudev. Device layer
hal. Hardware Acceleration Layer
shape. Shape Distance and Matching
superres. Super Resolution
videostab. Video Stabilization
viz. 3D ảo
Extra modules:
adas. Advanced Driver Assistance
bgsegm. Improved Background-Foreground Segmentation Methods
bioinspired. Biologically inspired vision models and derivated tools
ccalib. Custom Calibration Pattern for 3D reconstruction
cvv. GUI for Interactive Visual Debugging of Computer Vision Programs
datasets. Framework for working with different datasets
face. Face Recognition
latentsvm. Latent SVM
line_descriptor. Binary descriptors for lines extracted from an image
matlab. MATLAB Bridge
optflow. Optical Flow Algorithms
reg. Image Registration
rgbd. RGB-Depth Processing
saliency. Saliency API
surface_matching. Surface Matching
text. Scene Text Detection and Recognition
tracking. Tracking API
xfeatures2d. Extra 2D Features Framework
ximgproc. Extended Image Processing
xobjdetect. Extended object detection
xphoto. Additional photo processing algorithms
core. Nhân tính toán
imgproc. Xử lý ảnh
imgcodecs. Đọc và ghi têp tin ảnh
videoio. Xuất nhập media
highgui. GUI cấp cao
video. Phân tích video
calib3d. Canh chỉnh video và dựng hình 3D
features2d. Nền tảng đặc trưng 2D
objdetect. Phát hiện đối tượng
ml. Học máy
flann. Nhóm và tìm kiếm trong không gian đa chiều
photo. Tính toán nhiếp ảnhơ/b]
stitching. [b]Ghép(đính) ảnh
cudaarithm. Tính toán trên ma trận
cudabgsegm. Phân mảnh(lớp) của nền ảnh
cudacodec. Mã hóa và giải mã video
cudafeatures2d. Phát hiện và mô tả các đặc trưng
cudafilters. Lọc ảnh
cudaimgproc. Image Processing
cudalegacy. Legacy support
cudaobjdetect. Object Detection
cudaoptflow. Optical Flow
cudastereo. Stereo Correspondence
cudawarping. Image Warping
cudev. Device layer
hal. Hardware Acceleration Layer
shape. Shape Distance and Matching
superres. Super Resolution
videostab. Video Stabilization
viz. 3D ảo
Extra modules:
adas. Advanced Driver Assistance
bgsegm. Improved Background-Foreground Segmentation Methods
bioinspired. Biologically inspired vision models and derivated tools
ccalib. Custom Calibration Pattern for 3D reconstruction
cvv. GUI for Interactive Visual Debugging of Computer Vision Programs
datasets. Framework for working with different datasets
face. Face Recognition
latentsvm. Latent SVM
line_descriptor. Binary descriptors for lines extracted from an image
matlab. MATLAB Bridge
optflow. Optical Flow Algorithms
reg. Image Registration
rgbd. RGB-Depth Processing
saliency. Saliency API
surface_matching. Surface Matching
text. Scene Text Detection and Recognition
tracking. Tracking API
xfeatures2d. Extra 2D Features Framework
ximgproc. Extended Image Processing
xobjdetect. Extended object detection
xphoto. Additional photo processing algorithms
jackauk- Thành viên thường
- Tổng số bài gửi : 63
Điểm danh tiếng : 2
Join date : 16/08/2015
Age : 35
Đến từ : TP Hồ Chí Minh
Tạo Project C++ Windows Form dành cho VS2012 trở lên
Nguồn http://hoanganhblog.net/tao-mot-project-c-windows-form-danh-cho-vs2012-tro-len/
Tên thường gọi khác của C++ Windows Form là C++ .NET
Ai đã từng sử dụng Visual Studio 2010 chắc cũng biết rằng, khi tạo project bằng C++, bạn có nhiều lựa chọn, trong đó có một lựa chọn về Windows Form Application. Rất là hay luôn, tôi có thể áp dụng bộ thư viện .NET vào chương trình. Không chỉ thế, các thao tác thiết kế giao diện (UI) lại trở nên rất đơn giản khi mà tôi chỉ cần kéo từ Toolbox thả vào Form là xong rồi.
Đó là thời huy hoàng của VS2010, từ VS2012 trở đi, Microsoft đã loại bỏ template này và thông báo tới người dùng rằng: chúng tôi không khuyến khích tạo ứng dụng giao diện người dùng bằng C++, hãy chuyển sang sử dụng C#.
Quả thật, C# được tạo ra, chuyên biệt và rất tối ưu cho việc thiết kế các ứng dụng Windows Form. Tuy nhiên, tôi lại không thích điều này, có thể bạn cũng thế. Mặc dù C# rất hay, nhưng đôi lúc muốn viết chương trình bằng C++ hơn bởi tốc độ và khả năng của nó.
Nếu quay lại C++, VS không còn hỗ trợ bạn tạo Windows Form, nhưng họ vẫn còn hỗ trợ chúng. Vậy có nghĩa là, tôi vẫn có thể tạo ứng dụng Windows Form được. Dưới đây là cách mà tôi đã làm:
Tạo project C++ Windows Form
Đầu tiên, bạn sẽ tạo một project mới:
Theo kiểu Win32 Project:
Đặt tên cho nó đi, tôi sử dụng tên CLR hen, xong rồi thì OK. Kế đó, bạn lựa chọn Next, rồi cấu hình Empty như tôi:
Ấn Finish để VS tạo project Win32 cho bạn.
Tới đây thì chúng ta mới chỉ có 1 project bình thường, sử dụng ngôn ngữ C++ chuẩn (C++ Native). Để mang lại chút mới mẻ, bạn click phải vào tên project, chọn Add -> Add new item hoặc Ctrl + Shift + A. Lúc này, bạn chuyển sang nhánh UI, và chọn Windows Form:
Đặt tên cho nó đi, tôi để mặc định là “MyForm.h”. Xong rồi thì OK. Do Windows Form là đối tượng của .NET, mà bạn lại thêm nó vào chương trình C++ Native, VS sẽ thông báo:
Rằng project của bạn sẽ được chuyển sang dạng có Common Language Runtime Support (CLR) hỗ trợ. Ấn Yes thôi, ngu gì không nhỉ.
Oh, và bạn đã có 1 form, sẵn sàng để thiết kế. Nhưng chưa xong đâu, project của bạn chưa được cấu hình xong, nên không thể build ngay được. Hãy cấu hình nó đã nhé! Click phải vào project, chọn Properties.
Tại nhánh General – Common Language Runtime Support, bạn chọn (/clr) như hình:
Bằng cách này, bạn đã yêu cầu Visual Studio nhúng thư viện .NET vào chương trình. Còn nữa, bạn vào nhánh Linker – System, chọn SubSystem là WINDOWS.
Nó có nghĩa là bạn đang viết ứng dụng W32, chứ không phải Console (không tạo thêm cửa sổ màu đen ak). Nhiều khi thuộc tính này đã được chọn sẵn.
Gần xong phần cấu hình, cũng tại nhánh Linker, chọn Advance – Entry Point, nhập “Main”:
Với thao tác này, bạn thông báo cho trình biên dịch biết hàm đầu tiên khi vào chương trình là hàm Main. Xong rồi thì ấn OK thôi.
Bước cuối cùng!
Bạn có thấy rằng tôi viết Entry Point là Main, nhưng hàm Main đó ở đâu?
C++ chẳng rảnh viết giùm đâu, tự lực thôi. Bạn thêm một tập tin cpp vào project, đặt tên là Program.cpp cho giống C# hen.
Và đây là phần code cần có trong file Program.cpp:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
Chú ý:
- Do project của tôi có tên là CLR nên khi using namespace, tôi phải ghi là CLR, nếu bạn sử dụng tên khác, hãy sửa nó lại cho đúng.
- Đoạn include cũng như thế, do form của tôi có tên là MyForm.h nên tôi phải include đúng tên đó. Nếu bạn sử dụng tên khác, hãy sửa nó lại.
- Không liên quan: quá trình Design lại form trong C++ rất chậm so với C#, bạn biết mà. Tôi coi đó là một tác dụng phụ.
Các kiểu dữ liệu, tham số giống như C++ .NET rồi phải không nào!
Ấn F7 và chờ, nếu không gặp vấn đề gì, ấn F5 và thưởng thức nhé.
jackauk- Thành viên thường
- Tổng số bài gửi : 63
Điểm danh tiếng : 2
Join date : 16/08/2015
Age : 35
Đến từ : TP Hồ Chí Minh
Re: Thư viện xử lý ảnh OpenCV3.0
Bổ sung 1 lỗi khi chạy OPENCV trên WINDOWSFORM đó là Visual Studio 2013 không copy file opencv_world300.dll vào Project. Do vậy phải tự tay copy file này vào folder chứa Project. Mình bị mắc lỗi này sau đó tìm mãi mới ra.
Còn 1 điều nữa muốn bổ sung là kể cả hệ điều hành 32 bit hay 64 bit thì chúng ta đều có thể build project theo 32bit được nhé, không nhất thiết hệ điều hành 64bit thì phải build 64 bit. Mình vẫn build và gọi hàm bình thường ở chế độ 32bit mặc dù hệ điều hành mình 64 bit
Còn 1 điều nữa muốn bổ sung là kể cả hệ điều hành 32 bit hay 64 bit thì chúng ta đều có thể build project theo 32bit được nhé, không nhất thiết hệ điều hành 64bit thì phải build 64 bit. Mình vẫn build và gọi hàm bình thường ở chế độ 32bit mặc dù hệ điều hành mình 64 bit
kaizen0890- Tổng số bài gửi : 3
Điểm danh tiếng : 3
Join date : 10/12/2015
Re: Thư viện xử lý ảnh OpenCV3.0
kaizen0890 đã viết:Bổ sung 1 lỗi khi chạy OPENCV trên WINDOWSFORM đó là Visual Studio 2013 không copy file opencv_world300.dll vào Project. Do vậy phải tự tay copy file này vào folder chứa Project. Mình bị mắc lỗi này sau đó tìm mãi mới ra.
Còn 1 điều nữa muốn bổ sung là kể cả hệ điều hành 32 bit hay 64 bit thì chúng ta đều có thể build project theo 32bit được nhé, không nhất thiết hệ điều hành 64bit thì phải build 64 bit. Mình vẫn build và gọi hàm bình thường ở chế độ 32bit mặc dù hệ điều hành mình 64 bit
Mình thi thoảng mới bị lỗi này, đa số là tạo các đường dẫn đầy đủ thi khi build VS tự động thêm dll vào mà không cần copy thủ công, các bạn có thể thấy điều này khi dùng EmguCV với C#. Còn vấn đề build 32bit thì mình thấy hầu như tất cả đều build dạng đó mà trong giới hạn kiến thức của mình, mình cũng chưa thấy chương trình nào build 64bit
jackauk- Thành viên thường
- Tổng số bài gửi : 63
Điểm danh tiếng : 2
Join date : 16/08/2015
Age : 35
Đến từ : TP Hồ Chí Minh
Re: Thư viện xử lý ảnh OpenCV3.0
Hiện tại mình đang gặp khó khăn trong việc add thư viện mở rộng của opencv 3.0 (opencv-contrib). Để build thư viện này, mình đọc hướng dẫn chạy CMAKE rất lằng nhằng mà không chạy được. Bạn có biết cách cài đặt thư viện này không?
kaizen0890- Tổng số bài gửi : 3
Điểm danh tiếng : 3
Join date : 10/12/2015
Re: Thư viện xử lý ảnh OpenCV3.0
kaizen0890 đã viết:Hiện tại mình đang gặp khó khăn trong việc add thư viện mở rộng của opencv 3.0 (opencv-contrib). Để build thư viện này, mình đọc hướng dẫn chạy CMAKE rất lằng nhằng mà không chạy được. Bạn có biết cách cài đặt thư viện này không?
Thư viện chính mình còn chưa dùng hết nên chưa có nghiên cứu gì về cái thư viện mở rộng. Đây là lần đầu tiên mình nghe nói đến đó.Bạn có thể làm theo :https://github.com/itseez/opencv_contrib hoặc thử làm theo link youtube như sau nè :
Quả thật là cái OpenCV_Contrib có nhiều điểm nổi bật nhưng mà nó chưa kiểm tra kỹ càng lắm nhưng mình nghĩ nó sẽ được đưa vào phiên bản OPENCV sau.
https://github.com/itseez/opencv_contrib đã viết:
An overview of the contrib modules and a small explanation
This list gives an overview of all modules available inside the contrib repository. These are also the correct names for disabling the building of a specific module by adding
$ cmake -D OPENCV_EXTRA_MODULES_PATH=<opencv_contrib>/modules -D BUILD_opencv_reponame=OFF <opencv_source_directory>
opencv_adas: Advanced Driver Assistance Systems module with Forward Collision Warning.
opencv_bgsegm: Improved Adaptive Background Mixture Model for Real-time Tracking / Visual Tracking of Human Visitors under Variable-Lighting Conditions.
opencv_bioinspired: Biologically inspired vision models and derivated tools.
opencv_ ccalib: Custom Calibration Pattern for 3D reconstruction.
opencv_cvv: GUI for Interactive Visual Debugging of Computer Vision Programs.
opencv_datasets: Interface for interfacing with existing computer vision databases.
opencv_datasettools: Tools for working with different datasets.
opencv_face: Recently added face recognition software which is not yet stabalized.
opencv_latentsvm: Implementation of the LatentSVM detector algorithm.
opencv_line_descriptor: Binary descriptors for lines extracted from an image.
opencv_matlab: OpenCV Matlab Code Generator.
opencv_optflow: Optical Flow Algorithms for tracking points.
opencv_reg: Image Registration module.
opencv_rgbd: RGB-Depth Processing module.
opencv_saliency: Saliency API, understanding where humans focus given a scene.
opencv_surface_matching: Surface Matching Algorithm Through 3D Features.
opencv_text: Scene Text Detection and Recognition in Natural Scene Images.
opencv_tracking: Long-term optical tracking API.
opencv_xfeatures2d: Extra 2D Features Framework containing experimental and non-free 2D feature algorithms.
opencv_ximgproc: Extended Image Processing: Structured Forests / Domain Transform Filter / Guided Filter / Adaptive Manifold Filter / Joint Bilateral Filter / Superpixels.
opencv_xobjdetect: Integral Channel Features Detector Framework.
opencv_xphoto: Additional photo processing algorithms: Color balance / Denoising / Inpainting.
opencv_stereo: Stereo Correspondence done with different descriptors: Census / CS-Census / MCT / BRIEF / MV.
opencv_hdf: Hierarchical Data Format I/O.
opencv_fuzzy: New module focused on the fuzzy image processing.
jackauk- Thành viên thường
- Tổng số bài gửi : 63
Điểm danh tiếng : 2
Join date : 16/08/2015
Age : 35
Đến từ : TP Hồ Chí Minh
Re: Thư viện xử lý ảnh OpenCV3.0
Phiên bản mới nhất hiện nay là OpenCV 3.1 phát hành ngày 21.12.2015. Xem thêm ở trang chủ của OpenCv
jackauk- Thành viên thường
- Tổng số bài gửi : 63
Điểm danh tiếng : 2
Join date : 16/08/2015
Age : 35
Đến từ : TP Hồ Chí Minh
Similar topics
» Các thư viện C++
» Thư viện xử lý ảnh AForge.NET 2.2.5
» Thư viện xử lý ảnh OpenCV 3.3.1
» Thư viện xử lý ảnh trên Matlab 2014a
» Tuyển thành viên vào các nhóm làm việc
» Thư viện xử lý ảnh AForge.NET 2.2.5
» Thư viện xử lý ảnh OpenCV 3.3.1
» Thư viện xử lý ảnh trên Matlab 2014a
» Tuyển thành viên vào các nhóm làm việc
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết
|
|