728x90
300x250

[GNU - C, C++] 리눅스(Linux) - 사진 압축 자동화 도구(g++, 쉘(Shell)) (2/2)

 

1부에 이어서 소개하고자 한다.

[GNU - C, C++] 리눅스(Linux) - 사진 압축 자동화 도구(g++, 쉘(Shell)) (1/2), 2021-04-11 21:23
https://yyman.tistory.com/1536

 

4. 소개

아래처럼 작성을 하였다.

 


5. 첨부(Attachment)

 

210411_linux_compress_image_tools.z01
10.00MB
210411_linux_compress_image_tools.z02
10.00MB
210411_linux_compress_image_tools.z03
10.00MB
210411_linux_compress_image_tools.zip
5.55MB

 

[GNU/GPL v3 License를 적용받는다.]

 


6. 맺음글(Conclusion)

Linux(우분투 데스크톱 20.04, 센토스(CentOS))에서 사진 압축을 자동화 도구 프로그램 작성에 대해서 g++ 프로그래밍(C++ Std)으로 소개하였다.

ImageMagicK 라이브러리를 활용하여 자동화 도구를 개발하였다.

 


* 참고자료(Reference)

1. 우분투(Ubuntu / Canonical Ltd), https://ubuntu.com, Accessed by 2021-04-11, Last Modified 2021-04-11.

-> GNU 라이센스를 적용받는다.

2. CentOS(CentOS), https://www.centos.org, Accessed by 2021-04-11, Last Modified 2021-04-11.

-> GNU 라이센스를 적용받는다.

3. ImageMagicK, https://imagemagick.org, Accessed by 2021-04-11, Last Modified 2021-04-11.

-> GNU/GPL v3 License 라이센스를 적용받는다.

4. LaunchPad, https://launchpad.net, Accessed by 2021-04-11, Last Modified 2021-04-11.

반응형
728x90
300x250

[GNU - C, C++] 리눅스(Linux) - 사진 압축 자동화 도구(g++, 쉘(Shell)) (1/2)

 

이번에 소개할 내용은 리눅스에서 g++ 프로그래밍으로 ImageMagicK을 활용하여 사진 압축 자동화 도구에 대해서 소개하고자 한다.

오전에 잠깐 오픈소스 번역 프로젝트(LxQt -> FeatherNotes)에 잠시 참여하였다.

관심을 가져도 될만하다.

This time, I will introduce a photo compression automation tool using ImageMagicK with g++ programming on Linux.

In the morning, I briefly participated in the open source translation project. 
It deserves attention.In the morning, 
I briefly participated in the open source translation project (LxQt -> FeatherNotes).

It deserves attention.

ibeon-e sogaehal naeyong-eun linugseueseo g++ peulogeulaeming-eulo ImageMagicKeul hwal-yonghayeo sajin abchug jadonghwa dogue daehaeseo sogaehagoja handa.

ojeon-e jamkkan opeunsoseu beon-yeog peulojegteu(LxQt -> FeatherNotes)e jamsi cham-yeohayeossda. gwansim-eul gajyeodo doelmanhada.

 

 


1. 안내사항

지구가 현재 많이 아프다고 한다. 꼭 읽어봤으면 한다.
It is said that the earth is very sick now. I hope you read it.

 


2. 소개

아래처럼 작업하였다.

 

 


3. 2부에서 만나요.

[GNU - C, C++] 리눅스(Linux) - 사진 압축 자동화 도구(g++, 쉘(Shell)) (2/2), 2021-04-11 21:43
https://yyman.tistory.com/1537
반응형
728x90
300x250

[컴퓨터(PC활용)] - 전자정부프레임워크(이클립스)에서 C++, PHP, Swing 등 - 기능 추가


이번에 소개할 내용은 전자정부프레임워크(이하 "이클립스")에서 C/C++, PHP, Swing 등을 개발하기 위한 기능을 추가로 설치하는 방법에 대해서 소개하겠다.


