01/10/2018, 14:18
Làm thế nào để compiler chương trình có dùng thư viện opencv trên cmd sử dụng g++?
Hello
Mình có 1 chương trình sử dụng đến 1 vài module trong thư viện opencv. Sử dụng trình biên dịch g++. Làm thế nào để compiler chương trình với dòng lệnh trên cmd
Thank you.
Bài liên quan
Vô cái thư viện opencv tìm pkconfig rồi fang
OCV sử dụng CMake làm build system, bạn cài CMake rồi configure theo hướng dẫn: https://perso.uclouvain.be/allan.barrea/opencv/cmake_config.html
Build ra binaries rồi thì cất đâu đó xong lúc viết thì link như bình thường:
g++ -o main main.cpp -Wall -lopencv
đó tha hồ mà link nha
Hướng dẫn này build cho visual studio à bạn
Trước mình dùng opencv trên visual studio nên tải gói opencv cho windows đã build sẵn.
Giờ mình muốn compiler trên visual studio code (text editor). Sử dụng g++. Thấy bản 3.0 không có mục build cho mingw, mà chỉ có cho java, python, vc 12 và vc14
Nên mình đã dùng cmake build bản 3.0 cho mingw mà cứ bị lỗi. Hết lỗi videoio rồi lại lỗi khác :V
Mình dùng cmake build lại, có bỏ bớt được 1 số module không cần dùng không nhỉ
anh nói rõ chi tiết được không ạ
Ủa, mặc định CMake hỗ trợ generate hầu hết targets mà Có đó.
Trên Windows thì VS phổ biến hơn nên người ta chọn VS, mình dùng g++ thì cứ chọn MinGW.
Hi Nấm Lùn.
Có 3 cách dùng code thư viện.
http://www.bogotobogo.com/cplusplus/libraries.php
Build thư viện bạn có thể thử msys là một hệ thống linux trên window.
P/S Nếu trên window tốt nhất là bạn nên dùng vs cho nhanh.
Nãy mình đã thử 2 lần rồi nhưng hay lỗi lặt vặt trong qua trình gererate lắm
Đợi mình chút, mình sẽ cập nhật ảnh lỗi trực tiếp lên đây, giờ nó đang chạy phần config
Chạy config xong đã bị lỗi này rồi
Mặc định nếu chỉ generate project mà không thêm bớt gì thì nó sẽ build kiểu mặc định, tức là thêm Python support, CUDA, TBB này nọ. Mình đoán là bạn đang để mặc định, mà mặc định thì build Python -> không tìm thấy Python -> fail. Nếu không dùng Python thì tắt đi, lúc đầu mình cũng build mặc định nhưng tắt Python thì OK:
btw, mình dùng command line, tiện hơn, nhưng GUI thì cũng y hệt.
Mình chưa kịp làm gì luôn ấy, nó đã báo lỗi rồi
Vừa chạy cmake như này xong
Bấm Finish thì nó chạy tiến trình config, xong báo lỗi như này luôn
trong đó CXXFLAGS là nơi chứa thư mục
include
của opencvLDFLAGS thì 1 nùi lib ở trên với thư mục
lib
của opencvví dụ opencv installed ở
C:\opencv
thì CXXFLAGS là-IC:\opencv\include
, LDFLAGS sẽ là-LC:\opencv\lib -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_aruco -lopencv_bgsegm -lopencv_ccalib -lopencv_dpm -lopencv_face -lopencv_photo -lopencv_fuzzy -lopencv_hdf -lopencv_img_hash -lopencv_line_descriptor -lopencv_optflow -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_sfm -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_xfeatures2d -lopencv_shape -lopencv_video -lopencv_ml -lopencv_ximgproc -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_flann -lopencv_xobjdetect -lopencv_imgcodecs -lopencv_objdetect -lopencv_xphoto -lopencv_imgproc -lopencv_core -lglu32 -lopengl32 -ltbb.dll
sau đó khi run
main.exe
thì nó la thiếu dll nào thì vôC:\opencv\bin
mà tìm, và vôC:\mingw\bin
mà tìm rồi copy nó qua chung thư mục vớimain.exe
nếu thấy khổ dâm quá thì install VS2017 và vcpkg cho nó lành
Bạn chọn
File -> Delete Cache
để xóa cache, nhấnGenerate
rồi chọn cái thứ hai để tự tay cấp đường dẫn tới compiler (bạn chọn cái #1 bị fail vì GCC không có trong%PATH%
, mặc địch CMake sẽ search trong đó trước)Tự điền vào đường dẫn compiler
Next, OK. Nó sẽ vẫn báo lỗi, sửa lại chỗ này và điền vào path tới
make
của bạn.Generate lại lần nữa là OK.
Vote thớt dùng VS, build mấy project cỡ bự như này mà không quen tay thì dễ khóc mướn lắm Với mấy library khủng thì toàn có cung cấp VS solution trên Windows sẵn rồi, mở ra Ctrl F5 phát là xong.
trước mình cũng dùng vs với opencv pack cho windows có sẵn
nhưng dạo gần đây mình chuyển qua code trên vsc (visual studio code) nên muốn compiler trên vsc sử dụng g++, compiler trên vsc thì cũng đơn giản thôi, sử dụng ext .runner, chỉ có là sẽ phải cấu hình lại path cho nó build (và đây là vấn đề mình đang mắc)
với lại tiện thể học cmake luôn :3
Mình có thêm path vào system mà, có thể build chương trình c/c++ bình thường từ cmd
nếu xài g++ trên windows thì xài msys2 ấy, nó làm môi trường y hệt arch luôn. Có make, có pkg-config, có ls, grep, v.v… Install thư viện mới dễ dàng. gcc 7.3.0 luôn. Update toàn bộ library với 1 dòng pacman -Syu.
điểm yếu là hình như chỉ có 1 người update hơn 1000 thư viện?
qt
bị xung đột vói harfbuzz chả biết làm sao,fmt
gần đây cũng bị lỗi, chán, chuyển sang vcpkg cho lành, nó build trên máy mình cả bản realease lẫn debug, debug thêm warning cực kì ngon, gcc tuổi tí.CMake nó sẽ detect cả 3 thứ:
gcc
,g++
vàmake
. Mà MinGW thì hầu hết làmingw32-make.exe
chứ không cómake.exe
. Bác thử gõmingw32-make.exe
thì biết :3Bày nữa thì cũng hơi dài dòng với cũng chưa chắc giải quyết ổn nên thôi bác dùng tạm cái này, người ta có build sẵn tuy không chính thức: https://github.com/huihut/OpenCV-MinGW-Build
Hoặc nếu có cái MSYS2 thì họ có cả binaries của OpenCV trong đấy luôn, có MinGW này nọ luôn.
có câu in Rome do as the Romans do dịch sang tiếng Việt là nhập gia tùy tục, dev trên OS nào thì xài toolchain của OS đó, nếu trên Linux thì xài gcc hay clang, còn trên Windows thì cứ táng VS cho lành. Trước đây C++ trên VS chưa có package manager nào ngon nên mình mới sang thằng msys2, bây giờ có vcpkg ngon x2 lần thì ko còn lý do gì để vương vấn gcc trên Windows cả.