🔥 Programming

    [C/C++] C++ 배열 초기화 (std::fill_n, std::fill, memset)

    C++ 배열 초기화 보통 C++로 코딩을 하거나, C#으로 코딩을 할때 각각 vector와 List를 많이 사용하지만, 자료구조 문제를 풀때는 고정된 크기만큼 할당을 해야하는 조건이 붙는 경우가 많다. ex) 조건 1. 배열의 크기는 1000보다 작아야한다. 위와 같은식으로 조건이 붙는다. 하지만 간단한 배열은 초기화를 해주면 되지만, 배열의 크기가 클 경우에는 일일히 초기화가 아니라 간단히 초기화 해줄 수 있는 방법이 C++에서 제공된다. std:fill 해당 함수의 매개변수는 아래와 같다. void fill(const _FwdIt _First, const _FwdIt _Last, const _Ty& _Val) 첫 인자인 first 부터 last까지 마지막 Type val로 채운다는 뜻이다. 해당 fi..

    [C#] 인터페이스 (Interface)

    [C#] 인터페이스 (Interface)

    인터페이스란? 구현없이 메서드만 선언된 클래스 문법과 유사하다. 실제로 추상메소드만 0개 이상 담고있는 추상 클래스로 봐도 무방하다. 하지만 인터페이스를 쓰는 이유는 인터페이스는 다중상속이 가능하기때문이다. - 인터페이스는 실무에서 아주 많이 사용되는 기능중 하나입니다. 만약 자동차 주행 S/W를 만드는 프로젝트에서, 여러 모터를 제어하는 기능을 만든다고 가정했을때, 해당 모터의 업체에 따라 제공해주는 라이브러리도 달라지게됩니다. 하지만 인터페이스를 이용하여, 하나의 메소드로 여러 라이브러리를 제어하는 것이 가능합니다. 아래 이미지가 가장 제가 말씀드리는것과 유사하네요. 예시 using System; using System.Collections.Generic; using System.Linq; using..

    [OpenCV4] C# OpenCV4 WebCam 사용하기

    [OpenCV4] C# OpenCV4 WebCam 사용하기

    C# OpenCV4 Webcam 사용하기 OpenCv4를 사용하기에, 기본적으로 OpenCV4 Nuget 추가를 해주셔야합니다. Code using OpenCvSharp; using OpenCvSharp.Extensions; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using Point = OpenCvSharp.Point; n..

    [OpenCV4] C# OpenCV4 Gamma

    [OpenCV4] C# OpenCV4 Gamma

    C# OpenCV4 Gamma를 조정한 이미지 프로세싱 배경 이미지 무료로 제공하는 배경 이미지를 Gamma를 조정하여 변경해보도록 하겠습니다. Code using OpenCvSharp; using OpenCvSharp.Extensions; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Gamma { public partial class Form1 : Fo..

    [C/C++] C++  ios_base::sync_with_stdio(false), cin.tie(0)

    [C/C++] C++ ios_base::sync_with_stdio(false), cin.tie(0)

    ios_base::sync_with_stdio(false), cin.tie(0) 위의 두 구문을 사용하게 되면 연산속도가 빨라진다는 것은 다들 알고 계실겁니다. sync_with_stdio sync_with_stdio는 C++ 표준 스트림들이 C 표준 스트림들과 입출력 연산 후 동기화 할지 여부를 정해주는 것입니다. 예를들면 C++의 경우, std::cin, std::cout, std::cerr 등이 있고, C의 경우, stdin, stdout, stderr이 있습니다. 즉 동기화된 C++ 스트림이 버퍼링 되지않고 C++ 스트림에 각 I/O 작업이 해당 C 스트림 버퍼에 즉시 적용됩니다. 해당 ios_base::sync_with_stdio(false) 구문을 사용 하지 않을 경우, C++ 과 C의 버퍼를..

    [OpenCV4] C# OpenCV4 Houghline (직선검출)

    [OpenCV4] C# OpenCV4 Houghline (직선검출)

    C# OpenCV4 직선 검출 직선에 대한 방정식은 우리가 흔히 알고 있는 기울기(a)와 y절편(b)로 표현되는 𝑦=a𝑥+b도 있지만 삼각함수에 의한 매개변수 방정식으로써는 r = 𝑥cos𝜃 + 𝑦sin𝜃 로도 표현됩니다. 선형 Hough 변환의 최종 결과는 누산기와 유사한 2차원 배열(행렬)입니다. 이 행렬의 한 차원은 양자화된 각도 θ 이고 다른 차원은 양자화된 거리 r 입니다. 행렬의 각 요소는 양자화된 매개변수( r , θ ) 로 표시되는 선에 위치한 점 또는 픽셀의 합과 같은 값을 갖습니다 . 따라서 값이 가장 높은 요소는 입력 이미지에서 가장 많이 표현되는 직선을 나타냅니다. C#으로 구현한 Code를 확인해보겠습니다. Houghline (허프변환) 왼쪽 - Hough line, 오른쪽 - I..

    [OpenCV4] C# OpenCV4 두 이미지 합치기

    [OpenCV4] C# OpenCV4 두 이미지 합치기

    C# OpenCV4 비트 연산(Bitwise)와 Add()를 이용한 두 이미지 합치기 배경 이미지 합칠 이미지 합친 후 Split한 B,G,R Test 이미지들 해당 이미지는 Code를 참고하시면 됩니다. Code using OpenCvSharp; using OpenCvSharp.Extensions; using System.Windows.Forms; namespace OpenCV4_Processing { public partial class Form1 : Form { Mat _chuckImg, _stageImg; Mat logo_mask; Mat _stageImg_cut; Mat Img1; Mat Img2; Mat temp; Mat[] Split; public Form1() { InitializeComp..