2023. 11. 20. 13:26ㆍ컴퓨터비전
CV_32SC1: 32bit signed integer, 1채널
CV_8U: 8bit unsigned integer
CV_16U: 16bit unsigned integer
사진의 채널 개수 구하기
: img.channels()
사진의 타입 구하기
: img.type()
-> 숫자가 반환되는데 예를 들어 6이 반환되면 CV_64FC1 타입인것이다.
+--------+----+----+----+----+------+------+------+------+
| | C1 | C2 | C3 | C4 | C(5) | C(6) | C(7) | C(8) |
+--------+----+----+----+----+------+------+------+------+
| CV_8U | 0 | 8 | 16 | 24 | 32 | 40 | 48 | 56 |
| CV_8S | 1 | 9 | 17 | 25 | 33 | 41 | 49 | 57 |
| CV_16U | 2 | 10 | 18 | 26 | 34 | 42 | 50 | 58 |
| CV_16S | 3 | 11 | 19 | 27 | 35 | 43 | 51 | 59 |
| CV_32S | 4 | 12 | 20 | 28 | 36 | 44 | 52 | 60 |
| CV_32F | 5 | 13 | 21 | 29 | 37 | 45 | 53 | 61 |
| CV_64F | 6 | 14 | 22 | 30 | 38 | 46 | 54 | 62 |
+--------+----+----+----+----+------+------+------+------+
행렬 원소의 전체 개수 반환
: img.total()
add(src1, src2, dest, mask, dtype)
: src1과 src2 더하기. (더해서 255를 초과하는 값은 255로 반환한다.)
(두번째 인자까지만 필수 인자)
src1: 첫번째 입력 이미지
src2: 두번째 입력 이미지
dest: 출력 이미지
mask: mask값이 0이 아닌 픽셀만 연산.
-> 이 옵션을 안쓸려면 Mat() 또는 noarray()로 빈 행렬이나 빈 배열을 넣으면 된다.
아무값도 안들어 있으므로 적용되지 않는다.
dtype: 출력 이미지의 데이터 타입
saturate_cast<uchar>();
: 픽셀값이 0이하 255이상을 넘어가지 않도록
음수는 0으로 255이상은 255로 변환시켜준다.
또한 입력 인자가 부동소수점이면, 결과를 가까운 정수로 반올림 해준다.
zeros(height,width,img.type)
: 이미지 0으로 초기화
Mat_ 클래스
: Mat 클래스에서 상속된 템플릿 클래스. 둘이 상호 변환 가능.
행렬 원소 접근 연산을 많이 하거나 컴파일 타임에 행렬의 자료형을 알고 있는 경우 사용한다.
<<연산자를 이용하여 개별 원소를 한 번에 초기화 할 수 있다.
cv::Mat_<float> mat11_(2, 3);
mat11_ << 1, 2, 3, 4, 5, 6;
cv::Mat mat11 = mat11_;
바로 Mat 클래스로 사용하고 싶다면 한줄로 가능
cv::Mat mat11 = (cv::Mat_<float>(2, 3) << 1, 2, 3, 4, 5, 6);
초기화 리스트를 사용하여 초기화도 가능
cv::Mat12 = cv::Mat_<float>({2, 3}, {1, 2, 3, 4, 5, 6});
<과제하며 얻은 것>
1. uchar: unsigned char의 약어로 c++에서 사용되는 데이터 타입
8비트 크기의 부호 없는 정수를 나타내며 0~255까지의 값을 가질 수 있다.
흑백 이미지의 픽셀 데이터를 저장하는데 주로 사용.
2. at<uchar>(y,x): 해당 좌표의 픽셀 값을 uchar 형식으로 읽어옴.
3. sin,cos함수는 인수로 라디안을 넣어야함
-> 도 *pi/180
**계속 인수로 도를 넣어서 값이 이상하게 나옴
4. 역방향 매핑을 해줘야 빵꾸난 픽셀이 안생김
5. 픽셀값 0이 검정 255가 흰색
값이 커질수록 그라데이션으로 흰색이 됨.
6. 반시계방향을 +
시계방향을 - 로 계산
7. 가우시안 필터의 시그마값이 클수록 중앙값과 인접 픽셀값들에 가중치를 고르게주어 블러링 효과는 커지고
시그마값이 작아질수록 중앙값에 가중치를 많이 주어 블러링 효과는 작아진다.
마스크 사이즈를 크게할 수록 높은 에너지만 통과가능해져 블러링 효과가 커지고
작게하면 블러링 효과가 작아진다.
'컴퓨터비전' 카테고리의 다른 글
| Image Transformation and RANSAC (4) | 2023.11.25 |
|---|---|
| [opencv] Error: Assertion failed (((0x28442211 >> ((traits::Depth<_Tp>::value) & ((1 << 3) - 1))*4) & 15) == elemSize1()) in cv::Mat::at 에러 해결 (2) | 2023.11.21 |
| Feature Detection and Matching (0) | 2023.11.14 |
| Edge Detection (0) | 2023.11.12 |
| Image Restoration and Reconstruction (0) | 2023.11.10 |