- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ScanLineを使っての画像の色データ取得)
ScanLineを使って画像の色データを取得する方法
このQ&Aのポイント
- 現在、Visual C++を使用して、画像のグレースケール化、二値化などの加工を行うプログラムを作成しています
- しかし、各ピクセルの値を1つずつ取得する方法では計算量が多くなり、処理時間がかかってしまっています
- そこで、ScanLineを用いて1行のデータを取得するプログラムを作成したいのですが、正しいプログラム文がわかりません
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 BitmapDataクラスです。 http://msdn.microsoft.com/ja-jp/library/system.drawing.imaging.bitmapdata_members(v=VS.71).aspx かなり複雑なものですので、一貫したプログラムを書くには、時間がかかります。 取りあえず、触りだけ書いておきます。大体以下の様になります。 System::Drawing::Bitmap^ bmap_gray = gcnew System::Drawing::Bitmap(pictureBox1->Image); System::Drawing::Rectangle rect(0, 0, bmap_gray->Width, bmap_gray->Height); //bmap_grayをロックしてBitmapDataクラスを得る System::Drawing::Imaging::BitmapData^ bmpData = bmap_gray->LockBits(rect, System::Drawing::Imaging::ImageLockMode::ReadWrite, bmap_gray->PixelFormat); //イメージへのポインタを取りだす(イメージのピクセルフォーマットによってキャストするサイズが左右されるので要注意) //以下は32bitの場合 System::UInt32* ptr = static_cast<System::UInt32*>(bmpData->Scan0.ToPointer());