Lỗi khi cấu hình opencv


ai giúp em với, em cài open cv nhưng code bất cứ cái gì nó cũng hiện lỗi nãy thì phải xử lí thế nào ạ

chắc là do thiếu DLL. Tìm mấy file dll của opencv mà bỏ vào thư mục chứa file exe.

3 Likes

em thêm đủ r mà a, mới đầu nó báo thiếu dll e bổ sung vào nó mới ra lỗi này

nếu build ở chế độ Debug thì e phải copy mấy file dll kết thúc có chữ ‘d’ như ‘opencv_highguid.dll’ ấy

cái thứ 2 là những file dll này có thể lệ thuộc cái file dll khác nữa :V ví dụ ‘jpeg62.dll’, ‘libpng16d.dll’, ‘tiffd.dll’, ‘webpd.dll’. Các thư viện này lại lệ thuộc các thư viện khác nữa như ‘zlibd1.dll’ :V :V Muốn truy lùng cái file này thì em có thể xài dumpbin.exe của VS kèm sẵn. Bật cmd lên cd tới thư mục chứa file exe, rồi gõ:

"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"

(có dấu " ")
để enable môi trường VC++ x64, rồi gõ dumpbin /dependents hienthianh.exe nó sẽ ra các file dll cần thiết. Copy các file đó vào rồi lại gõ tiếp dumpbin /dependents cho từng file đó :V :V

ví dụ nó in ra thế này

dumpbin /dependents Debug/test-opencv.exe

...
Dump of file Debug\test-opencv.exe

File Type: EXECUTABLE IMAGE

  Image has the following dependencies:

    opencv_highguid.dll
    opencv_imgcodecsd.dll
    opencv_cored.dll
    MSVCP140D.dll
    VCRUNTIME140D.dll
    VCRUNTIME140_1D.dll
    ucrtbased.dll
    KERNEL32.dl

...

thì cần truy lùng tiếp các file

    opencv_highguid.dll
    opencv_imgcodecsd.dll
    opencv_cored.dll

(các file in hoa hay ‘ucrtbased.dll’ có sẵn trong system rồi ko cần copy/truy tiếp)

vd file ’ opencv_imgcodecsd.dll’ lệ thuộc vào các file dll sau đây:

dumpbin /dependents Debug/opencv_imgcodecsd.dll
...

Dump of file Debug\opencv_imgcodecsd.dll

File Type: DLL

  Image has the following dependencies:

    opencv_imgprocd.dll
    jpeg62.dll
    webpd.dll
    libpng16d.dll
    tiffd.dll
    opencv_cored.dll
    MSVCP140D.dll
    VCRUNTIME140D.dll
    VCRUNTIME140_1D.dll
    ucrtbased.dll
    KERNEL32.dll

v.v…

em muốn chắc ăn thì ngồi mò từ từ cho ra hết =]]

của anh xài vcpkg nó copy sẵn cho thế này :V

image

có nhiều file dll thừa ko cần thiết nó cũng copy luôn như ‘opencv_videoiod.dll’ :V

5 Likes

Bạn kiểm tra xem VS version bạn đang dùng cần dll 32bit hay 64bit, bạn thử dùng cách này xem, nếu ko được đổi 64 sang 32 xem sao(cách này thì mình không biết lệnh :sweat_smile:)

c:\Windows\SysWOW64\msvcp100.dll
c:\Windows\SysWOW64\msvcp100d.dll
c:\Windows\SysWOW64\msvcr100.dll
c:\Windows\SysWOW64\msvcr100_clr0400.dll
c:\Windows\SysWOW64\msvcr100d.dll
2 Likes

làm sao để biết vs cần dlll nào v c, vào đâu để xem v ạ

vscode 32 cần dll 32, 64 thì cần 64. Nếu bạn không biết vscode đang xài là loại nào thì bạn xem lại file download về nó có ghi 64 không, nếu không thì bạn làm theo hướng dẫn sau

  • mở vscode --> mở task manager (CTRL+SHIFT+ESC)—>detail —> chuột phải vào tên cột bất kì(VD:Name) chọn select columns---->tìm Platform ----> tích vào đó bấm ok ----->task manager sẽ thêm cột Platform với nội dung 32 hoặc 64 bit cho các chương trình đang chạy nhé.
1 Like

Bạn vào nuget mà tải đỡ cài đặt nhiều

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