본문 바로가기

분류 전체보기465

[OpenCV] 카메라 & 동영상 파일 처리하기 References https://github.com/opencv/opencv https://docs.opencv.org/ OpenCV 4로 배우는 컴퓨터 비전과 머신러닝 Contents VideoCapture 클래스 (카메라 장치 또는 비디오 파일 사용하는 방법) 카메라 입력 처리하는 방법 동영상 파일 처리하는 방법 동영상 파일 저장하기 (VideoWriter 클래스) 이번 포스팅에서는 컴퓨터에 연결되어 있는 카메라를 다루는 방법과 동영상 파일의 입출력 방법에 대해 살펴보도록 하겠습니다. VideoCapture 클래스 OpenCV에서는 VideoCapture라는 하나의 클래스를 이용하여 카메라 또는 동영상 파일로부터 영상의 프레임을 받아올 수 있습니다. 간략하게 나타낸 VideoCapture 클래스 정.. 2022. 5. 3.
[OpenCV] Vec, Scalar, InputArray/OutputArray References https://github.com/opencv/opencv https://docs.opencv.org/ OpenCV 4로 배우는 컴퓨터 비전과 머신러닝 Contents Vec 클래스 Scalar 클래스 InputArray와 OutputArray 클래스 [OpenCV] Mat 클래스 지난 포스팅에 이어서 OpenCV에서 자주 사용되는 몇 가지 클래스들에 대해서 살펴보도록 하겠습니다. Vec 클래스 하나의 행이나 하나의 열로만 구성된 행렬을 행 벡터/열 벡터라고 부릅니다. 그리고, 행 벡터/열 벡터를 합쳐서 벡터 또는 벡터 행렬이라고 부릅니다. 즉, 벡터는 같은 자료형을 가진 원소 몇 개로 구성된 데이터 형식이라고 볼 수 있습니다. OpenCV에서는 이러한 벡터 데이터를 표현할 수 있는 .. 2022. 5. 3.
[OpenCV] Mat 클래스 References https://github.com/opencv/opencv https://docs.opencv.org/ OpenCV 4로 배우는 컴퓨터 비전과 머신러닝 Contents Mat 생성 및 초기화 Mat 복사 부분 행렬 추출 행렬 원소 값 참조 행렬 정보 참조 행렬 연산 행렬 크기 및 타입 변환 OpenCV에서 가장 많이 사용하는 클래스 중 하나가 행렬을 표현하는 Mat 클래스입니다. 이번 포스팅에서는 Mat 클래스를 이용하여 행렬을 생성하는 기본적인 방법과 행렬의 복사 등에 관련된 내용들에 대해 살펴보겠습니다. 또한 Mat 클래스에 저장된 행렬의 원소(또는 이미지 픽셀값)에 접근하는 방법과 일반적인 행렬 연산 방법도 살펴보겠습니다. Mat 클래스 기본 Mat 클래스는 일반적인 2차원 행렬.. 2022. 5. 2.
[OpenCV] 기본 자료형 클래스 References https://github.com/opencv/opencv https://docs.opencv.org/ OpenCV 4로 배우는 컴퓨터 비전과 머신러닝 Contents Point_, Size_ Rect_, RotateRect Range String OpenCV에서는 컴퓨터 비전 프로그래밍에서 자주 사용되는 다양한 클래스 타입을 지원합니다. 이번 포스팅에서는 유용하게 사용되는 OpenCV 기본 클래스를 살펴보겠습니다. Point_ 가장 먼저 살펴볼 클래스는 Point_ 클래스입니다. 이 클래는 2차원 평면 위에 있는 점의 좌표를 표현하는 템플릿 클래스입니다. 클래스 내에는 2차원 좌표를 나타내는 x와 y라는 이름의 멤버 변수가 있으며, 클래스 정의는 다음과 같습니다. (types.hpp.. 2022. 5. 1.
[OpenCV] OpenCV 4 설치 (설치 파일 사용) References https://github.com/opencv/opencv https://docs.opencv.org/ OpenCV 4로 배우는 컴퓨터 비전과 머신러닝 Contents OpenCV 모듈 OpenCV 설치 OpenCV 프로젝트 생성 튜토리얼 코드 OpenCV 4.0 OpenCV는 오픈 소스로 개발되고 있는 컴퓨터 비전 및 머신러닝 라이브러리이며, Open Source Computer Vision의 약자입니다. 2500개가 넘는 컴퓨터 비전과 머신러닝 알고리즘을 포함하고 있는데, 기본적인 영상 파일 입출력, 화실 향상, 객체 검출 및 인식, 추적 등 기능을 제공합니다. 또한, kNN(k-Nearest Neighbor) 알고리즘 서포트 벡터 머신(SVM)도 제공합니다. 최근에는 딥러닝을 위.. 2022. 4. 30.
2-SAT References Algorithms (Sanjoy Dasgupta) Contents Backtracking 2-SAT를 그래프 문제로 변환 백준 11277번, 11278번, 11280번, 11281번 이번 포스팅에서는 아래의 포스팅에서 언급했었던 2-SAT 문제에 대해서 살펴볼 예정입니다. NP-Complete Problems (1) NP-Complete Problems (2) 포스팅에서 2-SAT를 그래프로 변환한 다음 SCC를 찾음으로써 다항 시간에 해결할 수 있다고 했습니다. 하지만, 그 전에 먼저 백트래킹 기법을 이용하여 SAT 문제를 푸는 방법에 대해서 살펴보겠습니다. Backtracking 백트래킹은 해의 일부분만을 보고 이 해가 답이 될 수 없다는 것을 판단할 수 있는 경우가 많다는 관찰.. 2022. 4. 28.
NP-Complete Problems (2) Reference Algorithms (Sanjoy Dasgupta) Contents The reductions (치환) NP-Complete Problems (1) 이전 포스팅에 이어서 계속 진행해보도록 하겠습니다. 열심히 공부해봤으나... ㅠ 부족한 머리로 아직 완전히 이해를 하진 못해서 설명에 부족한 부분이 많습니다. 이점 유의하시고... 혹시 덧붙이고 싶은 내용이나 정정해야할 부분이 있다면 언제든지 댓글로 남겨주세요 ! The Reductions 이전 포스팅에서 다루었던 문제들이 위의 그림처럼 서로 치환될 수 있음을 살펴볼 예정입니다. 결과적으로 이들은 모두 NP-Complete 입니다. 위 그림에서의 치환들을 살펴보기 전에 먼저 두 가지 버전의 루드라타 문제들을 서로 연관지어 보도록 하겠습니다... 2022. 4. 25.
[C++] std::string 최적화 References Optimized C++ Contents 문자열(std::string) 최적화 방법 C++의 std::string은 C++ 표준 라이브러리에서 많이 사용하는 기능 중 하나이며, 구글의 크로미움 개발자 포럼에 의하여 std::string은 크로미움의 메모리 관리자를 호출하는 모든 코드 중 절반이나 차지한다고 합니다. 문자열을 조작하는 코드는 자주 실행되기 때문에 최적화한다면 최고의 효과를 낼 수 있습니다. Why Strings Are a Problem 문자열은 개념적으로는 단순하지만, 효율적으로 구현하기에는 약간 미묘한 부분이 있습니다. std::string의 기능 중 몇 가지 잘못 조합하면 비효율적인 방법으로 동작합니다. 아마 최신의 컴파일러에서는 이러한 부분들이 많이 개선된 것으로 .. 2022. 4. 24.
NP-Complete Problems (1) References Algorithms (Sanjoy Dasgupta) Contents Search Problems NP-Complete Problems Search Problems 현재 참고 중인 교재(Algorithms)에서 그래프에서의 최단 경로, 최소 신장 트리, 이분 매칭, 최장 증가 부분 수열, 네트워크 플로우 등의 알고리즘에 대해 살펴봤었습니다. 이러한 알고리즘들은 실행 시간이 입력 데이터 크기에 대한 다항식(ex, \(n, n^2, n^3\))이었으며, 따라서 효율적인 알고리즘이라 할 수 있습니다. 이와 같은 알고리즘을 좀 더 이해하기 위해 알고리즘이 해결하려는 문제를 다른 방법으로 접근해보겠습니다. 이 문제들에서 가능한 솔루션(path, tree, matching)의 수는 모두 지수승으로.. 2022. 4. 23.
강한 연결 요소 (Strongly Connected Component) References Algorithm (Sanjoy Dasgupta) Contents SCC (Strongly Connected Component) 백준 2150 : Strongly Connected Component 코사라주 알고리즘 (Kosaraju Algorithm) Connectivity for directed graphs 무향 그래프(undirected graph)에서 연결성(connectivity)는 꽤 명확합니다. 연결이 안된 그래프는 자연스럽게 여러 연결된 요소들로 분리될 수 있습니다. 무향 그래프는 만일 정점들의 임의의 쌍 사이에 경로가 있다면 연결되었다고 할 수 있습니다. 위 이미지에서 (a) 그래프는 전부 연결되지는 않았습니다. 따라서 아래의 세 집합에 대응되는 3가지의 다른 연결된 .. 2022. 4. 22.