About this time I will introduce what you are about to install additional features for developing C / C ++, PHP, Swing, etc. In the framework of e-government (hereinafter referred to as "Eclipse").


[기능 추가(Add function)]

1. C/C++

2. PHP

3. Java - Swing, WindowBuilder



1. 소개(Introduce)


전자정부 프레임워크(이하 "이클립스")로 다양한 프로그래밍 개발이 가능하다.
To e-government framework (the "Eclipse"), it is possible to develop a variety of programming.



그림 1. 전자정부 프레임워크 - Install New Software....



그림 2. 전자정부 프레임워크 - Install New Software....




그림 3. 전자정부 프레임워크 - Install New Software....



그림 4. 전자정부 프레임워크 - Install New Software....



2. 프로젝트 생성(Create Project)


전자정부 이클립스로 프로젝트를 생성하면, 새로운 플러그인들이 추가된 것을 확인할 수 있다.


If you create a project with e-Government Eclipse, you can see that new plugins have been added.



그림 5. 프로젝트 생성 모습




3. 첨부(Attachment)


210103_eGovFramework_Eclipse_c_cpp_php_swing_windowbuilder_guide.zip

[GNU/GPL v3 License를 적용받는다.]




* 맺음글(Conclusion)


전자정부 프레임워크(이하 "이클립스")로 "c/c++", "PHP", "Swing, WindowBuilder" 등 기능 추가하는 방법에 대해 살펴보았다.


In the framework of e-government(Eclipse IDE) looked for ways to add "c / c ++", "PHP", "Swing, WindowBuilder" such functions.



* 참고자료(Reference)



반응형
728x90
300x250
[MFC] 메시지 처리 - Timer(타이머) 만들기

 

Visual Studio 2019(C++.NET MFC 142)에서 Timer(타이머)를 작성해보도록 하겠다.

실시간 타이머는 말 그대로 일정+시간을 의미하는 타이머이다.

일상생활에서 컴퓨터의 "날짜 및 시간"을 보면 확인할 수 있다.

아래의 그림은 정적인 Timer이다.

 

 

이번 예제는 동적인 실시간 타이머를 구현하도록 하겠다.

 

[작성 환경]
Microsoft Visual Studio 2019
Microsoft Windows 10

 


1. 프로젝트 생성하기

 

프로젝트 생성하는 방법은 이전 예제에서도 다루고 있지만, SDI, MDI 등이 있을 수 있어서 표기하고 있다.

 

 

그림 1) 프로젝트 생성하기

 

 

그림 2) 프로젝트 생성하기

 

 

그림 3) 프로젝트 생성하기

 

 

그림 4) 프로젝트 생성하기

 

 

그림 5) 프로젝트 생성하기

 

 

그림 6) 프로젝트 생성하기

 


2. 변수 만들기, 클래스 마법사, 코드 입력하기

 

코드 작성 전략을 소개하면 크게, "변수 만들기"->"클래스 마법사"->"코드 입력하기" 순서로 진행해볼 수 있겠다.

 

 

그림 7) 프로젝트 생성 후 첫 화면

 

 

그림 8) 클래스 뷰에서 "CTimerDigitalView" 오른쪽 버튼 후 추가에서 변수 추가(B)... 클릭하기

 

그림 8처럼 따라서 진행하도록 한다.

 

 

그림 9) 변수 추가의 예(m_bTimerRun)

 

그림 9의 변수는 타이머의 실행 유무를 bool(부울)로 체크하는 함수이다.

 

 

그림 10) 코드 완성의 예

 

정상적으로 변수가 생성되었음을 알 수 있다. 그림 8처럼 그림 11을 다시 따라하도록 한다.

 

 

그림 11) 변수 추가의 예

 

 

그림 12) m_bTimerType 변수 추가 모습

 

그림 12는 m_bTimerType이라는 변수를 추가하고 있는 모습이다. m_bTimerType의 목표는 타이머 출력의 형식을 어떻게 할지 추후에 구현할 때 사용하게 될 것이다. 이 예제에서는 추후 고려에 대해서만 담고 있다.

 

 

