안녕하세요! 이번포스팅은 무쟈게 쉽습니다!


보통은 특정 조건이 만족될때만 실행되는 그런 프로그램을 작성하잖습니까??


그럴때 if~else, 조건연산자, switch, break, for, while, continue 등이 있습니다.




첫번째로 if~else 를 설명해드릴건데


소스 보시죠!


public class test {

public static void main(String[] args) {

if(true)

{

System.out.println("true");

}

else

{

System.out.println("false");

}

}

}


결과 : true


이 결과는 영어를 살짝 해석만 할줄 아시면 금방 이해가 됩니다.


첫번째로 if는 '만약' 이라는 뜻이죠? 


if(true) 만약 참 이라면,,   


else는 '나머지' 비슷한 뜻을 가지고 있는거같아요.


따라서 else 는 if문이 참이 아니라면 실행되는 곳입니다. if문이 참이면 무시하고 넘어가게 됩니다.




근데 저기 if문과 else문 아래에 중괄호가 괜히 지저분해 보이는건 저뿐인가요...


if, else문에선 중괄호 안에 들어갈 작업이 한가지 뿐이라면,


예를 들면 위 예제와 같이 print문 하나 뿐이 없을경우!


이때는 중괄호를 삭제해도 됩니다. 이렇게 말이죠


public class test {

public static void main(String[] args) {

if(true)

System.out.println("true");

else

System.out.println("false");

}

}


결과는 똑같습니다. 이렇게 중괄호를 지우는건 함수안에 있는 조건문일때 가능한겁니다. 함수시작할때 쓰는 중괄호는 무조건 살려두셔야해요!


else if 문도 있는데 if문 외에 또다른 조건을 달고 싶을경우, else는 if문의 조건을 제외한 나머지경우에 실행되는거구 else if문은 꼭 if문 조건의 나머지 경우가 아니라 그보다 더 적은 범위의 조건을 정할수 있는 문법입니다.


else if(num<3) 요런식으로 말이죠! else if와 else는 사용하고 싶으시면 사용하는거고,


if문은 꼭 처음부분에 사용하셔야 합니다.


처음부터 else if 나 else 가 들어갈수 없다는 뜻이에요!




if문 쪽은 이정도면 된거같구..


다음으론 조건연산자 보여드릴게요.




조건연산자가 은근 헷갈리면서 기능이 파워풀해요! 


간단하면서 쓰기 편합니다. 소스보여드릴게요.


public class test {

public static void main(String[] args) {

int num1 = 100, num2 = 500;

int big, diff;

big = (num1 > num2) ? num1 : num2;

System.out.println(big);

diff = (num1 > num2) ? num1-num2 : num2-num1;

System.out.println(diff);

}

}


결과 : 

500

400


이렇게 나옵니다. 간단하게 설명드리면


num1과 num2가 있죠? 크기는 num2가 더 큽니다.


여기서 조건연산자를 해석해볼수 있는데요,


(num1 > num2) ? num1 : num2;


이렇게 되었을 때,


순서대로 보시면 num1 > num2 조건같죠? num1이 num2보다 크다.


물음표는 구분해주는 연산자 같구 num1:num2 이건 이해가 살짝 힘들죠..


결과를 보면 알수 있듯이 물음표를 기준으로 앞의 조건이 참이면 콜론(:)의 왼쪽을 리턴하고 조건이 거짓이면 오른쪽을 리턴하는 겁니다.


그래서 diff를 보면 절댓값을 계산할수 있게 되는거죠 ㅎㅎ


이렇게 보면 쉽죠? 나중에 해보려고 하면 까먹까먹...


많이 써보셔야합니다. 은근 유용하게 쓰이는곳이 많아요.




포스팅을 2개로 나눠서 써야할거같아요. 알려드릴 범위가 은근 많네요.ㅠㅠ


다음포스팅에서 봅시다!




안녕!

'JAVA' 카테고리의 다른 글

