728x90
cout << "cvRound(2.5) : " << cvRound(2.5) << endl;
cout << "cvRound(2.51) : " << cvRound(2.51) << endl;
cout << "cvRound(3.4999) : " << cvRound(3.4999) << endl;
cout << "cvRound(3.5) : " << cvRound(3.5) << endl;
//cvRound(2.5) : 2
//cvRound(2.51) : 3
//cvRound(3.4999) : 3
//cvRound(3.5) : 4
마스크 연산
setTo() 함수 : 마스트 연산에서 사용하는 함수로 행렬의 픽셀 값을 설정하는 함수
void mask_setTo()
{
Mat src = imread("lenna.bmp", IMREAD_COLOR);
Mat mask = imread("mask_smile.bmp", IMREAD_GRAYSCALE);
if (src.empty() || mask.empty()) {
cerr << "Image load failed!" << endl;
return;
}
imshow("lena", src);
//mask영상에서 픽셀 값이 0이 아닌 위치에서만 scr 영상 픽셀을 노란색으로 설정
src.setTo(Scalar(0, 255, 255), mask);
imshow("src", src);
imshow("mask", mask);
waitKey(0);
destroyAllWindows();
}
마스크 영상에서 흰색으로 표시된 영역에 대해서만 레나 영상 픽셀이 노란색으로 설정되는 것을 확인 할 수 있다.
copyTo() 함수 : 행렬 복사 함수로 두가지 형태로 정의되어 있는데, 하나는 복사할 대상 행렬 하나만 인자로 받고, 다른 하나는 복사할 대상 행렬과 마스크 영상 두개를 인자로 받는다
void mask_copyTo()
{
Mat src = imread("airplane.bmp", IMREAD_COLOR);
Mat mask = imread("mask_plane.bmp", IMREAD_GRAYSCALE);
Mat dst = imread("field.bmp", IMREAD_COLOR);
if (src.empty() || mask.empty() || dst.empty()) {
cerr << "Image load failed!" << endl;
return;
}
imshow("배경", dst);
//mask 영상에서 흰색 영역 위치에서만 scr 영상 픽셀 값을 dst로 복사
src.copyTo(dst, mask);
imshow("src", src);
imshow("dst", dst);
imshow("mask", mask);
waitKey(0);
destroyAllWindows();
}
sum() 함수 : Mat 행렬의 원소 합을 구하는 함수
mean() 함수 : Mat 행렬의 원소 평균을 구하는 함수
lenna 사진이 그레이스케일일때 영상에 대한 모든 픽셀 값의 합과 평균을 구하는 코드이다
Mat img = imread("lenna.bpm", IMREAD_GRAYSCALE);
cout << "Sum : " << (int)sum(img)[0] << endl;
cout << "Mean : " << (int)mean(img)[0] << endl;
//Sum : 32518590
//Mean : 124
minMaxLoc() 함수 : 주어진 행렬의 최댓값, 최솟값을 찾는 함수
double minVal, maxVal;
Point minPos, maxPos;
minMaxLoc(img, &minVal, &maxVal, &minPos, &maxPos);
cout << "minVal : " << minVal << " at " << minPos << endl;
cout << "maxVal : " << maxVal << " at " << maxPos << endl;
//minVal : 25 at [508, 71]
//가장 작은 픽셀은 25이고, 위치는 508, 71에 위치함
//maxVal : 245 at [116, 273]
//가장 큰 픽셀은 245이고, 위치는 116, 273에 위치함
normalize() 함수 : 행렬의 노름 값을 정규화하거나 또는 원소 값 범위를 특정 범위로 정규화 할 때 사용하는 함수
Mat src = Mat_<float>({ 1, 5 }, { -1.f, -0.5f, 0.f, 0.5f, 1.f });
Mat dst;
normalize(src, dst, 0, 255, NORM_MINMAX, CV_8UC1);
cout << "src : " << src << endl;
cout << "dst : " << dst << endl;
//scr : [-1, -0.5, 0, 0.5, 1]
//dst : [0, 64, 128, 191, 255]
cvRound() 함수 : 실수 값의 반올림 연산을 해주는 함수
728x90
'런닝머신 (ML)' 카테고리의 다른 글
[컴퓨터 비전 & 머신러닝] 영상의 명암비 조절 (0) | 2023.04.11 |
---|---|
[컴퓨터 비전 & 머신러닝] 영상의 밝기 조절 (0) | 2023.04.06 |
[컴퓨터 비전 & 머신러닝] OpenCV 데이터 파일 출력 (0) | 2023.03.29 |
[컴퓨터 비전 & 머신러닝] 이벤트 처리 (0) | 2023.03.27 |
[컴퓨터 비전 & 머신러닝] 함수 그리기 (0) | 2023.03.27 |