그림 13) Timer_DigitalView.cpp 더블 클릭

 

그림 13은 CTimerDigitalView::CTimerDigitalView를 변형한 모습을 담고 있다.

 

// CTimerDigitalView 생성/소멸

CTimerDigitalView::CTimerDigitalView() noexcept
           :m_bTimerRun(false)
           , m_bTimerType(true)
{
           // TODO: 여기에 생성 코드를 추가합니다.

}

 

코드를 입력한다.

 


3. 생성자 만들기

 

Ctrl+Shift+X 단축키를 클릭해서 클래스 마법사를 실행한다.

메시지 탭을 클릭 후, "WM_Create"라고 입력한다.

그리고 "처리기 추가(A)"를 클릭한다.

OnCreate를 선택한 후, "코드 편집(E)"를 클릭한다.

 

 

그림 14) 클래스 마법사 실행하기

 

그림 15처럼 코드를 입력한다.

 

 

그림 15) OnCreate에 코드 작성하기

 

// CTimerDigitalView 메시지 처리기


int CTimerDigitalView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
        if (CView::OnCreate(lpCreateStruct) == -1)
              return -1;

 

        // TODO:  여기에 특수화된 작성 코드를 추가합니다.


        SetTimer(0, 1000, NULL);  // 타이머 설정
        m_bTimerRun = TRUE;    // 타이머 동작

        return 0;
}

 


4. 메시지 출력을 담을 변수 추가하기

 

다음은 메시지 출력을 담을 변수를 추가할 것이다.

CString 자료형으로 메시지 출력을 담을 것이다.

 

CTimerDigitalView를 오른쪽 버튼한 후, "추가", "변수 추가(B)..."를 클릭한다.

 

 

그림 16) 변수 추가의 모습

 

 

그림 17) m_strTimer 변수 추가 모습

 

변수를 추가한 후, 확인을 누른다.

Ctrl+Shift+X키를 눌러서 클래스 마법사를 호출한다.

 

 

그림 18) 클래스 마법사 호출한 모습

 

메시지 탭에서 "WM_TIMER"를 검색한다.

"처리기 추가"를 누른다.

"OnTimer"를 클릭 후 "코드 편집(E)"를 클릭한다.

 

 

그림 19) OnTimer()에 소스코드를 입력한 모습의 예(1)

 

 

그림 20) OnTimer()에 소스코드를 입력한 모습의 예(1)

 

void CTimerDigitalView::OnTimer(UINT_PTR nIDEvent)
{
         // TODO: 여기에 메시지 처리기 코드를 추가 및/또는 기본값을 호출합니다.
         int hour;
         CString str;
         CTime timer;
         timer = CTime::GetTickCount(); // Visual Studio 2017부터 GetCurrentTime() 삭제

 

        if (m_bTimerType) {
             m_strTimer.Format(_T("현재는 %d년 %d월 %d일 %d시 %d분 %d초"),
                   timer.GetYear(), timer.GetMonth(), timer.GetDay(),
                   timer.GetHour(), timer.GetMinute(), timer.GetSecond());


        }

        else {
                  hour = timer.GetHour();

 

                  if (hour >= 12) {
                        str = _T("PM");
   
                       if (hour >= 13) {
                              hour = hour - 12;
                       }

                 }
                 else {
                       str = _T("AM");
                 }

           

                 m_strTimer.Format(_T("지금은 %s %d %d %초"), str, hour,
                 timer.GetMinute(), timer.GetSecond());

       }

     

       Invalidate();

       CView::OnTimer(nIDEvent);
}

 

코드 입력을 마쳤으면, OnDraw를 클릭한다. 코드를 입력해준다.

 

 

그림 21) OnDraw() 함수 원형 내에 코드 입력해주기

 

// CTimerDigitalView 그리기

 

