전체 글 113

프로그래머스 최댓값과 최솟값 - 12939

https://school.programmers.co.kr/learn/courses/30/lessons/12939 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   내코드#include #include #include #include using namespace std;string solution(string s) { string answer = ""; vector str = {}; int cul=0; for (int i = 0 ; i    지피티 코드작성하신 코드는 주어진 문자열에서 공백을 기준으로 숫자를 분리한 뒤, 최소값과 최대값을 구하는 작업을 잘 수행하고 있습니다. 하지만..

프로그래머스 지폐접기 - 340199

https://school.programmers.co.kr/learn/courses/30/lessons/340199 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 내코드#include #include #include using namespace std;int solution(vector wallet, vector bill) { int answer = 0; int bill_min, bill_max, w_min, w_max; if (wallet[0] > wallet[1]){ w_max = wallet[0]; w_min = wallet[1]; } else { ..

이미지 밝기 조절 : Histogram, calcHist 이용 (1)

히스토그램 개념(1) 히스토그램?이미지의 픽셀 값이 어떻게 분포돼 있는지 나타내는 그래프가로축 : 픽셀값 (밝기 수준, 0 ~ 255)세로축 : 해당 픽셀값을 가진 픽셀의 개수(2) 히스토그램의 특징밝기 분포를 분석할 수 있음이미지가 어두운지, 밝은지, 혹은 대비(contrast)가 낮은지 쉽게 파악 가능예:어두운 이미지: 픽셀 값이 0에 몰려 있음밝은 이미지: 픽셀 값이 255에 몰려 있음대비가 낮은 이미지: 픽셀 값이 특정 영역에만 분포 OpenCV에서 히스토그램 계산: openCV에서 cv::calcHist를 사용해 히스토그램 계산 함수 정의cv::calcHist(const Mat* images, int nimages, const int* channels, InputArray ..

비디오 코덱 2024.11.28

이미지 밝기 조절하기 : grayscale 직접 연산

영상 처리 시 흑백 이미지를 많이 이용한다.흑백 이미지의 밝기를 조절하는 가장 쉬운 방법을 학습했다. 개념 (1) Grayscale 이미지Grayscale 이미지 - 각 픽셀이 밝기 값을 나타내는 1 채널 이미지픽셀 값 범위 :8비트 이미지 : 0 (검은색) ~ 255 (흰색)범위 내의 값이 높을수록 밝음 (2) 밝기 조절 방식픽셀 값에 일정한 값을 더하거나 뺌 :밝기 증가: {new_pixel} =  {old_pixel} +  {adjustment}밝기 감소:  {new_pixel} =  {old_pixel} -  {adjustment}결과 값은 반드시 0~255 사이로 클리핑(잘라내기)해야 함픽셀 값을 곱하거나 나눔 : 곱셈을 통해 밝기를 조절하면 더 자연스러운 결과를 얻을 수 있음밝기 증가: {ne..

비디오 코덱 2024.11.28

waitKey(30) >= 0 알아보기

지피티 답변 좋은 질문입니다! OpenCV에서 cv::waitKey 함수의 30과 >= 0의 의미를 설명하겠습니다.cv::waitKey(30)의 의미cv::waitKey() 함수는 OpenCV에서 다음과 같은 역할을 합니다:키 입력 대기 시간:함수의 매개변수는 밀리초 단위로 키 입력을 대기하는 시간을 지정합니다.예: 30이면 30밀리초(0.03초) 동안 키 입력을 기다립니다.프레임 재생 속도 제어:대기 시간은 동영상 재생 속도를 조절하는 데 사용됩니다.일반적으로, 대기 시간은 비디오의 FPS(Frame Per Second, 초당 프레임 수)를 기반으로 계산됩니다:대기 시간(ms)=1000 / FPS(ms) = 1000 / FPS예제FPS가 30인 비디오의 경우:대기 시간(ms)=1000 / 30 ≈ 33..

비디오 코덱 2024.11.27

일반 동영상 불러오기 : VideoCapture()

이번 내용은 이전 글과 비슷하다.달랐던 점은 실시간이 아닌 녹화 영상이기 때문에, 끝이 존재한다는 점이다.따라서 저번 예제 코드에서 끝처리를 위한 코드만 추가해줬다. 일반 녹화 비디오를 불러오기 때문에VideoCapture 변수에 동영상의 경로를 넣어줌 cv::VideoCapture cap("../test.MOV");MOV 영상도 지원함!  - 동영상을 여러개 불러오고 싶은 경우 ==> 변수를 여러게 선언하면 된다고 함! (대신 느려짐)  영상의 끝 처리 if(frame.empty()) { std::cout불러온 프레임이 존재하는지 확인 후 처리 waitKey 함수if (cv::waitKey(30) == 27) break; 녹화된 일반 비디오이므로 재생 속도 조절 값 넣음 예제 코드#inc..

비디오 코덱 2024.11.27

실시간 영상 프레임 읽어오기 : VideoCapture

웹캡을 이용한 실시간 영상 사용하기 VideoCapture: 프에임을 읽어오기 위해서 사용: 비디오 처리의 핵심 역할을 하는 클래스 cv::VideoCapture::VideoCapture '변수이름';cv::VideoCapture::VideoCapture ();cv::VideoCapture::VideoCapture '변수이름'(const std::string& filename);cv::VideoCapture::VideoCapture '변수이름'(int device);매개변수 : 파일 이름 또는 장치 번호장치 번호 (카메라 번호)0 : 내장 웹캠 카메라 번호0 : 데스크탑 같이 usb를 이용해 연결한 웹캡의 카메라 번호1 : 노트북에서 웹캡 추가할 경우변수이름 보통 capture를 줄여 cap으로 사용변수..

비디오 코덱 2024.11.27

흑백 변환 : cvtColor() vs imread()

지피티 답변 cv::cvtColor를 사용해서 흑백으로 변환하는 방법과 cv::imread 함수에서 0을 사용하여 이미지를 흑백으로 불러오는 방법은 결과적으로 눈으로 봤을 때는 동일하게 보일 수 있지만, 작동 방식과 활용 목적에서 차이가 있습니다. 아래에서 두 방법을 비교하겠습니다.1. cv::imread에서 0으로 흑백 불러오기cv::Mat img = cv::imread("image.jpg", 0);작동 방식cv::imread의 두 번째 매개변수로 0을 전달하면 OpenCV는 이미지를 바로 Grayscale로 불러옵니다.이 경우:이미 파일에서 데이터를 읽을 때 이미지를 Grayscale로 변환.메모리에 1채널 Grayscale 데이터로 직접 저장.장점불필요한 컬러 데이터를 메모리에 로드하지 않아 더 빠..

비디오 코덱 2024.11.27

흑백 이미지 처리의 효율

지피티 답변 OpenCV에서 이미지를 흑백(Grayscale)으로 처리하는 것이 좋은 이유는 여러 가지가 있습니다. 특히 이미지 연산을 수행하거나 컴퓨터 비전 작업을 진행할 때 흑백 이미지는 속도와 효율성을 향상시키는 데 기여합니다.1. 데이터 크기 감소컬러 이미지는 일반적으로 3채널(R, G, B)로 구성되며, 각 채널은 8비트(0~255) 데이터를 가집니다.예: 1920x1080 해상도의 이미지 = 1920 X 1080 X 3 = 약 6.2 MB흑백 이미지는 단일 채널로 구성되므로 데이터 크기가 3배 감소합니다.예: (1920 X 1080 X 1 = 약 2.1 MB)OpenCV에서 이미지를 흑백(Grayscale)으로 처리하는 것이 좋은 이유는 여러 가지가 있습니다. 특히 이미지 연산을 수행하거나 컴..

비디오 코덱 2024.11.27

컬러를 흑백으로 변환하기 : cvtColor()

OpenCV에서 이미지 연산 처리 시, 흑백 이미지로 처리가 효율적 => 이 부분은 다음 글에서 다룸! cvtColor(input Array, output Array, flag, channel): 이미지의 색상 공간 변환: RGB 순서가 아닌 BGR 순서임 (이 순서를 바꾸는 flag도 존재)cv::Mat color_img = cv::imread("../test.png");cv::Mat grayscale_img;cv::cvtColor(color_img, grayscale_img, cv::COLOR_BGR2GRAY);input Array : 변환할 원본 이미지, Mat 형식으로 입력output Array : 변환된 결과 이미지를 저장할 출력, Mat 형식으로 반환input과 동일한 크기flag : 변환에 ..

비디오 코덱 2024.11.27