2013-04-24 38 views
6

Tôi đã tải xuống các nguồn của opencv-2.4.5 và tôi đã làm theo hướng dẫn (trên trang web opencv dành cho cửa sổ) về việc cài đặt tất cả thư viện của riêng tôi. Được. Tôi tạo ra các tập tin opencv.sln với cmake sau đó tôi mở nó với visual studio 2010 chuyên nghiệp và tôi nhấp vào giải pháp xây dựng nhưng chỉ 9 thành công. Hầu hết 200 lỗi không thành công và hầu hết các lỗi về tbbd.lib không tìm thấy và opencv_core245d.lib không tìm thấy lỗi LNK1104. Tôi đang cố giải quyết nó trong bao nhiêu ngày. Tôi đã cố gắng để hiển thị các cách của các tập tin ... Bất cứ ai có thể giúp đỡ xin vui lòng? Đây là về luận án của tôi. (Xây dựng với Không Hỗ trợ Ngôn ngữ chung)OpenCV 245 lỗi xây dựng đầu tiên

+0

giống như trong cấu hình cmake của bạn, bạn đã xây dựng nó với sự hỗ trợ cho thư viện tbb (tbb -> Threading Building Blocks) nhưng không thể tìm thấy nó (bạn không có nó, hoặc đường dẫn là sai). Giả sử bạn đã cấu hình cmake build của mình thông qua giao diện cmake, hãy thử bỏ chọn tùy chọn tbb và tạo lại tệp .sln của bạn – alrikai

+0

cảm ơn bạn @alrikai nhưng tôi đã thêm tbb trong opencv-2.4.5/dep/tbb .... và tôi đã cho thấy nó trong cmake giống như các ví dụ khác openexr, eigen, qt, cuda, openni với cảm biến nguyên tố, python với numpy và sphinx, clAmdBlas và Fft ... và tôi đã sử dụng giao diện cmake với việc này. Và thêm đường dẫn bin của tbb với trình chỉnh sửa đường dẫn –

+0

Đường dẫn đến tệp .bib tbb của bạn có chính xác không? – alrikai

Trả lời

6

nhanh trả lời

Tôi đã cố gắng biên dịch OpenCV với sự hỗ trợ TBB sử dụng các hướng dẫn here.

Specs: Visual Studio 2012/Win 7 (64 bit)/OpenCV 2.4.5/CUDA 5

Tôi đã tải zip TBB mới nhất và chiết xuất nó để C:/src/OpenCV/dep (như được đề xuất trong hướng dẫn được liên kết ở trên).

Bạn phải sử dụng các thiết lập TBB sau trong CMake (ADAPT tùy thuộc vào đường dẫn tập tin của bạn):

TBB_LIB_DIR  :: C:/src/OpenCV/dep/tbb41_20130314oss/lib/intel64/vc11 
TBB_INCLUDE_DIRS :: C:/src/OpenCV/dep/tbb41_20130314oss/include/ 
TBB_STDDEF_PATH :: C:/src/OpenCV/dep/tbb41_20130314oss/include/tbb/tbb_stddef.h 
WITH_TBB   :: checked 
BUILD_TBB   :: unchecked 

biết thêm thông tin

Ban đầu, tôi cũng muốn cài đặt OpenCV với sự hỗ trợ CUDA 5 , nhưng có vẻ như CUDA 5 không tương thích với VS2012. Đây là lỗi tôi nhận được khi biên soạn OpenCV:

Building NVCC (Device) object modules/core/CMakeFiles/cuda_compile.dir/src/cuda/Debug/cuda_compile_generated_matrix_operations.cu.obj 
nvcc : fatal error : nvcc cannot find a supported cl version. Only MSVC 9.0 and MSVC 10.0 are supported 

Các tin tốt là bạn đang sử dụng VS2010, mà có thể được sử dụng với CUDA, theo đề nghị here. VS2012 có thể được thiết lập để tạo các dự án với CUDA, nhưng hiện tại không có cách nào (AFAIK) để biên dịch OpenCV với hỗ trợ CUDA cho VS2012 (đọc this để biết thêm thông tin).

Kết luận, những người cần hỗ trợ CUDA nên biên dịch và sử dụng OpenCV với VS2010.

Ngoài ra, khi biên dịch OpenCV, tôi có các lỗi sau đây:

error C3859: virtual memory range for PCH exceeded; please recompile with a command line option of '-Zm118' or greater 
fatal error C1076: compiler limit : internal heap limit reached; use /Zm to specify a higher limit 

tôi đã sử dụng các hướng dẫn here để cuối cùng biên dịch OpenCV. Tôi đã tạo một trang thuộc tính có /Zm130 làm tùy chọn bổ sung trong Thuộc tính chung> C/C++> Dòng lệnh và thêm nó vào tất cả các dự án OpenCV được tạo.