JAVA 5 - 1. 실행 흐름의 컨트롤  (0) 2018.04.04
JAVA 4. 형변환과 연산자  (0) 2018.04.03
JAVA 3. 변수, 자료형  (0) 2018.04.03
JAVA 2. system.out.println  (0) 2018.04.03
JAVA 1. 시작  (0) 2018.04.03

double num1 = 20;


int num2 = 20.5;


소스를 적고 실행해보면 위는 되고 아래는 안될것이다!




이유는 데이터 손실때문인데 그러므로 형변환 규칙을 따라야 한다. 


아래는 형변환 규칙이다.




byte - short - int - long - float - double

   char -ㄱ


이런 식으로 된다. 쉽게 예를 들어보면


int형 데이터는 long, float, double형으로 형변환이 가능하다는것이다.


long num = 1; 여기서 1은 int형 데이터이지만 num 변수의 자료형은 long형이다.


그래도 데이터 손실없이 형변환이 가능하다는 것이다.


하지만,


int num = 2.5; 여기서 2.5는 double형 데이터이고 num 은 int형 이므로 데이터 손실이 발생한다.


생각해보자 double은 8바이트, int는 4바이트이다 당연히 차이나는 4바이트는 물론이고 그 이외의 손실이 있을수도 있지 않겠습니까!!




요약해보면 형변환규칙에서 한 자료형이 그 자료형의 오른쪽의 자료형의 변수에 인풋값이 가능하다는것.


요약이 안된거 같은데 ㅋㅋㅋ  int찍었으면 int는 int의 오른쪽에있는 long, float, double에만 형변환되어 인풋이 가능하다는것!




명시적 형변환도 있습니다. 데이터의 손실이 발생하더라도 문제없이 실행되는 문법입니다.


사용방법은


int num = (int)3.15


소수점이 떨어져 나가고 num에는 3이 저장됩니다.




연산자 굉장히 많죠 비슷한거도 있구.. 순서도 있고,


이렇답니다! 있다는 것만 알아두면 뒤에서 설명드립니다!


연산자 순서도 복잡한 수식 사용하시면 꼭필요합니다.




사칙연산은 쉽죠? 더하기 빼기 곱하기 나누기 .


여기에 %연산만 더해서 이건 나머지를 구하는거에요 5%3 은 결과값으로 2가나옵니다!


복합대입연산자는 a = a*15 이걸 a*=15 이렇게 줄여놓은거에요 a두번써야하니까 지저분해보이고 귀차나! 그래서 줄인듯 ㅋㅋ..


관계연산 <, >, <=, >=, ==, != 


악어입은 아시죠?    == 이건 양옆이 같으면 참, 다르면 거짓을 리턴합니다. != 는 ==으로 했을때 나오는 결과의 반대 .


양옆이 같으면 거짓, 다르면 참을 리턴해줍니다!


논리연산 &&, ||, !


&&는 양옆이 모두 true일때, ||는 둘중하나라도 true일때, !는 느낌표 뒤에오는 결과를 뒤집어줍니다. !true 면 false와 똑같은 뜻이죠.


부호 연산 +,-


그냥 앞에 부호붙여주는거에요 +는 수학에서 생략가능하죠? 생략가능하구요~ -는 뜻그대로 마이너스로 바꿔줘요.


int n = 10 이 있으면 -n 을 출력하면 -10이 나옵니다.


증감연산 ++,--


변수 앞에 붙으면 증가가 제일 우선입니다. System.out.println(++n); 이면 11을출력, System.out.println(n++); 이면 10을 출력하고 11이 됩니다.


비트연산 &, |, ^, ~


&는 AND연산, |는 OR연산, ^는 XOR연산, ~는 모든비트를 반전시킵니다.


비트 쉬프트 연산 <<, >>, >>>


<<, >> 는 뒤에오는 숫자만큼 화살표 방향으로 비트를 이동합니다. 빈공간은 0으로 채웁니다. 음수일때 >>는 1로 채웁니다.


