일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- CS Mount
- Digital Slow Shutter
- 프로그래머스 lv2
- 무게선별자동화
- 변수
- c언어
- main 함수 인자 전달
- Depth of Fileld
- 변수의 초기화와 대입
- image sensor
- Gain
- Zoom Lense
- 렌즈
- camera
- 카메라
- AppInventer
- Patch Cleaner
- 조건 제어문
- 고정비트레이트
- 저장소와 동적메모리
- 심도
- ASCCII
- 아이리스
- C Mount
- 이미지센서
- Pixel Bit Format
- 과초점거리
- 실생활알고리즘
- 간단한 앱만들어보기
- 저조도
- Today
- Total
목록c언어 (27)
카메라 개발자 공부방(SW)
최근에 농사일을 하시는 분에게서 알고리즘 제작 의뢰를 요청받았습니다. 의뢰자분은 과일 농장을 운영하고 계셨고, 매 포장 때마다 수작업으로 과일의 무게를 재고 중량을 맞추는 선별 과정 때문에 어려움을 겪고 계셨는데요. 중량에 맞는 조합들의 과일만 자동으로 찾아주기만 해도 업무 개선에 큰 도움이 될 것입니다! 오늘 작성해볼 코드는 무게 선별작업 자동화 프로그램입니다. 참고할 만한 사이트 https://youtu.be/VbV5f23xmhM 자동 선별 기계는 과일의 무게를 재는 센서들이 (1 - 10) 번까지 있고, 작동 전 어떻게 동작할지에 대한 옵션을 선택할 수 있습니다. 1) 옵션에 따라 조합의 수를 조정할 수 있는 스위치 변수가 있습니다. 1번 스위치: 가능한 조합의 수 2개 2번 스위치: 가능한 조합의..
자 오늘은 비트 필드에 대해 공부해볼 시간입니다. C언어에서 연산을 할 수 있는 메모리의 최소 단위가 얼마일까요? 바로~ 1byte입니다. 그런데 이 1byte 보다 작은 단위의 연산을 필요로 하는 경우 어떻게 해야 될까요? 이때 비트 필드가 사용될 수 있습니다. 지금은 메모리 기술이 비약적으로 발전했기 때문에 메모리 자원이 넘치죠? 1byte쯤은 무시할 수 있지만, 과거엔 1byte 마저 소중했기 때문에 bit를 쪼개서 메모리를 관리하였답니다. (임베디드 산업에선 여전히 메모리 리소스가 부족하기 때문에 bit 단위로 쪼개서 데이터에 저장을 합니다. 사용하는 방법을 제대로 알면 유용하게 사용할 수 있습니다.) 비트 필드를 선언하는 방법은 다음과 같습니다. typedef struct bitfield { i..
오늘은 union에 대해 공부해볼 시간입니다. union도 struct와 마찬가지로 기존에 있던 data type을 조합해서 새로운 data type을 정의할 수 있는 사용자 정의 data type입니다. union의 정의는 아래와 같이 합니다. union Point { int x; int y; }; #include union Point { int x; int y; }; int main() { union Point point; point.x = 4; point.y = 4; printf("%d %d\n", point.x, point.y); return 0; } // 실행결과 // 4 4 union을 사용해본 예제입니다. 참 간단하죠? struct와 사용하는 같은 것 같아도 차이점은 있습니다. struct의..
오늘은 main 함수 인자에 대해서 공부를 해보겠습니다. main 함수도 함수기 때문에 인자를 받을 수 있습니다. main 함수의 인자가 전달된다고 할 때, main 함수의 원형은 아래와 같습니다. #include int main(int argv, char** argc) { return 0; } argv는 인자의 수를 의미하고, argc가 가리키는 메모리 안에 문자열 형식으로 저장이 되어있습니다. argc의 첫번째 요소에 저장된 데이터 값은 절대 경로가 포함된 프로젝트의 이름입니다. #include int main(int argv, char** argc) { printf("%d %s\n", argv, argc[0]); return 0; } // 실행결과 // 1, 프로젝트이름 이번에는 main 함수가 여..
오늘은 가변 인자에 대해 배워볼 시간입니다. 가변 인자의 대표적인 함수로는 prinf와 scanf 함수가 있습니다. 함수를 호출하여 인자를 전달할 때, 인자 입력에 제한이 없었죠? printf("%d\n", 1); printf("%d %d\n", 1, 2); printf("%d %d %d\n", 1, 2, 3); printf("%d %d %d %d\n", 1, 2, 3, 4); scanf는 콘솔에서 사용자의 입력을 받는 함수입니다(이제야 소개를 하지만). 이런 함수를 구현해야된다고 생각해봅시다. 인자를 받는 부분을 어떻게 해야 될까요? 이럴 때 생각해볼 수 있는 방법은 가변 인자를 사용하는 것입니다. 아래의 코드를 보시죠 #include void Print(int n, ...) // ... 가변인자입니다..
오늘 배워볼 const란 변수 메모리를 상수화 시키는 연산자입니다. 다음의 코드를 보시죠 #include int main() { const int n = 0; n = 4; } // 실행결과 // compile error occur! n이란 변수가 만들어졌지만, const에 의해서 상수화가 되었기 때문에 초기화 과정에서만 메모리에 데이터를 write 할 수 있습니다. 상수 메모리는 대입 연산이 되지 않습니다. 보통이 변수의 상수화는 1) 상수 목적으로 변수를 사용하는 경우나 2) 참조하는 메모리의 데이터를 read 만 한다면 그 때 사용됩니다. (read 할 목적이라도 포인터 주소를 알고 있기 때문에 충분히 write 할 위험이 있습니다. 그것을 막는 것입니다.) 그리고 상수화 시키는 연산은 const도 ..