--------------
C++
--------------
우선 .cpp 소스 파일을 생성합니다.
1.
2.
3.
4.
화면에 글자를 출력해 보는 기본 소스부터 시작합니다.
소스)
#include <iostream> // stdio.h -> iostream으로 바뀜
int main()
{
std::cout << "Hello\n"; // printf -> std::cout 으로 바뀜, std::cout 은 객체입니다.
return 0;
}
--- C++.....
- C++은 C를 포함하기 때문에 C 문법, 함수를 다 사용할 수 있습니다.
- 소스 중간에 변수를 선언하여 사용할 수 있다. (단, 중간에 선언한 변수는 그 위에서 사용 불가)
- std::cout은 객체입니다. (console out)
소스)
#include <iostream>
int main()
{
std::cout << "hello\n";
printf("C 문법\n"); // C 함수 사용 가능
int iA = 100; // 소스 중간에 변수 선언 가능
std::cout << iA; // %d등 서식 문자를 사용하지 않고 숫자를 간단히 출력
std::cout << "\n";
std::cout << iA << "\n"; // 뒤에 엔터 서식 문자를 넣을 수도 있다.
std::cout << iA << std::endl; // "\n" 대신 std::endl 이라는 것도 있다. 개인의 취향
return 0;
}
linux에서도 실습해 보았습니다.
(g++이 설치되어 있지 않을 시 "sudo apt-get install g++" 치면 자동으로 설치, 설정이 된다.)
- MS Visual Studio는 확장자로 .c는 C, .cpp는 C++로 사용하는데,
Linux, Unix에서는 .cpp, .c++, .cc등 으로 사용한다고 합니다.
- MS Visual Studio는 확장자로( .c, .cpp ) 소스 파일을 구분하여 컴파일 하는 반면,
Linux, Unix 에서는 확장자로 소스 파일을 구분하지 않고, C는 gcc로, C++은 g++로 컴파일 합니다.
--- C++...
- "std::cin >> 변수" 입력을 받아 변수에 넣습니다. std::cout << 이랑 삿갓이 반대 모양입니다.
소스)
#include <iostream>
int main()
{
int dan;
int su;
std::cout << "단을 입력하세요 : ";
std::cin >> dan;
for(; 10 > dan; ++dan)
{
for(su = 1; 10 > su; ++su)
{
std::cout << dan << " * " << su << " = " << dan * su << std::endl; // 입력 받은 단부터 구구단 출력
}
std::cout << std::endl;
}
char buf[128];
int number;
std::cout << "문자열, 숫자 입력 : ";
std::cin >> buf >> number; // 입력을 연속해서 받을 수 있다.
std::cout << "문자열 : " << buf << std::endl;
std::cout << "숫자 : " << number << std::endl;
std::cout << "문자열 + 1: " << buf + 1 << std::endl; // 문자열 변수에 +1을 하면 주소가 +1 되어 출력된다.
return 0;
}
---------------
평활화
---------------
- 어둡게 촬영된 영상의 히스토그램을 조절하여 명암 분포가 빈약한 영상을 균일하게 만드는 기법
- 히스토그램 평활화 3단계
1. 명암값의 빈도수 수치 계산
(uiRcnt[], uiGcnt[], uiBcnt[] 이 배열들이 명암값 빈수도 계산된 값이다.)
2. 각 명암값 누적수 계산
3. 총 화소와 최대 명도값으로 계산
n[i] = sum[i] * ( 1 / (총화소) ) * (최대 밝기)
추가된 소스)
...
//전역 변수 선언
unsigned int uiRhisto[256]; // 평활화로 사용할 변수
unsigned int uiGhisto[256]; // 평활화로 사용할 변수
unsigned int uiBhisto[256]; // 평활화로 사용할 변수
...
...
//히스토그램 세로축 수치 값을 조정하는 소스 밑에 추가
for(uiXcount = 0; 256 > uiXcount; ++uiXcount)
{
if(uiXcount != 0)
{
uiRhisto[uiXcount] = ((uiRhisto[uiXcount-1] + uiRcnt[uiXcount]) * 255) / (uiX*uiY);
}
else
{
uiRhisto[uiXcount] = (uiRcnt[uiXcount] * 255) / (uiX*uiY);
}
}
1. uiRcnt[uiXcount]
명암값의 빈도수 수치 계산
2. uiRhisto[uiXcount-1]
각 명암값 누적수 계산으로 이전 값을 계속 더함.
3. uiRhisto[uiXcount] = ((uiRhisto[uiXcount-1] + uiRcnt[uiXcount]) * 255) / (uiX*uiY);
총 화소와 최대 명도값으로 계산 n[i] = sum[i] * ( 1 / (총화소) ) * (최대 밝기)
'코스웨어 > 14년 스마트컨트롤러' 카테고리의 다른 글
2014.10.02 업무일지 [출석번호 21 이재우] (8) | 2014.10.07 |
---|---|
10. 02 업무일지 [ 이경진 ] (13) | 2014.10.06 |
2014.10.01 업무일지 18번 오영주 (5) | 2014.10.02 |
2014.09.30 일일 교육보고 - 오두환 (11) | 2014.09.30 |
20140926 업무일지 손병규(출석번호 14번) (9) | 2014.09.28 |
20140925서상우수업보고서 (7) | 2014.09.25 |
20140924 업무일지 박영주 (7) | 2014.09.24 |
20140923 일일업무보고서 11번 문대영 (4) | 2014.09.23 |