void CTimerDigitalView::OnDraw(CDC* pDC)
{
        CTimerDigitalDoc* pDoc = GetDocument();
        ASSERT_VALID(pDoc);

  

        if (!pDoc)
             return;

 

        // TODO: 여기에 원시 데이터에 대한 그리기 코드를 추가합니다.

 

        CRect rect;
        GetClientRect(&rect);

 

        // 윈도우의 중앙에 타이머를 출력
        pDC->DrawText(m_strTimer, rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER);

}

 

코드 입력을 마쳤다면, Ctrl+Shift+X를 누른다.

 


5. 소멸자 만들기

 

지금 작업은 실시간 타이머를 윈도우 프로그램이 종료할 때, 같이 종료될 수 있도록 지정해주는 기능을 구현하는 것이다.

 

메시지 탭에서 "WM_Destory"를 검색한다.

"처리기 추가(A)"를 클릭한다.

"OnDestory"를 클릭 후 "코드 편집(E)"을 클릭한다.

 

 

그림 22) 창 소멸에 관한 클래스 정의

 

 

 

그림 23) 코드 입력하기

 


6. 시연하기

 

시연하는 것이다.

Ctrl+F5를 눌러서 시연한다.

 

 

그림 25) 시연하기

 

[소스코드]

 

[첨부(Attachment)]

Timer_Digital.7z

 

 


7. 참고자료(Reference)

 

1. CTime::GetCurrentTime intellisense missing - Developer Community, Last Modified , Accessed by 2019-11-30, https://developercommunity.visualstudio.com/content/problem/100004/ctimegetcurrenttime-intellisense-missing.html

 

 

 

2. CTime 클래스 | Microsoft Docs, Last Modified, Accessed by 2019-11-30, https://docs.microsoft.com/ko-kr/cpp/atl-mfc-shared/reference/ctime-class?view=vs-2019#getcurrenttime

 

 

 

 

반응형
728x90
300x250
[MFC] 메시지 처리 - WM_Create, WM_LButtonDBLCLK, AfxMessageBox

 

메시지 처리에 대해서 두 가지 "메시지"를 바탕으로 구현해보도록 하겠다.

WM_Create라는 메시지는 "기존 처리기"에서의 함수 이름으로 OnCreate로 사용되고 있다.

OnCreate란, 윈도우 창이 생성되었을 때, 호출되는 메시지 처리를 말한다.

함수 원형으로 표현했을 때를 말한다.

WM_LButtonDBLCLK라는 메시지는 "기존 처리기"에서의 함수 이름으로 OnLButtonDblClk으로 사용되고 있다.

 

다음은 AfxMessage에 대한 것이다. 말 그대로 메시지 처리에서 상자를 만드는 것이다.

 

 

 

[사용 환경]
Microsoft Visual Studio 2019

Microsoft Windows 10

 


1. 프로젝트 생성하기

 

프로젝트 생성은 아래의 그림 단계처럼 진행할 수 있다.

 

 

그림 1) 프로젝트 생성하기

 

 

그림 2) 프로젝트 생성하기

 

 

 

그림 3) 프로젝트 생성하기

 

 

그림 4) 프로젝트 생성하기

 

 

 

그림 5) 프로젝트 생성하기

 

 

 

그림 6) 프로젝트 생성하기

 


2. 클래스 마법사로 (2가지)기능 생성하기

 

메시지 처리에 관한 기능을 생성할 것이다.

WM_Create와 WM_LButtonDblClick을 생성하여 코드를 입력해주겠다.

 

 

그림 7) 클래스 마법사에서 함수 원형 만들기

 

 

그림 8) 클래스 마법사에서 함수 원형 만들기

 

 

그림 9) 클래스 마법사에서 함수 원형 만들기

 

 

그림 10) 클래스 마법사에서 함수 원형 코드 입력하기

 

 

그림 11) 클래스 마법사에서 함수 원형 만들기

 