>>>는 >>와 똑같지만 음수일때 1로채우는 그런기능은 없습니다.




여기서 거의 안쓰는건 비트쪽 연산인거같아요 깊게 안해봐서그런가... 안쓰게되더라구요ㅋㅋ


그래도 아는게 힘이니까 무슨뜻인지는 알고가는게 좋을거 같습니다!




이번 포스팅은 여기까지 할게요 힘들게 달려왔네요 다음포스팅에서 봅시다!!!




안녕!

'JAVA' 카테고리의 다른 글

JAVA 5 - 1. 실행 흐름의 컨트롤  (0) 2018.04.04
JAVA 5. 실행 흐름의 컨트롤  (0) 2018.04.04
JAVA 3. 변수, 자료형  (0) 2018.04.03
JAVA 2. system.out.println  (0) 2018.04.03
JAVA 1. 시작  (0) 2018.04.03

변수 아시죠? 변하는수 ... 


java에선 변수명을 가지고 변수를 컨트롤합니다 (뭔가 당연한 소리같은 당연한소리) <-(?)




java머신 위에서 프로그램이 실행된다고 했자나여! 저저번 포스팅에서..


변수명을 설정하면 그 변수명이 가지고 있는 자료형에 맞춰서 메모리 공간에 할당이 됩니다!


여러분들 컴퓨터에 램 꽂혀있죠? 전 8기가 박혀있는데 


8기가 -> 8*1024*1024*1024 바이트 만큼 메모리공간이 있는겁니다.


비교하기 쉽게 그냥 적어봤어요!




소스 갑니다.


public class test {

public static void main(String[] args) {

int num;

}

}


여기서 제가 int형 변수를 생성했습니다.


int 는 몇바이트죠? 


네~4바이트~


4바이트가 할당된거에요 boolean, char, byte, short, long, double, float 등등 있습니다.


이넘들은 순서대로 1, 2, 1, 2, 4, 8, 8, 4 바이트를 할당하게 됩니다!!!


변수명으론 숫자로 시작하면 안되구, 키워드로 설정하시면 안됩니다. 키워드로 설정하는게 뭐냐..


변수이름을 int 로 해버리는거에요! 소스로 하면 int int 정수형 변수 int를 만든거죠 헷갈리죠?


그래서 아예 막아버렸어요! 키워드 = 이미 java 소스 자체에 등록되있는 이름들(int, double, if, break, while, try, import, implements 등등)


이정도로만 알면되구 다음으론,




소스


public class test {

public static void main(String[] args) {

double a, b;

a = 1.0000001;

b = 2.0000001;

System.out.println(a+b);

}

}


결과: 예상해보세요!


일반적으로 생각해봤을때는 3.0000002 가 나와야 하죠 근데 돌려보면


3.0000001999999997 요로콤 나와요..


1이상 5이하 정수의 수는?      5개죠?


1이상 5이하 실수의 갯수는?      ?????


무한개가 존재하죠... 이렇듯이 컴퓨터가 무한개의 실수를 다 표현할수는 없어요...


그래서 이 한계를 극복하고자 정밀도는 포기를 해버리고 표현의 범위를 넓힌거에요.




실수 표현을 위한 수식이 이렇게 됩니다.


플마(1.m)*(2의(e-127승))


그냥 표현할수 있는 범위가 어마어마하게 증가했음을 보여주는 겁니다!  사실 100프로 이해못했어요ㅋㅋㅋㅋㅋㅋㅋ 


실수는 완벽히 계산을 못한다~ 이렇게 알아두심됩니다!


죄송해요...




이정도면 이번 포스팅 끝내도 될거같아요 부족한거, 필요하신내용, 궁금한내용 있으시면 댓글로 적어주세요!


무한태클 받습니다!


다음포스팅에서 뵈요~




안녕!

