[Qt] QCheckBox 만들기

이번 글에서는 체크 박스를 만들어 보겠습니다.이번에는 새로운 프로젝트를 생성할 때 Form 파일을 만들어 보겠습니다. 우선 프로젝트를 생성합니다. 위 순서대로 프로젝트를 생성하면서 Generate form 체크 박스엔 체크를 해서 생성합니다. Generate form에 체크를 하면 위와 같이 Form 폴더 하위에 .ui파일이 생성된 것을 볼 수 있습니다. .ui파일을 더블클릭 하면 위와 같이 폼 파일을 수정할 수 있는 화면을 볼 … Read more

Categories Qt Tags

[Qt] QPushButton, QLabel

이번 글에서는 Widget에 QPushButton과 QLabel을 만들어 보도록 하겠습니다.QPushButton은 화면에서 버튼을 그리며 QLabel은 텍스트를 표시하기 위해 사용됩니다. 우선 아래와 순서에 맞춰 Widget을 생성해줍니다. QPushButton 만들기 우선 QPushButton 부터 만들어 보겠습니다. widget.h에 아래와 같이 코딩합니다. widget.cpp에 아래와 같이 코딩합니다. 여기까지 정상적으로 작성하셨으면 아래와 같이 실행됩니다. 하지만 버튼을 눌러도 아무런 표시를 하지 않습니다. QLabel 클래스를 사용하여 표시를 해보겠습니다. … Read more

Categories Qt Tags

[Qt] Signal & Slot

Signal과 Slot은 객체(Object)들간의 통신을 하기 위해 사용됩니다. Signal & Slot 메커니즘은 Qt에서만 사용할 수 있는 대표적인 기능이고, 익혀두면 Qt 어플리케이션을 개발할 때 매우 유용하게 사용할 수 있습니다. Signal은 말 그대로 신호를 발생 시키는 것을 의미하며 Slot은 발생한 신호를 받아들이는 것을 의미합니다.예를 들어 리모컨에서 전원 버튼을 눌러 발생되는 신호(Signal)를, TV 수신 안테나(Slot)가 신호를 수신하여 화면을 켜는 … Read more

Categories Qt Tags

[Qt] Hello World 출력하기

이번 글에서는 설치한 Qt Creator로 Hello World를 출력해보겠습니다.(Qt Creator 설치 글) Qt Creator를 실행해서 Create Project를 선택합니다. 그 다음으로 Qt Console Application을 선택한 뒤 Choose 버튼을 눌러줍니다. Name 옆에 프로젝트 이름을 적당히 지어주시고 Creat in 에 프로젝트가 위치할 경로를 입력합니다. Build system은 qmake 그대로 해둡니다. Language는 다국어를 할 때 사용하는 부분입니다. 현재는 None으로 선택한 상태로 … Read more

Categories Qt Tags

[Qt] Qt Creator 설치

이번 글에서는 윈도우 환경에서 Qt를 설치하는 방법에 대해 알아보겠습니다.배울 기회가 생겨 시간을 내며 정리하고 있습니다. 틀린 점이 있다면 알려주시면 감사하겠습니다. 여기를 클릭하여 위 다운로드 페이지로 이동합니다. 그리고 qt-unified-windows-x64-online.exe 파일을 다운로드합니다.윈도우 설치 파일 뿐만 아니라 맥, 리눅스 설치 파일도 있으니 참고하시길 바랍니다. 위와 같이 파일 다운로드가 완료되면 더블 클릭하여 설치 파일을 실행합니다. 설치 파일을 실행하면 맨 … Read more

Categories Qt

[OpenCV] FAST 코너 검출

이번 글에서는 FAST 코너 검출에 대해 알아보겠습니다. 이전 글에서 배운 해리스 코너 검출 이후로 몇몇 코너 검출 방법이 생겨났습니다. 하지만 이러한 검출 방법은 연산 속도가 느리다는 단점이 있습니다. FAST 코너 검출은 이러한 코너 검출보다 빠른 장점이 있습니다. 방법 FAST 코너 검출은 점 p를 둘러싸고 있는 1번부터 16번까지의 픽셀의 밝기를 비교합니다. 점 p가 코너인지 아닌지를 판단하는 … Read more