AfxMessage(_T("윈도우가 생성되었습니다."), MB_OKCANCEL | MB_ICONINFORMATION );

 

 

그림 11) 클래스 마법사에서 함수 원형 만들기

 

 

그림 12) 클래스 마법사에서 함수 원형에 코드 입력하기

 


3. 시연하기(Practice)

 

코드 입력 등이 완료가 되었다면, "Ctrl + F5키" 또는 "로컬 Windows 디버거"를 클릭하여 시연하면 된다.

 

 

그림 13) 시연하기

 

 

그림 14) 시연하기

 

반응형
728x90
300x250
[MFC] 도큐먼트(폼 뷰) - DDX에 관한 이야기

 

이전의 Visual Studio 2010, Visual Studio 2013, Visual Studio 2015에서는 아래처럼 따라하면, CFormView에서 변수를 생성할 수 있었다.

하지만, 최근 출시된 Visual Studio 2019에서는 달라진 점이 CFormView에서는 그냥 더블클릭 하나면 변수가 생성된다는 점이다.

이전의 주요 기능은 남아있으나 C#으로 진영이 넘어가는 것으로 보인다.

 

태스트 환경:
Microsoft Visual Studio 2019 Community
Microsoft Windows 10

 


1. 프로젝트 생성하기

 

새 프로젝트 만들기->MFC 앱을 클릭한다.

 

 

그림 1) 프로젝트 생성하기 (1단계)

 

 

 

그림 2) 프로젝트 생성하기 (2단계 - 프로젝트 이름 지정)

 

 

 

 

그림 3) 프로젝트 생성하기 (단일 문서)

 

 

그림 4) 프로젝트 생성하기 (단일 문서)

 

파일 확장명을 "txt"라고 입력 후 "다음"을 클릭한다.

 

 

그림 5) Command bar (menu/toolbar/ribbon)에서 메뉴 모음 및 도구 모음 사용을 클릭하기

 

 

그림 6) View 클래스 선택 후, 마침 누르기

 

FormView_ex에서 리소스 파일을 클릭 후 Formview_ex.rc를 더블 클릭한다.

 

 

그림 7) 완성된 프로젝트

 

 

그림 8) 완성된 프로젝트

 


2. CFormView 확인하기

 

초기에 생성된 CFormView의 모습이다.

IDD_FORMVIEW_EX_FORM의 Style은 Child로 지정한다.

 

 

그림 9) IDD_FORMVIEW_EX_FORM 스타일 설정의 예

 

IDD_FORMVIEW_EX_FORM 스타일을 Child가 아닌 Popup으로 변경할 경우, 오류가 발생한다.

 

임시로 Ctrl+F5를 눌러서 잘 동작하는지 확인을 해본다.

 

 

그림 10) 프로젝트가 동작하는 모습의 예

 

 


3. CFormView 꾸미기(실습)

 

FormViewex.rc의 IDD_FORMVIEW_EX_FORM (Dialog)를 아래처럼 컨트롤박스를 배치하여 꾸미도록 한다.

이전 버전(Visual Studio 2010, Visual Studio 2013, 2015, 2017)과 호환이 된다.

 

 

그림 11) 디자인 모습

 

그림 11처럼 도구 상자에 있는 컨트롤을 배치하도록 한다.

 

 

 

그림 12) ID 이름 변경하기

 

 

 

그림 13) IDC_EDIT_BLUE (Edit Control)의 Number 옵션 변경하기

 

그림 13처럼 Number 옵션을 True로 변경하면 항상 숫자만 입력할 수 밖에 없도록 된다.

 

 

 

그림 14) Caption 변경하는 모습

 


4. 충돌 오류 발생 - "변수 추가(B)..."

 

Visual Studio 2017, Visual Studio 2019부터 CFormView에서 변수 추가(B)로 컨트롤에 변수를 주는 것이 금지되었다.

"DoDataExchange 메서드를 업데이트할 수 없습니다."라는 오류를 발생시킨다.

 

 