'JAVA' 카테고리의 다른 글

JAVA 5. 실행 흐름의 컨트롤  (0) 2018.04.04
JAVA 4. 형변환과 연산자  (0) 2018.04.03
JAVA 2. system.out.println  (0) 2018.04.03
JAVA 1. 시작  (0) 2018.04.03
JAVA 공부 시작할게요!  (0) 2018.04.03

제목이 너무 좁은 범위를 나타낸다고 생각을 하시겠지만 


제가 윤성우님의 '난 정말 java를 공부한적이 없다구요' 책을 보고 다시 공부중이거든요.


C, C++, 자료구조 등 같은 시리즈로 했거든요. 아주 공부잘되더라구요!




쓸데없는 소리 집어치우고 암튼 순서를 보니 system.out.println 이 있어서 하는거에요! 다음 포스팅부턴 좀더 넓은범위로 갈게요.




항상 했던대로 소스부터 때려넣을게요!!!


public class test {

public static void main(String[] args) {

System.out.println("hi");

}

}


소스보시면 public class test 부분의 test는 클래스 이름입니다. 한 소스파일안에 class는 여러개가 존재해도 되지만,


소스파일의 이름있죠? test.java 이렇다면 test라는 클래스는 꼭 존재해야합니다!


그안에는 main함수가 존재해야 하구요.


c,c++해보셨으면 main함수 아시죠? 프로그램에서 중심이 되는 함수입니다. java에선 메소드라고 하고 ,


이름은 main메소드 이렇게 불리는거 같아요.




다음 소스 넣을게요.


public class test {

public static void main(String[] args) {

System.out.println(10);

System.out.println("hello " + "world");

System.out.println(3+7);

System.out.println("hello" + 3+7);

                System.out.println("hello" + (3+7));

}

}


결과: 

10

hello world

10

hello37

hello10

첫번째 줄은 10은 그냥 10으로 출력해줍니다.

두번째는 글자를 따로 붙여쓰고 싶으면 '+' 연산자로 가능하구요.

세번째는 사칙연산이 가능하는걸 보여주고

네번째는 문자열뒤에 +를 붙이면 그냥 옆에 붙어버립니다. 그래서 3+7이 10이 아니고 37로 나오는거구

마지막줄은 3+7부분에 괄호를 쳐서 연산을 먼저하게 됩니다. 따라서 10이 출력되는거구요!



전 이런거 공부할때 간단한거라도 여러번 쳐보고 응용도 해봤어요. 이럴땐 되고 저럴땐 안되고 등등...

프로그래밍은 여러번 쳐보고 끄적끄적해보는게 최고더라구요.



어쨌건 마무리!  주석하나 알려드리고 끝낼게요! 아주간단하지만 언어가 바뀔때마다 헷갈리더라구요.ㅋㅋ

c랑 똑같아요!ㅋㅋㅋㅋ    

//  <- 한줄주석

/**/ <- 묶음 주석



깔끔하게~

다음포스팅에서 봅시다 !!




안녕!

'JAVA' 카테고리의 다른 글

JAVA 5. 실행 흐름의 컨트롤  (0) 2018.04.04
JAVA 4. 형변환과 연산자  (0) 2018.04.03
JAVA 3. 변수, 자료형  (0) 2018.04.03
JAVA 1. 시작  (0) 2018.04.03
JAVA 공부 시작할게요!  (0) 2018.04.03

자바는 일반적인 프로그램들과는 달리


자바 가상머신 위에서 실행되는 프로그램이다!




따라서 windows 든 linux든 unix 든 어디든지 java머신만 설치해준다면,


내가만든 java프로그램은 문제없이 실행된다는 소리!




생각해보면 나는 c프로그램을 실행할때 linux, unix에선 gcc 쓰고 windows에선 그냥 비주얼스튜디오가 컴파일 해주고 ㅋㅋ


python은 java랑 비슷하게 실행하는거 같기도 하고..




...