Đối với các bạn tham khảo, tôi cũng đính kèm cấu hình CMake và CMakeCache.txt tập tin mà tôi đã sử dụng (CUDA bị vô hiệu hóa khi tôi đang sử dụng VS2012): cấu hình

Hy vọng điều này sẽ giúp và vui lòng nhận xét nếu bạn cần tôi giải thích trên bất kỳ bước nào.

+0

Tôi sẽ thử nó @dilgenter và tôi sẽ đăng nó ở đây nhờ –

+0

Tôi đã cài đặt lại opencv-master, opencv-2.4.5 và opencv-2.4.7 cho cả máy tính xách tay mới của mình. OpenCV-2.4.7 của hàm đọc được trả về luôn null nhưng C-cvImageLoad làm việc tốt và opencv-master's cvLoadImage không làm việc cvImageLoad hoặc tôi đã bỏ sót một cái gì đó. Nhưng TBB của dir phải được .../bin/ia32 không intel64 hệ điều hành của tôi là 64-bit nhưng VS201x 32-bit này là lỗi của tôi. Và tôi đã gặp lỗi và lỗi gpu và studio trực quan đang nói về lỗi bạn có thể thích @dilgenter đã nói của bạn và giờ nó hoạt động tốt nhưng chỉ 2,4,5 tôi sẽ cố gắng tìm lý do tại sao lại đọc được phần tử null Mat của 2,4.7 . Bun bây giờ tôi quá bận rộn –

7

Thu gọn

Tôi đã dành 15 giờ hoặc lâu hơn để hoàn thành bài tập về nhà bằng cách sử dụng OpenCV. 14,5 trong số những giờ đã được chi tiêu chỉ nhận được nó thiết lập đúng cách. Tôi đã chạy qua khoảng 7 video hướng dẫn, một số hướng dẫn cài đặt và đọc hàng trăm bài đăng chứa các độ phân giải cho cùng một erros mà tôi nhận được. Tôi hiểu rằng việc cài đặt OpenCV không phải là một nhiệm vụ tầm thường và có một số bước để thực hiện việc này. Vì vậy, đây là một hướng dẫn đơn giản để thiết lập nó nếu bạn muốn sử dụng openCV.

Điều quan trọng là phải hiểu cách mọi thứ hoạt động như liên kết. Có ba loại tệp, tiêu đề của bạn mà bạn đưa vào, tệp .dll chứa các hàm và thư viện chứa hướng dẫn về cách gọi các hàm trong .dll. Vì vậy, ở đây, thay vì chỉ thêm các .dll làm phụ thuộc trong trình liên kết đầu vào, chúng ta sẽ thêm các tệp lib. Sau đó chúng ta sẽ tạo một biến môi trường hệ thống sẽ cho máy biết nơi để tìm các tệp .dll khi các tệp thư viện tương ứng của chúng được tham chiếu. Chúng tôi sẽ tạo một Bảng thuộc tính để khi chúng tôi tạo một dự án mới, chúng tôi chỉ cần thêm các cài đặt vào dự án của chúng tôi bằng cách nhấp vào "Thêm trang thuộc tính hiện tại" thay vì thêm một dự án mới. Bằng cách này, chúng ta không bao giờ phải trải qua điều này một lần nữa.

theo các bước sau CHÍNH XÁC VÀ LÀM VISUAL STUDIO SURE bị đóng trước khi tiếp tục

LƯU Ý: Khi văn bản được đưa ra trong dấu ngoặc kép với các hướng dẫn để sao chép văn bản cho biết, không bao gồm dấu ngoặc kép.

  • Trước hết, phần dễ dàng - tải xuống OpenCV 2.4.5 từ trang web của họ. http://opencv.org/ và nhấp vào OpenCV dành cho Windows. Nó sẽ tải xuống OpenCV 2.4.5.exe.

Cài đặt OpenCV

  • Khi tải xuống hoàn tất, nhấp đúp OpenCV-2.4.5.exe để chạy nó.

  • Khi được hỏi nơi để giải nén các tập tin, loại ino hộp văn bản: "C: \"

  • C: \ opencv nên đã được tạo ra sau khi hoàn thành. Điều hướng ở đó để đảm bảo.

