線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1682
推到 Plurk!
推到 Facebook!

影像自動剪裁(掃描圖片時)

缺席
shun1101
一般會員


發表:3
回覆:2
積分:1
註冊:2003-03-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-08-31 01:56:51 IP:211.74.xxx.xxx 未訂閱
目前專題製作中碰點了點瓶頸, 在掃描較小的圖片時(如3x5相片,名片..等), 會將空白部分一起掃描進來, 已經試過了一些方法, 如用影像相減,將空白背景減去; 但是每次合蓋子的位置不見得都會一樣, 所以與背景誤差的問題相當嚴重。    不知有沒有辦法克服,或是能用一些TWAIN內建的函式?    PS..掃描器掃描留下來的空白部分不一定是完全的白色,     一定是會有一些雜點的,如灰塵...等。    第一次發問,請多多指教~~
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-01 13:23:44 IP:140.135.xxx.xxx 未訂閱
shun1101您好:   您的目的是什麼呢? 可否放上您所掃描出來的圖片來輔助說明呢?    順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~
shun1101
一般會員


發表:3
回覆:2
積分:1
註冊:2003-03-20

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-01 18:14:08 IP:211.74.xxx.xxx 未訂閱
簡單來說就是要這樣    →→→→ 不過我已經想到辦法克服了。~~
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-01 18:18:37 IP:140.135.xxx.xxx 未訂閱
shun1101您好:    
引言: 不過我已經想到辦法克服了
能否請您說說您的方式,提供給有需要的人參考呢? 謝謝您,順心 <>~我也是在學習的階段,回答的不好請您多多見諒與指教~
shun1101
一般會員


發表:3
回覆:2
積分:1
註冊:2003-03-20

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-09-01 19:57:19 IP:211.74.xxx.xxx 未訂閱
主要是運用2值化來作處理, 當然如果要效果更好的話, 可以再加上濾波等... 程式碼如下, 但要注意的是, 此程式是針對我這種背景, 如果背景不同的話, 要在將2值化的基準值在改過。    
void TfrmMain::ImageRect(Graphics::TBitmap *pBitmap) //宣告函數
{
int xt=pBitmap->Width; //Left
int xb=0;              //Right
int yt;                //Top
int yb;                //Bottom
int threshold=218;     //2值化基準值,依背景不同更變
bool check_yt=true;
int b,g,r,gray;
Byte *ptr;    for (int y = 0; y < pBitmap->Height; y  )
   {
     ptr = (Byte *)pBitmap->ScanLine[y];
  for (int x = 0; x < pBitmap->Width; x  )
     {
       b=ptr[x*3];
       g=ptr[x*3 1];
       r=ptr[x*3 2];
       gray=(0.299*r 0.587*g 0.114*b);
       if(gray>threshold)
       gray=255;
       else
       gray=0;
    if (gray!=0)
       {
     if(check_yt)
        {
        yt=y;
        check_yt=false;
        }
        yb=y;
        if(xxb) xb=x;
       }
     }
   }
TRect TheRect,ImgRect;
TheRect = Rect(xt,yt,xb,yb);
ImgRect = Rect(0, 0, xb-xt 1, yb-yt 1);
pBitmap->Canvas->CopyRect(ImgRect,pBitmap->Canvas,TheRect);
pBitmap->Width=xb-xt 1;
pBitmap->Height=yb-yt 1;    } 
請多多指教~~
系統時間:2024-04-19 13:20:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!