좀더 생각해보니 간단히 말해 자바는 운영체제 위에 java머신이 있고 그 자바머신위에 내 소스파일이 실행된다는거고


나머지들(예외가 있겠지만)은 운영체제 위에서 쌩으로 소스가 실행되는거 같음.


물론 뇌피셜이 섞여 있으니 한눈으로 읽고 다른눈으로 뱉으세요.ㅋㅋ




이거면 java 쌩 리얼 최소 기본 내용은 알고가는거 같아요.


솔직히 프로그래밍할때 이런지식들 필요없어요 완전 필요없는건 아니지만 다시 되새길 필요가 없는거같아요.




모르는거보다 아는게 나으니까!


여기서 포스팅은 끝낼게요!




안녕!


'JAVA' 카테고리의 다른 글

JAVA 5. 실행 흐름의 컨트롤  (0) 2018.04.04
JAVA 4. 형변환과 연산자  (0) 2018.04.03
JAVA 3. 변수, 자료형  (0) 2018.04.03
JAVA 2. system.out.println  (0) 2018.04.03
JAVA 공부 시작할게요!  (0) 2018.04.03

목표가 생겼어요!!


JAVA예전에 조금했던거 이어서 java기본 마무리해보고


게임한번 만들어보려구요.


무슨게임인지는 java포스팅올려가면서 차차 알려드릴게요!!


시작합니다!!!

'JAVA' 카테고리의 다른 글

JAVA 5. 실행 흐름의 컨트롤  (0) 2018.04.04
JAVA 4. 형변환과 연산자  (0) 2018.04.03
JAVA 3. 변수, 자료형  (0) 2018.04.03
JAVA 2. system.out.println  (0) 2018.04.03
JAVA 1. 시작  (0) 2018.04.03

곧있으면 크리스마스!!!!

그래서 다시 생각난 트리스마스 크리 ㅋㅋ

for문을 이해한다면!! 간단하게 작성할수 잇음! (사실 더 간단하게 짤수 잇는데 내 코딩실력이 ㅠㅠ)


일단소스!

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
31
32
33
34
35
36
37
38
39
40
41
42
43
#include<stdio.h>
int _size;
void star(int n)
{
    for(int i=0;i<n;i++)
        printf("*");
    printf("\n");
}
void space(int n)
{
    for(int i=0;i<n;i++)
        printf(" ");
}
void tree(int n)
{
    for(int i=0;i<n;i++)
        printf(" ");
    for(int i=0;i<_size/3+1;i++)
        printf("#");
    printf("\n");
}
int main(void)
{
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    int k=1,j,spa;
    scanf("%d",&_size);
    j=_size-1;
    space(j);
    printf("★\n");
    for(int i=0;i<_size;i++)
    {
        space(j);
        star(k);
        k+=2;
        j--;
        spa=k/2;
    }
    for(int i=0;i<_size/2;i++)
        tree(spa/1.5+1);
    
    return 0;
}
cs


뭐 잡다한 소스들이 많죠..? 굳이 함수 안불러와도 되는데 ㅋㅋ
함수 이름만 봐도 뭘 의미하는지는 알수잇게 해놓음 ㅋㅋ


2016크리스마스때 친구에게 보내줘보세요!(여자면 좋을텐데..)

 

좋아하지않을까요??(응 아니야) 

 

 

어찌됐든ㅠㅠ 이걸로 끝! 소스줄이는건 요번 크리스마스때 생각..ㅋㅋㅋ;;






 

'C-Language' 카테고리의 다른 글

C언어  (0) 2014.07.29

드디어 오늘 본격적인 Mat클래스를 배우게 되는데!

opencv하면서 IplImage처럼 반드시 쓰이는 그런 클래스입니다!!!

Mat함수는 다필요없고 그냥 오늘하는거만 배웠다가 나중에 응용되어 나오면 그때가서 배우면 되용!