Biến Cài đặt môi trường

  • Người dùng Windows 8:

    - Right click the bottom left corner of your screen when the start icon pops up. 
    
    - Click "Command Prompt (Admin)" 
    
    - Type "SETX -m OPENCV_DIR C:\opencv\build" and press enter to set the opencv build directory as a System Environment Variable. Wait for the console to give you confirmation that it is set. 
    
    - Right click the bottom left corner of your screen when the "Start" icon pops up. Click System -> Advanced System Settings -> Environment Variables 
    
    - In the "System Variables" list box, under the "Variable" collumn, find "Path". 
    
    - Highlight the "Path" row and click edit. 
    
    - Click in the "Variable Value" text box and hit the "end" key on your keyboard to scroll to the end of the line and add a semicolon. 
    
    - Type the following: "C:\opencv\build\x86\vc10\bin;C:\opencv\build\x86\vc10" and click "OK". This will add the openCV bin directory to the system path. 
    
  • người dùng Windows 7:

    Thực hiện theo các bước tương tự. Sự khác biệt duy nhất là cách bạn nhận được dấu nhắc lệnh và các thiết lập hệ thống. Google cách thiết lập biến môi trường trên Windows 7 nếu cần.

Cài đặt Visial Studio

LƯU Ý: tôi khuyên bạn nên VS2012 Professional vì làm nổi bật cú pháp tiên tiến mà làm cho cuộc sống trở nên dễ dàng hơn nhiều khi lập trình C++. Phiên bản này có thể được tải xuống và cài đặt miễn phí từ DreamSpark. Chỉ cần thực hiện và tài khoản với ID sinh viên của bạn. Tuy nhiên, các bước cho VS2010 và VS2012 là như nhau.

  • mở Visual Studio

    • Bấm "New Project" và mục "C++" chọn "Win32 Console Application".
  • Khi cửa sổ mở, nhấp "Tiếp theo", chọn "Empty Project" và nhấp "Finish". Điều quan trọng là bạn bắt đầu với một DỰ ÁN EMPTY mà không có một tiêu đề được biên dịch trước.

  • Tìm "Người quản lý sản phẩm". Theo mặc định, nó phải là một tab mà đôi khi rất khó để bỏ lỡ. Ngoài ra, nó có thể được truy cập bằng cách nhấp vào từ thanh công cụ "View" -> "Property Manager".

  • Nhấp chuột phải "Gỡ lỗi | Win32" và chọn "Thêm thuộc tính dự án mới". Đặt tên là "OpenCVProps" và nhấp vào "Thêm".

  • Nhấp chuột phải vào trang thuộc tính mới của bạn và chọn "Thuộc tính".

  • Từ cột bên trái, chuyển đến "C/C++" -> "Chung" và trong hộp danh sách ở bên phải, chọn "Thư mục bao gồm bổ sung" và nhấp vào "Chỉnh sửa".

  • Thêm BA thư mục sau:

    • "$ (OPENCV_DIR) \ include"

    • "$ (OPENCV_DIR) \ include \ opencv"

    • "$ (OPENCV_DIR) \ include \ opencv2 "

  • Từ le ft cột, đi đến "Linker" -> "General" và trong hộp danh sách bên phải, chọn "Thư viện Thư viện bổ sung" và nhấp vào "Chỉnh sửa".

  • Thêm thư mục sau:

    • "$ (OPENCV_DIR) \ x86 \ VC10 \ lib"
  • Từ cột bên trái, đi đến "Linker" -> "đầu vào" và trong hộp danh sách ở bên phải, chọn "Phụ thuộc bổ sung" và nhấp vào "Chỉnh sửa".

  • Thêm các tệp .lib sau vào depedencies. Bạn có thể làm điều này bằng cách sao chép và dán chúng vào hộp chỉnh sửa đó. Tôi có cố ý không bao gồm một dấu đầu dòng để làm cho nó dễ dàng cho bạn để sao chép dán này.

    opencv_core245d.lib opencv_imgproc245d.lib opencv_highgui245d.lib opencv_ml245d.lib opencv_video245d.lib opencv_features2d245d.lib opencv_calib3d245d.lib opencv_objdetect245d.lib opencv_contrib245d.lib opencv_legacy245d.lib opencv_flann245d.lib

GHI CHÚ: Nếu xây dựng để giải phóng, các bước này giống nhau. Tuy nhiên, khi sao chép và dán các tệp này, hãy xóa 'd' ở cuối mỗi tệp. Chữ 'd' biểu thị rằng nó là một thư viện phát hành và các liên kết đến một bản phát hành .dll.

  • Xin chúc mừng! Phần khó khăn gần như đã hoàn tất! Nhấp vào "OK" để đóng cửa sổ.

