C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[49245] 비트맵 파일 외각선 추출 관련
정구일 [bluekuil] 1866 읽음    2007-05-14 01:08
안녕하세요.
비트맵 파일 외각선 추출에 관해서 질문이 있어서 이렇게 질문드립니다.
비트맵 파일을 불러와서 외각선을 추출해야 합니다.
그래서 bmp 파일 rgb 값을 사용하여 외각선을 추출하려고 합니다.
방법은 우선 배경은 하얀색이라는 가정을 두고 시작했습니다.
배경이 하얀색이기 때문에 하얀색 이외의 색은 모두 검은색으로 만듭니다.
그리고 rgb 값을 읽어 하얀색 rgb 값 다음 rgb 값이 검은색이면
그 곳이 경계선이 되게 했습니다.
그런데 약간의 문제가 있는지 생각 처럼 잘 되지 않습니다.
무엇이 잘 못 되었는지 봐주시면 감사하겠습니다.

/*
    비트맵 파일 이미지를 불러와서 그 이미지에 외각선을 추출한다.
    그 이미지에 배경색은 하얀색이다.
*/

#include <stdio.h>

#define BYTE unsigned char
#define MAX 1000                // 비트맵에 크기를 자동으로 계산 하는 방법을 모르겠습니다.

struct BMP_DATA                    // 비트맵 RGB값
{
    BYTE    r;
    BYTE    g;
    BYTE    b;
};

void main()
{
    static struct BMP_DATA rgb[MAX];
    int i = 0;
    FILE *fp;
    fp = fopen ("test.bmp", "w");

    while (i < MAX)                // 비트맵 배경이 하얀색이지만 완전 하얀색이 아닐수 있으므로 완전 하얀색을 만든다.
    {
        if (rgb[i].r > 220)
        {
            rgb[i].r = 255;
        }
        if (rgb[i].g > 220)
        {
            rgb[i].g = 255;
        }
        if (rgb[i].b > 220)
        {
            rgb[i].b = 255;
        }
        i++;
    }

    while (i < MAX)                // 배경이 아니라면 검은색으로 바꾼다.
    {
        if (rgb[i].r != 255)
        {
            rgb[i].r = 0;
        }
        if (rgb[i].g != 255)
        {
            rgb[i].g = 0;
        }
        if (rgb[i].b != 255)
        {
            rgb[i].b = 0;
        }
        i++;
    }

    while (i < MAX)                // 하얀색 다음 검은색이라면 그 곳이 경계 이므로 색을 바꾼다.
    {
        if (rgb[i].r == 255 || rgb[i].g == 255 || rgb[i].b == 255)
        {
            if (rgb[i+1].r == 0 || rgb[i+1].g == 0 || rgb[i+1].b == 0)
            {
                rgb[i].r = 100;
                rgb[i].g = 100;
                rgb[i].b = 100;
            }
        }
        i++;
    }
    fclose(fp);
}

+ -

관련 글 리스트
49245 비트맵 파일 외각선 추출 관련 정구일 1866 2007/05/14
49271     Re:비트맵 파일 외각선 추출 관련 2456 2007/05/16
49278         Re:Re:비트맵 파일 외각선 추출 관련 정구일 1593 2007/05/16
49283             Re:Re:Re:비트맵 파일 외각선 추출 관련 1455 2007/05/17
49290                 Re:Re:Re:Re:비트맵 파일 외각선 추출 관련 정구일 1423 2007/05/17
49293                     Re:Re:Re:Re:Re:비트맵 파일 외각선 추출 관련 1292 2007/05/17
49299                         Re:Re:Re:Re:Re:Re:비트맵 파일 외각선 추출 관련 정구일 1295 2007/05/17
49301                             Re:Re:Re:Re:Re:Re:Re:비트맵 파일 외각선 추출 관련 1374 2007/05/18
49302                                 Re:Re:Re:Re:Re:Re:Re:Re:비트맵 파일 외각선 추출 관련 정구일 1405 2007/05/18
49300                             Re:Re:Re:Re:Re:Re:Re:비트맵 파일 외각선 추출 관련 1311 2007/05/18
49284                 Re:Re:Re:Re:비트맵 파일 외각선 추출 관련 - scanline으로 하면 빨라요 장성호 1684 2007/05/17
49261     Re:비트맵 파일 외각선 추출 관련 장성호 2257 2007/05/14
49270         Re:Re:비트맵 파일 외각선 추출 관련 정구일 1453 2007/05/15
49257     Re:비트맵 파일 외각선 추출 관련 머슴.한석복 2109 2007/05/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.