일단 소스부터 ㄱㄱ


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<opencv2\opencv.hpp>
using namespace cv;
using namespace std;
int main(void)
{
    Mat A(23, CV_8UC1);
    Mat B(23, CV_8UC1, Scalar(0));
    Mat C(23, CV_8UC3, Scalar(123));
 
    cout << A << endl;
    cout << B << endl;
    cout << C << endl;
    system("pause");
    return 0;
}
cs


결과는?


1
2
3
4
5
6
7
[205205205;
 205205205]
[  0,   0,   0;
   0,   0,   0]
[  1,   2,   3,   1,   2,   3,   1,   2,   3;
   1,   2,   3,   1,   2,   3,   1,   2,   3]
 
cs

결과는 이렇게 나옵니다 설명해보면


6번줄에 Mat A 가 선언되어있고 괄호안에 2,3 이 있는데 이는 2x3의 배열을 생성하겠다는 소리에요@@ CV_8UC1 이건자료형이래요 초반엔 몰라도 별지장없음!

그래서 2x3행렬에 초기화를 해주지않았으므로 결과창에 205라는 임의의 값이 들어간 듯합니다!

그리고 Mat B를 보시면 Scalar(0)으로 초기화를 해놨죠? 그래서 결과에 전부 0이 나온겁니다.

Mat C를 보시면 CV_8UC3으로 되어있져? 처음에 저는 CV_8UC1로 해서 결과가 1,1,1,1,1,1,1로 나와서 당황했는데 알고보니 8UC3으로 했어야 됬더라구요

초기화는 각각1,2,3 으로 초기화 되었씁니다!!@@!@#

보통 Mat행렬이라고 부르는데 이유는 엄청큰 행렬속에 1채널, 다채널 등의 수치데이터를 집어넣고 사용하기 때문입니다

그런데말입니다. Mat에대한것은 프로그래밍을 하면서 접해보는게 짱입니다. Mat클래스중에 잘 안쓰는 함수도 많거덩요 물론 깊이파고들면 많이사용하겠지만...ㅋㅋ

암튼 Mat에관련되서 앞으로 쓸 포스팅에 있으면 설명 넣어드리겠습니다!! 다음엔 그냥 바로 그래픽 출력으로 가봅시다!@

'OpenCV' 카테고리의 다른 글

Scalar_ 클래스  (0) 2016.12.07
Rect_ 클래스  (0) 2016.12.07
Size_ 클래스  (0) 2016.12.07
Point3_ 클래스  (0) 2016.12.07
Point_ 클래스  (0) 2016.05.07

저번에 사칙연산 예기 안한다고했는데 해버렸음 물론 지금도 하는중이지만..... 내맘대로해야지@@ㅋㅋ

이번시간엔 Scalar에 대해 배울것이다!! 

Scalar : [명사] <물리> 하나의 수치만으로 완전히 표시되는 양. 벡터, 텐서 따위의 유방향량(有方向量)에 대하여 방향의 구별이 없는 수량이다. 예를 들면, 질량ㆍ에너지ㆍ밀도ㆍ전하량 따위를 나타내는 수이다. 

요따구로 나오는데 다필요없다. opencv에서만은 그냥 색깔이다. 색중에서도 RGB.

소스나봅세~


1
2
3
4
5
6
7
8
9
10
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main(void)
{
    Mat img(200200, CV_8UC3, Scalar(000));
    imshow("img", img);
    waitKey();
    return 0;
}
cs


완전쉽다 ㅋㅋㅋㅋ


결과로는 그냥 검은창이 뜰것이다. 귀찮아서 결과사진 안올렸어요~~~

검은창만뜨는 이유는 Scalar에서 0,0,0 RGB모두 0을 넣어줬기 때문이다.

저번 게시글에 적어놨지만 다시적어보면 Scalar(1,2,3) 에서 3이 Red 2가 Green 1이 Blue이다!