Tạo và Xây dựng một dự án thử nghiệm

  • Head qua Solution Explorer của chúng tôi. Điều này có thể được tập trung từ thanh công cụ thông qua "Chế độ xem" -> "Giải pháp Explorer"

  • Nhấp chuột phải vào "Tệp nguồn" và chọn "Thêm" -> "Mục mới".

  • Chọn "Tệp C++ (.cpp)" và đặt tên tệp là "main.cpp". Nhấp vào "Thêm".

  • Sao chép và dán chương trình sau đây và nhấn "F7" trên bàn phím của bạn và xem góc dưới cùng bên trái của màn hình để xem bạn có nhận được thông báo "Xây dựng thành công" hay không. Nếu vậy, chỉ còn một bước trước khi bạn biên dịch và chạy! Nếu không, vui lòng truy xuất lại các bước của bạn hoặc nhận xét bên dưới và có thể tôi có thể trợ giúp.

 
    #include &ltopencv\cv.h> 
    #include &ltopencv\highgui.h> 

    int main(int argc, char* argv) 
    { // openCV .image object 
     cv::Mat inputImage; 

     //Create a Window 
     cv::namedWindow("window",1); 

     // Initialize our image. 
     inputImage = cv::imread("Lenna.png"); 

     // Always check to make sure that image has data. 
     if(inputImage.empty()) 
     { 
      std::cout << "Image Failed to Load."; 
      return -1; 
     } 
     else 
     { 
      // All is well, display me. 
      cv::imshow("window",inputImage); 

      // Wait for user to press a key to exit. 
      cvWaitKey(0); 
     } 

     return 0; 
    } 
  • Nếu việc xây dựng thành công, sau đó tất cả những gì còn lại là để thêm hình ảnh vào thư mục của bạn. Vị trí là rất quan trọng. Tôi đã sao chép directoy mà tôi đã đặt tôi vào. Theo cùng một mẫu thư mục.

    • "C: \ Users \ Josh \ Documents \ Visual Studio 2012 \ Projects \ ConsoleApplication3 \ ConsoleApplication3 \ Lenna.png"
  • Bây giờ nhấn "Ctrl + F5" Xây dựng, biên dịch, và chạy để quan sát hình ảnh của bạn trong cửa sổ !!

* NẾU BẠN CÓ WEBCAM *

  • Sao chép và dán đoạn mã sau để kiểm tra xem OpenCV đang làm việc mà không bị cần thiết để thêm một hình ảnh. Điều này rất hữu ích vì nếu mã trên không hoạt động, nhưng mã này có, thì bạn biết bạn đã đặt hình ảnh vào thư mục sai.
 
    #include 
    #include 

    int main(int argc, char* argv) 
    { // openCV .image object 
     cv::Mat image; 

     //Create a Window 
     cv::namedWindow("window",1); 

     // Create the capture object. 
     cv::VideoCapture device; 

     // Open your webcam. 
     device.open(0); 

     while (1) 
     { 
      // Read data from your device and store it to the image frame. 
      device >> image; 

      // Always check to make sure that image has data. 
      if(image.empty()) 
      { 
       std::cout<< "Image Failed to Load."; 
       return -1; 
      } 
      else 
      { 
       // All is well, display me. 
       cv::imshow("window",image); 

       // Wait for user to press a key to exit. 
       cvWaitKey(33); 
      } 
     } 

     return 0; 
    } 

Happy Coding !! Hãy cho tôi biết nếu một cái gì đó không hoạt động để tôi có thể sửa nó!

+0

nhờ Josh Sanders và YankeeWhiskey. Tôi đang sử dụng opencv, biên dịch nó mà không có TBB, openni –

+0

Không sao cả! Bạn có thể vui lòng chọn một trong các câu trả lời này làm câu trả lời được chấp nhận không? –

0

Tôi đã cài đặt lại opencv-master, opencv-2.4.5 và opencv-2.4.7 cho cả máy tính xách tay mới của mình. OpenCV-2.4.7 của hàm đọc được trả về luôn null nhưng C-cvImageLoad làm việc tốt và opencv-master's cvLoadImage không làm việc cvImageLoad hoặc tôi đã bỏ sót một cái gì đó. Nhưng TBB của dir phải được .../bin/ia32 không intel64 hệ điều hành của tôi là 64-bit nhưng VS201x 32-bit này là lỗi của tôi.Và tôi đã gặp lỗi và lỗi gpu và studio trực quan đang nói về lỗi và đây thường là lỗi giới hạn cấp phát bộ nhớ và tôi đã làm những việc tương tự như @dilgenter đã nói của bạn và giờ nó hoạt động tốt nhưng chỉ 2.4.5 và python_d. lib lỗi có thể xảy ra đây không phải là một vấn đề ở chế độ gỡ lỗi tôi đã đọc về điều này từ rất nhiều trang web diễn đàn. Tôi sẽ cố gắng tìm lý do tại sao 2.4.7 của imread trả về null Mat yếu tố. Nhưng bây giờ tôi quá bận và đây là

Các vấn đề liên quan