귀찮니스트를 위해 우분투에서 OpenCV를 자동 빌드 및 설치하는 스크립트를 만들었습니다. 매번 제가 빌드하기 귀찮아서요.

https://booiljung.github.io/technical_articles/computer_vision/build_opencv_on_ubuntu_cli_with_script_ko.html

Posted by uniqueone
,

OpenCV 4.2.0이 정식 릴리즈되었습니다. 이번 릴리즈에서 드디어 CUDA를 이용하여 DNN 모듈을 실행할 수 있게 되었네요. 대박입니다!!! 잠깐 살펴보니 ResNet, VGG16 SSD, YOLO v3 등은 약 10배 빨라지네요. 이참에 컴퓨터 포맷하고 CUDA, OpenCV, TensorFlow 등등을 새로 깔끔하게 설치해야겠네요.

OpenCV 4.2.0의 전체 변경 사항은 아래 ChangeLog를 참고하시구요..

[https://github.com/opencv/opencv/wiki/ChangeLog#version420](https://github.com/opencv/opencv/wiki/ChangeLog#version420)

OpenCV 4.2.0 다운로드는 아직 OpenCV 홈페이지에는 게시되지 않았습니다. 대신 OpenCV Github에서 다운받을 수 있습니다.

[https://github.com/opencv/opencv/releases](https://github.com/opencv/opencv/releases)

[https://github.com/opencv/opencv_contrib/releases](https://github.com/opencv/opencv_contrib/releases)

OpenCV에서 CUDA를 사용하려면 소스 코드를 직접 빌드해야 합니다. DNN에서 CUDA 백엔드를 사용하려면 WITH_CUDA, WITH_CUDNN, OPENCV_DNN_CUDA 옵션을 설정해야 합니다. 조만간 직접 빌드를 해보구요, 빌드 방법을 공유해보도록 하겠습니다.

Posted by uniqueone
,
http://stackoverflow.com/questions/31711093/the-program-cant-start-because-opencv-world300-dll-is-missing-from-your-comput

 

 

위 링크의 제일 마지막의 조언처럼 C:\WINDOWS\system32에다가 dll파일들을 복사하니 된다. 이때, visual studio 2015(v14)를 이용하더라도 v12의 dll을 복사하니 되었다.

 

 

 

 

--------------------------------------------------------------------

I want compile an opencv Console C++ program in Visual Studio 2013. This is my code:

#include "stdafx.h"
#include "opencv2/highgui/highgui.hpp"
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, const char** argv)
{
    Mat img = imread("rgb_1.png", CV_LOAD_IMAGE_UNCHANGED); //read the image data in the file "MyPic.JPG" and store it in 'img'

    if (img.empty()) //check whether the image is loaded or not
    {
        cout << "Error : Image cannot be loaded..!!" << endl;
        //system("pause"); //wait for a key press
        return -1;
    }

    namedWindow("MyWindow", CV_WINDOW_AUTOSIZE); //create a window with the name "MyWindow"
    imshow("MyWindow", img); //display the image which is stored in the 'img' in the "MyWindow" window

    waitKey(0); //wait infinite time for a keypress

    destroyWindow("MyWindow"); //destroy the window with the name, "MyWindow"

    return 0;
}

Although I have defined all the directories in properties both in Computer and Visual Studio directories, I get "The program can't start because opencv_world300.dll is missing from your computer."error.

How can I fix this problem?

Thanks

shareimprove this question
1  
If you have the dll in question, the easiest thing to do is copy and paste it into your projects executable output folder – James Pack Jul 29 '15 at 21:08
    
I've noticed this dll is not placed with other dlls. You need to find out the folder in whichopencv_world300.dll is located. That's all. – CroCo Jul 29 '15 at 23:38

Under windows you can copy it from:

<your install directory>\opencv30\build\x64\vc12\bin

And put it in your Visual Studio solution (I assume you are using a x64/Release configuration):

<your solution directory>\x64\Release

Or you you can add the above OpenCV to your PATH environment variable

shareimprove this answer
    
It works and this is great, but I can't figure out why it worked flawlessy before <an unknown action of mine> without the present hack. – Patrizio Bertoni Dec 2 '15 at 14:36

If this question is still relevant, I figured out the way.

I presume you used the tutorial on the OpenCV website to setup OpenCV. Once you run the command prompt and execute the command, it creates the environment variable for OpenCVbut it does not add it in the path. So if you go to the path and add the location of the bin in vc12 (vc14 for me), save it, and restart visual studio, it works.

shareimprove this answer

You can check your system variable to confirm the directory in which opencv_world300.dll is located (maybe C:\opencv\build\x64\vc12\bin) is present.

If it exists but the problem still is not solved, try to put all .dll files in the directory to C:\WINDOWS\system32

Posted by uniqueone
,

http://stackoverflow.com/questions/7970988/print-out-the-values-of-a-mat-matrix-in-opencv-c

 

I want to dump the values of a matrix in OpenCV to the console using cout. I quickly learned that I do not understand OpenvCV's type system nor C++ templates well enough to accomplish this simple task.

Would a reader please post (or point me to) a little function or code snippet that prints a Mat?

Regards, Aaron

PS: Code that uses the newer C++ Mat interface as opposed to the older CvMat interface is preferential.

--------------------------------------

See the first answer to Accesing a matrix element in the "Mat" object (not the CvMat object) in OpenCV C++
Then just loop over all the elements in cout << M.at<double>(0,0); rather than just 0,0

Or better still with the new C++ interface (thanks to SSteve)

cv::Mat M;

cout << "M = "<< endl << " "  << M << endl << endl;

------------------------------

#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>

#include <iostream>
#include <iomanip>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
    double data[4] = {-0.0000000077898273846583732, -0.03749374753019832, -0.0374787251930463, -0.000000000077893623846343843};
    Mat src = Mat(1, 4, CV_64F, &data);
    for(int i=0; i<4; i++)
        cout << setprecision(3) << src.at<double>(0,i) << endl;

    return 0;
}

 

-------------------------------

Posted by uniqueone
,

my example.

img is dlib image variable. img22 is opencv image variable.

 

 

 

cv::Mat img22 = dlib::toMat(img);
 for(int i=0; i<250; i++)
 {
  for(int j=0; j<250; j++)
  {
   mexPrintf("%d ",img22.at<unsigned char>(i,j));
  }
  mexPrintf("\n");
 }

Posted by uniqueone
,

http://kaylab.tistory.com/1

http_kaylab.tistory.com_1.pdf

 

 

위 사이트를 따라하니 오류없이 되었다.

단 main.cpp를 다음과 같이 씀.

 

#include <opencv2/core/mat.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/highgui.hpp>

using namespace cv;
using namespace std;

int main()
{
 return 0;
}

 

또는

#include <opencv2/highgui.hpp>

using namespace cv;

int main()
{
 IplImage* image;
 image = cvLoadImage("Tulips.jpg", 1);

 cvNamedWindow("W_Tulips", 1);
 cvShowImage("W_Tulips", image);

 cvWaitKey(0);
 cvDestroyWindow("W_Tulips");
 return 0;
}

 

 

 

-------------------------

환경: OpenCV 3.1, Visual Studio 2015, 2013

 

※ OpenCV 는 c:\Opencv_3.1 에 설치되어 있는걸로 가정합니다.

 

 

1. 프로젝트에서 마우스 우클릭 -> 속성

 

 

 

2. 구성에서 32bit, x86 관련 설정을 지워야 합니다. 플랫폼 콤보 박스를 선택합니다.

※ OpenCV 3.1 은 32bit dll 이 없습니다. 소스를 가지고 직접 컴파일 하면 가능하다고 알고있는데, 확실하진 않습니다.

 

 

3. 편집 메뉴 클릭

 

 

 

4. x86을 선택하고 제거 버튼을 클릭합니다.

 

 

 

5. [활성 솔루션 플랫폼] 콤보박스 아래 [플랫폼] 콤보박스를 클릭하여 [편집] 메뉴를 클릭합니다.

 

 

 

6. Win32 를 선택 후 제거 버튼을 클릭합니다.

 

 

 

7. 닫기 버튼을 클릭하여 구성관리자를 닫습니다.

 

 

 

7.5. [구성] 콤보 박스를 [모든 구성] 으로 변경합니다.

     Debug 로 둔 채로 수정하면 Release 로 변경 후 한번 더 설정해야 합니다.

 

8. 왼쪽 구성 트리에서 [C/C++] 노드를 선택하고 디렉터리 콤보박스의 편집 메뉴를 클릭합니다.

 

 

 

9. 줄 추가 버튼을 클릭 한 후 새로 생긴 줄(2번) 의 오른쪽 끝 ... 버튼을 클릭합니다.

 

 

 

10. C:\opencv_3.1\build\include 경로를 찾아가 폴더선택 버튼을 클릭합니다.

 

 

 

11. 계속해서 하위 디렉터리인 C:\opencv_3.1\build\include\opencv 와 C:\opencv_3.1\build\include\opencv2 경로를 추가합니다.

 

 

 

12. 왼쪽 트리 메뉴에서 링커 노드를 선택 후 추가 라이브러리 디렉터리 콤보박스에서 편집 메뉴를 클릭합니다.

 

 

 

13. C:\opencv_3.1\build\x64\vc14\lib 경로를 찾아가 폴더 선택 버튼을 클릭합니다.

※ Visual Studio 2013 일 경우 C:\opencv_3.1\build\x64\vc12\lib 경로를 선택합니다.

 

 

 

14. 구성 콤보박스를 Debug 로 변경합니다.

 

 

 

15. 지금까지 설정한 내용을 저장하겠냐고 물어봅니다. 예(Y) 버튼을 클릭합니다.

 

 

 

16. 왼쪽 트리 메뉴에서 입력 노드를 선택 후 추가 종속성 콤보박스를 클릭 후 편집 메뉴를 클릭합니다.

 

 

 

17. opencv_world310d.lib 를 클릭 후 확인 버튼을 클릭합니다. (디버그에 경우에는 이름 마지막에 d가 붙은 lib 를 참조합니다.)

 

 

 

18. 구성 콤보 박스를 Release 로 변경합니다. 위와 같이 저장 하겠냐는 메세지가 나오면 예(Y) 버튼을 클릭합니다.

 

 

 

19. opencv_world310.lib (이번엔 이름 마지막에 d가 없습니다.) 을 입력하고 확인 버튼을 클릭합니다.

 

 

 

20. stdafx.h 헤더에 다음과 같은 구문을 추가합니다.

#include "opencv2\opencv.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"

using namespace cv;
using namespace std;

 

 

 

정상적으로 컴파일이 된다면 구성 완료입니다

Posted by uniqueone
,

http://zacurr.tistory.com/553

 

http_zacurr.tistory.com_553.pdf

 

위 사이트에 나와있는대로 opencv를 cmake로 빌드할때, opencv_contrib도 다운받아서 같이 빌드했다.

아래사이트에도 나옴. 

https://github.com/opencv/opencv_contrib/blob/master/README.md

  1. start cmake-gui

  2. select the opencv source code folder and the folder where binaries will be built (the 2 upper forms of the interface)

  3. press the configure button. you will see all the opencv build parameters in the central interface

  4. browse the parameters and look for the form called OPENCV_EXTRA_MODULES_PATH (use the search form to focus rapidly on it)

  5. complete this OPENCV_EXTRA_MODULES_PATH by the proper pathname to the <opencv_contrib>/modules value using its browse button.

  6. press the configure button followed by the generate button (the first time, you will be asked which makefile style to use)

  7. build the opencv core with the method you chose (make and make install if you chose Unix makfile at step 6)

  8. to run, linker flags to contrib modules will need to be added to use them in your code/IDE. For example to use the aruco module, "-lopencv_aruco" flag will be added.

Posted by uniqueone
,