그림 15) 변수 추가(B)의 모습

 

 

그림 16) 변수명을 이전 스타일(Visual Studio 2015)로 입력하는 모습의 예

 

범주(T)를 "값"으로 설정하고 이전 스타일로 입력을 하였다.

이전 버전에서는 동작할 수도 있겠으나 최신 버전(Visual Studio 2017, 2019)에서는 동작하지 않는다.

 

"DoDataExchanage 메서드를 업데이트할 수 없습니다." 라는 오류를 접하게 된다.

아래의 그림들도 마찬가지이다.

 

 

그림 17) 변수명을 이전 스타일(Visual Studio 2015)로 입력하는 모습의 예

 

 

그림 18) 변수명을 이전 스타일(Visual Studio 2015)로 입력하는 모습의 예

 


5. 다이얼 로그에서만 사용가능

 

마이크로소프트 공식 사이트에서 "대화 상자 작업"이라는 주제에 대해서 찾아보았다.

해당 관련 자료를 찾아볼 수 있었다.

https://docs.microsoft.com/ko-kr/cpp/mfc/life-cycle-of-a-dialog-box?view=vs-2019

https://docs.microsoft.com/ko-kr/cpp/mfc/dialog-data-exchange?view=vs-2019

 

그림 19) MFC 공식 메뉴얼 - 마이크로소프트

 

 

그림 20) 대화 상자 데이터 교환 - 마이크로소프트

원리, 이론적으로는 가능해보이나 Visual Studio 2019부터는 훨씬 엄격해진 것 같다.

 


결론(Conclusion)

 

CFormView에서는 DDX 메커니즘은 동작하지 않는다.

 

[첨부(Attachment)]

FormView_ex1.zip

반응형
728x90
300x250

