廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 4866 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
rei 手機
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎
小人物
級別: 小人物 該用戶目前不上站
推文 x2 鮮花 x366
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[C/C++][精華] ScanLine 的問題
這是低通濾波的程式碼...->開圖->轉灰階->低通一次!

轉灰階ok! 但低通時就發生錯誤↓

一直出現scan line index out of range...

不知是否可指導一下哪兒有錯= ="
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
const int RED = 2;
const int GREEN = 1;
const int BLUE = 0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::ScrollBar1Change(TObject *Sender)
{
;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Edit1Change(TObject *Sender)
{
;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(OpenPictureDialog1->Execute())
{
..

訪客只能看到部份內容,免費 加入會員 或由臉書 Google 可以看到全部內容




人生要是跟等巴士一樣...
  你願意搭哪一種車?
爆滿?髒車?舊車?新車?空車?還是...走路?
獻花 x0 回到頂端 [樓 主] From:台灣中華電信 | Posted:2006-05-03 14:31 |
cmovies
數位造型
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x20
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

ptr2 = (Byte*) Image2->Picture->Bitmap->ScanLine[row];
-> Image2 從哪裡來?
在 Button4Click 中 Image1 的 PixelFormat 沒有設定, 但程式內好像當成 pf8bit 來用?


獻花 x1 回到頂端 [1 樓] From:台灣中華電信 | Posted:2006-05-03 16:46 |
rei 手機
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎
小人物
級別: 小人物 該用戶目前不上站
推文 x2 鮮花 x366
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用cmovies於2006-05-3 16:46發表的 :
ptr2 = (Byte*) Image2->Picture->Bitmap->ScanLine[row];
-> Image2 從哪裡來?
在 Button4Click 中 Image1 的 PixelFormat 沒有設定, 但程式內好像當成 pf8bit 來用?

呵~今天下午在學校時~

也剛好在重新整理時有發現...

可是卻也出了令一個問題= =

其他的都跟前者一樣~@@

低通時~卻無法完整掃完= =

不知道是不是他掃圖時...

連rgb值也考慮近去了???

所以無法正常???還是...

目前寫的程式

複製程式
void __fastcall TForm1::Button4Click(TObject *Sender)
{
  int low,up,down,left,right,col,row;
  Byte *ptr2, *tptr, *uptr, *dptr;

if(Image2->Picture->Bitmap->Empty)
  Image2->Picture->Bitmap=Image1->Picture->Bitmap;

  for (row=0; row<Image2->Picture->Height; row++)
       {
         up     =row-1;
                if(up<0)
                   up=Image2->Picture->Height -1;     //發現小於min(Height),則取max(Height)來使用
         down   =row+1;
                if(down==Image2->Picture->Height)
                   down=0;                           //發現大於max(Height),則取min(Height)來使用

         uptr = (Byte*) Image2->Picture->Bitmap->ScanLine[up];
         tptr = (Byte*) Image2->Picture->Bitmap->ScanLine[row];
         dptr = (Byte*) Image2->Picture->Bitmap->ScanLine[down];

         for (col=0; col<Image2->Picture->Width; col++)
             {
                left    =col-1;
                    if(left<0)
                        left=Image2->Picture->Width -1;//發現小於min(width),則取max(width)來使用
                right   =col+1;
                    if(right==Image2->Picture->Width)
                        right=0;                      //發現大於max(width),則取min(width)來使用

                low = (int)(uptr[left] +uptr[col] +uptr[right]+
                            tptr[left] +tptr[col] +tptr[right]+
                            dptr[left] +dptr[col] +dptr[right] );

                low=low/9;
                tptr[col]= (Byte)(low);
              }
       }
       //ShowMessage(col);
       Repaint();
}


人生要是跟等巴士一樣...
  你願意搭哪一種車?
爆滿?髒車?舊車?新車?空車?還是...走路?
獻花 x0 回到頂端 [2 樓] From:台灣中華電信 | Posted:2006-05-04 00:33 |
cmovies
數位造型
個人文章 個人相簿 個人日記 個人地圖
小人物
級別: 小人物 該用戶目前不上站
推文 x0 鮮花 x20
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

Image2 的 PixelFormat 為 Image1 的 PixelFormat, 所以應該是 pf24bit
那麼每個點應該有 R G B 三個 Bytes
照你的程式來看只有處理三分之一的圖而已

          low = (int)(uptr[left*3+BLUE] +uptr[col*3+BLUE] +uptr[right*3+BLUE]+
                  tptr[left*3+BLUE] +tptr[col*3+BLUE] +tptr[right*3+BLUE]+
                  dptr[left*3+BLUE] +dptr[col*3+BLUE] +dptr[right*3+BLUE] );

          low=low/9;
          tptr[col*3+BLUE]= (Byte)(low);

其他兩個顏色看你要不要加上去囉!

此文章被評分,最近評分記錄
財富:40 (by codeboy) | 理由: 感謝您的詳細回答喔^^


獻花 x1 回到頂端 [3 樓] From:台灣中華電信 | Posted:2006-05-04 01:16 |
rei 手機
個人文章 個人相簿 個人日記 個人地圖
特殊貢獻獎
小人物
級別: 小人物 該用戶目前不上站
推文 x2 鮮花 x366
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用cmovies於2006-05-4 01:16發表的 :
Image2 的 PixelFormat 為 Image1 的 PixelFormat, 所以應該是 pf24bit
那麼每個點應該有 R G B 三個 Bytes
照你的程式來看只有處理三分之一的圖而已

          low = (int)(uptr[left*3+BLUE] +uptr[col*3+BLUE] +uptr[right*3+BLUE]+
.......
原來~

晚點去學校再試試能不能宣告它為"8Bit..."

剛看了範例書...

怎..怎麼"高通"跟"邊緣"也差不多呀= =

汗....>"<


人生要是跟等巴士一樣...
  你願意搭哪一種車?
爆滿?髒車?舊車?新車?空車?還是...走路?
獻花 x0 回到頂端 [4 樓] From:台灣中華電信 | Posted:2006-05-04 07:36 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.061692 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言