[OpenCV] 해리스(Harris) 코너 검출

이번 글에서는 코너 검출에 대한 개념과 대해 알아보겠습니다. 특징 – feature 우선 영상에서 특징에 대해 알아보겠습니다. 특징(feature)은 영상에서 검출할 수 있는 유용한 정보를 말합니다. 유용한 정보라는 것은 예를들어 코너, 히스토그램, 에지, 직선 등등이 있습니다. 코너의 특징은 에지의 방향이 급격하게 변하는 부분으로 사각형에서 꼭지점, 바늘의 끝 부분 등 뾰족하게 튀어나온 부분을 의미합니다. 예를들어 아래 그림에서 빨간 부분이 … Read more

[OpenCV] HOG 알고리즘 – 보행자 검출

이번 글에서는 HOG(Histograms of Oriented Gradients) 알고리즘에 대해 알아보겠습니다. HOG 알고리즘은 2005년에 N. Dalal과 B. Triggs가 발표한 알고리즘 입니다. HOG는 그래디언트 방향 히스토그램을 의미합니다. HOG 알고리즘은 다음 작동 방식을 가집니다. 1. 영상에서 64 X 128 크기 영상을 추출하여 계산합니다. 2. 그 다음 그래디언트를 계산하여 방향을 0 ~ 180도로 설정합니다. 예를 들어 소벨 연산을 한 뒤 cartToPolar 함수를 통해 그래디언트 … Read more

[OpenCV] QR Code generator로 QR 코드 만들고 Mat으로 변환하기

이번 글에서는 QR코드를 만드는 방법에 대해 알아보겠습니다. QR코드 생성과 관련해서는 여러 라이브러리가 있지만 이 글에서는 QR Code generator를 사용하겠습니다.여기에서 파일을 다운 받아 줍니다 cpp 폴더에 파일명이 qrcodegen인 hpp와 cpp파일을 프로젝트에 복사해 추가해줍니다. QR Code generator를 사용하기 위해 코드에 qrcodegen.hpp을 include 해줍니다. 라이브러리에서 제공해주는 QR Code 클래스 명칭은 QrCode 입니다. QrCode 클래스의 encodeText 멤버 함수를 사용하면 쉽게 QR코드를 생성할 수 있습니다. 첫번째 인자는 QR코드에 들어갈 텍스트, 두번째 인자는 오류복원 레벨입니다.참고로 오류복원 레벨은 QR Code 이미지가 훼손되더라도 데이터를 복구 할 수 있는 기능을 말하며, 레벨을 높이면 코드의 크기가 커집니다. 어쨌든 encodeText 함수를 수행하며 QrCode 객체를 반환받았습니다.이 QrCode 객체를 Mat 객체로로 변환하기 위해서 MakeQrCodeMat 함수를 선언해줍니다. 첫번째 인자는 입력 QrCode 객체, 두번째 인자는 테두리 입니다.QR Code 이미지에 테두리를 넣으려면 iBorder에 값을 입력하면 됩니다. … Read more

[OpenCV] QR Code 인식하기

이번 글에서는 OpenCV를 통하여 QR 코드를 인식하는 법에 대해 알아보겠습니다. QR코드는 아래와 같은 예시 이미지를 말하며, DENSO WAVE가 개발한 고속 판독용 매트릭스 2차원 코드입니다. 좌측, 우측 상단, 좌측 하단의 정사각형 패턴으로 QR 코드 영상이라고 판단 하며, QR 코드는 최소 21×21, 최대 177×177 심볼 크기를 가지며, 최대 크기의 QR코드는 7089개의 숫자 또는 4269개의 영숫자를 담고있습니다. QR코드는 이러한 특성으로 지정된 링크나 앱에 … Read more