[MS C++(MFC)] SDI(단일 문서)에서 자녀 다이얼로그(Child dialog in single document interface (SDI)


MFC의 SDI를 다루는 방법 중 자녀 다이얼로그 제어에 대해서 소개합니다.
(This section introduces the child dialog control method of handling MDI's SDI.)

작성 환경은 Visual Studio 2019, Windows 10 1909에서 진행하였습니다.
(The authoring environment was in Visual Studio 2019, Windows 10 1909.)

 


1. MFC 프로젝트 생성하기(Creating an MFC Project)

 

"단일 문서"를 선택하고 아래의 그림처럼 설정합니다.
(Select "Single Document" and set it as shown below.)

 

다음을 누릅니다.(Click Next.)

 

 

다음을 누릅니다.(Click Next.)

 

 

다음을 누릅니다.(Click Next.)

 

 

"체크 박스"를 위의 그림처럼 해줍니다.(Do a "check box" as shown above.)

 

 

마침을 클릭합니다.(Click Finish.)

"로컬 Windows 디버거" 또는 "Ctrl + F5키"를 누르면 아래의 창이 뜹니다.
(Press "Local Windows Debugger" or "Ctrl + F5" to bring up the window below.)

 

 


2. MFCFormView.rc에서 다이얼로그 생성하기(Creating a dialog in MFCFormView.rc)

 

다이얼로그를 하나 생성합니다. (Create one dialog.)

 

 

다이얼 로그를 생성하면 아래의 그림처럼 생성됩니다.(When you create a dial log, it is created as shown below.)

 

 

그리고 다이얼 로그를 오른쪽 버튼 한 후, 클래스 추가를 클릭합니다.
(Then right-click on the dialog and click Add Class.)

 

 

Dlg1으로 해도 상관없지만, 기존 이름에 C만 더 붙여서 CDlg로 클래스 이름을 지정해주는 것도 하나의 방법입니다.
(Dlg1 can be used, but it is also a way to specify the class name as CDlg by adding C to the existing name.)

 

예제에서는 편의상 Dlg1으로 하였습니다.(In this example, we have used Dlg1 for convenience.)

 


3. 메뉴에 다이얼로그 커맨드 기능 추가하기(Adding dialog command functions to the menu)

 

메뉴에 다이얼로그 커맨드 기능을 추가하겠습니다.(We will add a dialog command function to the menu.)

 

 

"예"라는 항목에 ID에 "ID_TOOLS_EX"로 지정하였습니다.(You have assigned "ID_TOOLS_EX" to the ID of "Yes".)

 

 

오른쪽 버튼을 클릭 후 "이벤트 처리기 추가(A)..."를 클릭합니다.
(Right click and click "Add Event Handler ...")

 

 

그림처럼 설정이 되어있을 것입니다. 확인을 클릭합니다. (It will be set as shown. Click OK.)

 


4. 코드 작성(Write the code)

 

코드 작성은 크게 어렵지 않게 진행할 수 있습니다.(Writing code can be very easy.)

 

 

그림에서는 CDlg.h로 되어있는데, 앞에 설명은 Dlg.h로 설명한 것처럼 보일 수 있습니다.

앞에서 지정한 헤더명으로 입력해주시면 됩니다.

Inteligence 기능으로 헤더를 찾아주기 때문에 적절히 잘 지정해주면 될 것 같습니다.

 

(In the figure, it is called CDlg.h, which may look like the one described as Dlg.h.

Enter the header name you specified earlier.

The Inteligence function finds the header, so I think it should be properly specified.)

 

 

 

반응형
728x90
300x250

[C++(OpenCV)] Visual Studio 2019에서 OpenCV 사용하기

안녕하세요. 도도(Dodo)입니다.
이번에 소개할 것은 OpenCV를 Visual Studio 2019버전에서 사용하는 방법에 대해서 소개하려고 합니다.

https://opencv.org 에 접속합니다.
releases에서 사용하는 운영체제에 맞는 버전을 다운로드합니다.

 

다운로드를 기다리도록 합니다.

 

압축된 파일을 해제하면, 용량이 조금 큽니다.

 

아래처럼 압축을 풀어봅니다. 저는 C:\opencv라는 폴더에 압축을 풀었습니다.


Visual Studio 2019를 실행합니다.

Windows 데스크톱 마법사를 선택 후, 다음(N)을 클릭합니다.

프로젝트 명은 저는 "OpenCV_PJT"라고 했는데, 편한 형태로 정하면 됩니다.

콘솔 애플리케이션 형태에서 실험을 진행할 것이기 때문에, "콘솔 애플리케이션(.exe)"를 선택합니다. 그리고 추가 옵션에서 "빈 프로젝트(E)"를 체크합니다. 확인을 클릭합니다.

소스 파일에서 오른쪽 버튼을 클릭하면, 메뉴가 나옵니다. "추가(D)"를 클릭한 후, "새 항목(W)...."을 클릭합니다.

C++ 파일(.cpp)을 클릭한 후에 파일명을 지정해주고 추가(A)를 클릭합니다.

Debug에서 x64로 변경해줍니다.

OpenCV_PJT의 속성을 클릭 후, Alt + Enter를 입력해서 아래의 창을 열게 합니다.

구성(C)를 "모든 구성"으로 변경합니다.

C/C++ 탭에서 추가 포함 디렉터리를 입력해줍니다.
=> C:\opencv\build\include

링커에서 추가 라이브러리 디렉터리 입력란에 아래처럼 입력합니다.
=> c:\opencv\build\x64\vc15\lib

"링커"의 "입력" 탭에서 추가 종속성 항목에 추가입력합니다.
opencv_world410d.lib;


2. 셈플 소스코드

다음은 셈플 소스코드입니다.

 

videocapture_basic.cpp

셈플 코드는 c:\opencv\sources\samples\cpp 폴더에 있습니다.
방금 전 생성한 main.cpp에 videocapture_basic.cpp 소스코드를, 복사 붙여넣기를 하겠습니다.

소스코드 - 붙여넣기한 모습

프로젝트 실행하기

반응형

+ Recent posts