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

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[187] [팁] 이미지의 외곽선 추출
버니79 [burny79] 9004 읽음    2001-09-05 10:09
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int pnFilter[9] = {-1, -1, -1, -1, 8, -1, -1, -1, -1};
//int pnFilter[9] = {-1, 0, 1, -1, 0, 1, -1, 0, 1};  //얼굴윤곽
//int pnFilter[9] = {1, 0, -1, 2, 0, 2, 1, 0, -1};
//int pnFilter[9] = {-1, -2, -1, 0, 0, 0, 1, -2, 1};
int i,j,p=0,pp=0;

//Image1 : 소스 , Image2 : Dest

for(j=1 ; jWidth-1 ; j++) {
        for(i=1 ; iHeight-1 ; i++) {

//        ListBox1->Items->Add(IntToStr(GetRValue(Image1->Canvas->Pixels[j][i])));
        p = GetRValue(Image1->Canvas->Pixels[j-1][i-1])*pnFilter[0] + GetRValue(Image1->Canvas->Pixels[j-1][ i ]) *pnFilter[1] +
        GetRValue(Image1->Canvas->Pixels[j-1][i+1]) *pnFilter[2] + GetRValue(Image1->Canvas->Pixels[ j ][i-1]) *pnFilter[3] +
        GetRValue(Image1->Canvas->Pixels[ j ][ i ]) *pnFilter[4] + GetRValue(Image1->Canvas->Pixels[ j ][i+1]) *pnFilter[5] +
        GetRValue(Image1->Canvas->Pixels[j+1][i-1]) *pnFilter[6] + GetRValue(Image1->Canvas->Pixels[j+1][ i ]) *pnFilter[7] +
        GetRValue(Image1->Canvas->Pixels[j+1][i+1]) *pnFilter[8];

      //  ListBox1->Items->Add(IntToStr(GetRValue(p)));
        pp = p;

        if (pp < 0) p = 0;
        if (pp > 255) p = 255;
//        if (pp > 120 && pp < 255) p = 0;
//        if (pp > 0 && pp < 120) p = 255;
        if (pp > 0 && pp < StrToInt(Edit1->Text)) p = 0;
        if (pp > StrToInt(Edit1->Text) && pp < 255) p = 255;

        Image2->Canvas->Pixels[j][i] = RGB(255-p,255-p,255-p);


        /*
for(j=1 ; jHeight-1 ; j++) {
        for(i=1 ; iWidth-1 ; i++) {



                p = ptrSorce[j-1][i-1]*pnFilter[0] + ptrSorce[j-1][ i ]*pnFilter[1] +
                ptrSorce[j-1][i+1]*pnFilter[2] + ptrSorce[ j ][i-1]*pnFilter[3] +
                ptrSorce[ j ][ i ]*pnFilter[4] + ptrSorce[ j ][i+1]*pnFilter[5] +
                ptrSorce[j+1][i-1]*pnFilter[6] + ptrSorce[j+1][ i ]*pnFilter[7] +
                ptrSorce[j+1][i+1]*pnFilter[8];
        if (p.I < 0) p = 0;
        if (p.I > 255) p = 255;
        p >> ptrDest[j][i];
        */

        }
}

}

PS. 제가 잊어 버리지 않기 위해.^^
    혹시 필요하신분들은 분석해보세요.

+ -

관련 글 리스트
187 [팁] 이미지의 외곽선 추출 버니79 9004 2001/09/05
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.