C#/C# OpenCV/
C# OpenCV 6-2. BitWise 추가 설명
2019. 11. 22.
연산자 종류
종류 | 의미 | 부호 | 설명 |
And | 논리 곱 | & | 조건들이 모두 참 일경우 참 |
Or | 논리 합 | | | 조건중 1개만 참이어도 참 |
Xor | 비교 | ^ | 조건이 서로 다를 경우 참 |
Not | 부정 | ~ | 참은 거짓으로 거짓은 참으로 |
BitWise 2진연산
일반적으로 통용되는 색상코드는 RGB 16진수 형태로 표현된다.
하지만 C# 코드에서 색상값을 나타내는 Scalar 값은 10진수.
연산은 2진수로 진행된다.
이에 검증차원 간단하게 알아보려고 한다.
ex) 보라색의 경우 800080
R : 80 , G : 00 , B : 80 16진수의 값을 가지고있다.
10진수로 바꿔보면
R : 128 , G : 0 , B : 128
2진수로 바꿔보면
R : 10000000 , G : 00000000 , B : 10000000
사용한 Code
string R16 = ColorCode.Substring(0, 2);
int R10 = Convert.ToInt32(R16, 16);
string R2 = Convert.ToString(R10, 2);
string.Substring(int startIndex, int length)
startIndex 문자열에서 시작할 위치 인덱스
length 시작위치부터의 길이
※ 입력된 RGB 코드에서 각각 R, G, B 값 분리
Convert.ToInt32(string value, int fromBase)
value 변환 해줄 원본값
frombase 원본값의 진숫값
※ 16진수로 분리한 값을 10진수로 변환
Convert.ToString(int value, int toBase)
value 변환해 줄 원본값
toBase 목표진수값
※ 10진수로 변환한 값을 2진수로 변환
var pt = image.At<Vec3b>(0, 0);
int R10 = pt.item2;
int G10 = pt.item1;
int B10 = pt.item0;
var pt = image.At<Vec3b>(0, 0)
결과 이미지의 (0, 0) 포인트 위치의 픽셀정보 취득
단색 이미지라 크기내 어느 위치든 상관 없다.
OpenCV 에서는 BGR값을 사용하기 때문에
pt.item0 가 B, pt.item1 이 G, pt.item2 가 R 값을가진다.
결과
※ BitWise 함수를 쓰는것과 2진연산을 통해 나온 값이 동일한 것을 볼 수 있다.
추가로 프로젝트 파일 첨부
https://drive.google.com/file/d/1xEro0XHCknSXybmO322wdx21BnsP7whR/view?usp=sharing