다양한 색을 출력해보고 싶으면 구글에 검색해보던가~ 직접 노가다해보던가~~~이다.

ㅋㅋ 수고했다.! 끝이에요!@@@@@


다음엔 본격적인 Mat클래스를 해보도록 합시다@@ Mat끝내면 웬만한 클래스는 다끝난걸꺼에요ㅎㅎ

암튼 날로먹는 이번게시물 ㅋㅋ 빠이!

'OpenCV' 카테고리의 다른 글

Mat_ 클래스  (0) 2016.12.07
Rect_ 클래스  (0) 2016.12.07
Size_ 클래스  (0) 2016.12.07
Point3_ 클래스  (0) 2016.12.07
Point_ 클래스  (0) 2016.05.07

Rect 클래스.. 뭔가 Rectangle 이 느껴지지않아요??ㅋㅋㅋ 나만그런가 ㅋㅋ 암튼! 사각형을 표현하는 함수에용~~~

이거도 사칙연산이 된다구 하네요. Rect클래스 안에 많은 함수가 포함되어있지만 여기서 다루기엔 좀 급한감이 있고 필요할때마다 배우면서 사용해도 될거 같아서 일단은 대략적인 설명만 해둘게요~


소스 ㄱㄱ


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<opencv2\opencv.hpp>
using namespace std;
using namespace cv;
int main(void)
{
    Rect rt1(100100320240);
    cout << "rt1: (" << rt1.x << "," << rt1.y << "," << rt1.width << "," << rt1.height << ")" << endl;
 
    cout << "rt1:" << rt1 << endl;
 
    Mat img(600800, CV_8UC3);
    namedWindow("img", WINDOW_AUTOSIZE);
    rectangle(img, rt1, Scalar(25500), 2);
    imshow("img", img);
    waitKey(); 
    return 0;
}
cs



결과?





아주잘나오네요~~ 일단 소스를 설명하자면

Rect rt1(100, 100, 320, 240);

요건 왼쪽위가 100,100 이라는 소리이고 100,100 으로부터 가로가 320 세로가 240 이라는 소리입니당! x,y좌표(앞에 100,100) 생각하시면 될듯해요!


cout << "rt1:" << rt1 << endl;

여기서 나온 결과처럼 320 x 240 from 100,100 => 100,100 에서 320 x 240 사이즈의 크기를 가지고있는 커다란 구조체이죠.



Mat img(600, 800, CV_8UC3);

이게 무엇이냐! Mat행렬이라는 함수인데 뒤에가면 조금더 자세히알려드리니 걱정마시고 그냥보시기만!!!

600x800짜리 창을 하나 만들겠다는 소리에요. 뒤에 CV_8UC3은 상수인데 opencv에서 그냥 정해둔듯!


rectangle(img, rt1, Scalar(255, 0, 0), 2);

rectangle함수인데 여기서 img에 rt1으로 정의된 사각형을 scalar(255,0,0)의 색으로 두께는 2만큼인 사각형을 그려놓으란 소리에요


그래서 imshow함수로 자료형이 Mat인 img 를 출력해줘서 저렇게 파란 사각형이 뜨게 되는것이구요.ㅎㅎ

참고로 scalar(255,0,0)은 bgr순서로 맨앞이 blue 중간이 green 마지막이 red인것 같아요!


그리고 waitKey() ..-> 사용자의 키를 입력받기를 기다리는거죠

입력받으면 바로꺼짐!

무튼~~ Rect_클래스에 대해서 대략적으로 알아보는 시간이었습니다!!!! 다음엔~~Scalar 클래스에대해서 알아보겠습니다!!@@@@@




 

'OpenCV' 카테고리의 다른 글

Mat_ 클래스  (0) 2016.12.07
Scalar_ 클래스  (0) 2016.12.07
Size_ 클래스  (0) 2016.12.07
Point3_ 클래스  (0) 2016.12.07
Point_ 클래스  (0) 2016.05.07

+ Recent posts