
Visual C++ 2005のC++/CLI対応で、.NET Frameworkのクラスライブラリを使用し、画像処理のプログラムを作成しています。
pictureBox1->Image = gcnew Bitmap( ファイル名 );
で、画像を表示するところまではできたのですが、表示したBitmapデータのRGBカラー情報を取得する方法がわからず、困っています。
ご存知の方、教えてください。
また、このような情報が載っている書籍やサイトがありましたら、合わせて教えてください。
よろしくお願いします。
必要な情報が抜けていましたら、お手数ですが、ご指摘お願いします。
No.3ベストアンサー
- 回答日時:
最初に訂正ですが、 ToArgv() メソッドのことは忘れてください。
RGB情報を取得したいとは、R,G,B それぞれの値を取得したいということですよね?
Color 構造体に、R,G,B というそのまんまの読取専用のプロパティがありました。
手順は
(1) Bitmap からColorオブジェクトを取得
(2) Color 構造体のR,G,B というプロパティにアクセス。
という感じです。
class Bitmap{
public:
Color GetPixel(X, Y);
};
struct Color{
int R, G, B;
int ToArgv(); // このメソッドは無視する
}; // C++ は構造体の中にもメソッドを書ける
というクラスと構造体があって、
Bitmap::GetPixel(X, Y) でColorオブジェクトが取得できます。
Bitmap bmp = new Bitmap() ; // 仮想コード
Color color = bmp.GetPixel(X, Y);
となります。
次に、取得したColor構造体のオブジェクトcolor を利用して、それぞれのRGB値を取得します。
unsigned red = color.R;
unsigned green = color.G;
unsigned blue = color.B;
以下、bmp.bmp というビットマップの全Pixel のRGBを result.txt というファイルに書き込むサンプルです。(CLR コンソールアプリ )
// メイン プロジェクト ファイルです。
#include "stdafx.h"
#using <System.Drawing.dll>
using namespace System;
using namespace System::IO;
using namespace System::Drawing;
int main(array<System::String ^> ^args){
StreamWriter^ sr = File::CreateText ("result.txt");
Bitmap^ bmp = gcnew Bitmap("bmp.bmp");
for (int i = 0; i < bmp->Width; i++){
for (int j = 0; j < bmp->Height; j++){
Color col = bmp->GetPixel(i,j);
unsigned int red = col.R;
unsigned int grn = col.G;
unsigned int ble = col.B;
sr->WriteLine("( {0}, {1} ) - R : {2}, G : {3}, B : {4}", i,j,red,grn,ble);
}
}
sr->Close();
return 0;
}
ご回答ありがとうございました。
最初に、質問文がわかりずらくてすみません。
ご察しの通り「R,G,B それぞれの値を取得したい」ということでした。
Color構造体を経由する分(?)、取得するまでに多少時間がかかってしまいますが、この方法でプログラムの情報取得部分が完成しました!
よくよく見れば、ヘルプに載っているんですね。
自分のしたい処理をヘルプで探すのは難しくて…。
既存のプログラムの処理内容を調べることはできるのですが…。
今後、ファイルへの出力も考えていましたので、参考にさせていただきますね。
丁寧な解説、ありがとうございました。
追加質問なのですが、回答者様はヘルプ等を読んで勉強されているのですか?
今後もわからないところが出てきそうなので、ヘルプだけでは心もとなく、何か参考にするものが欲しいのですが、書籍やHPはご存知ありませんか?
お時間がありましたら、よろしくお願いします。
No.2
- 回答日時:
No1 の参考URL はエラーになるようなので、
ttp://msdn2.microsoft.com/ja-jp/library/system.drawing.color.toargb.aspx
を参考にしてください。
これでも駄目なら、 Color 構造体 の
ToArgb () メソッド を確認してください。
そこにサンプルがあります。
ご回答ありがとうございました。
ToArgb()メソッドを使うと、Color構造体としてRGB情報を取得できるということですよね?
Color構造体を直接操作することはできなさそうなので、そのColor構造体をRGBに変更したいのですが、その方法はご存じないでしょうか。
R,G,Bそれぞれの情報を変更して画像処理をしたいので。
ご存知でしたら、よろしくお願いします。
No.1
- 回答日時:
Bitmap クラスの GetPixel(X,Y) で、Color オブジェクトを取得します。
取得したオブジェクトに対し、Color構造体の ToArgb() を実行すると、4バイト値が取得できます。
この値は、2バイト目から4バイトまでのそれぞれが、赤、緑、青のカラーコンポーネントだそうです。
参考URLに、サンプルが載ってます。
詳しく見てないですが、「一部の既知の色とその名前、およびそれぞれの 4 つのコンポーネントの値を示します」 と謳っています。
参考URL:http://msdn.microsoft.com/library/ja/default.asp …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 統計学 Rを用いた「繰り返しがある直交表実験計画法」の分析方法 8 2023/08/01 17:58
- AJAX 自作の地図をグーグルマップのようにしたい 3 2022/11/15 11:53
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Visual Basic(VBA) マクロで最終行を取得したい 4 2023/05/28 12:14
- Excel(エクセル) 【関数】【マクロ】データの転記の方法について 2 2023/07/26 15:22
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Excel(エクセル) エクセルのSUM関数について 4 2023/04/18 10:37
- Excel(エクセル) Excelで、別シートへ情報を参照表示する関数について。 2 2023/06/26 09:58
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- C言語・C++・C# C言語の質問です。バイナリ形式で保存されたWindows Bitmap形式の画像ファイルを読み込み、 3 2023/07/19 14:58
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
servletからjspへオブジェクト...
-
Excel VBA 定数にオブジェクト...
-
VB.netでメソッドからコントロ...
-
VBAでの[]
-
エクセルVBA 画像を貼り付ける...
-
javaScriptで画面に値を入れるには
-
サーブレットコンテキストの意...
-
VB6.0にて、ワールド変換(ピク...
-
[ASP.NET]DropDownListのDB連携...
-
Javaでブラウザ判定
-
getParameter()について
-
C#で親にイベントを投げる方法
-
エクセルVBA/SpecialCellsで特...
-
VB.NETでのnothing の意義について
-
C#のクラスで値渡しをする
-
JSPでのArrayListの表示につい...
-
ピクチャーボックスに点を打つ...
-
VB.netでJavaのCollection.shuf...
-
VB2005でADDとINSERTの違いは?
-
Calendarクラスでエラーがでる
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA 画像を貼り付ける...
-
Excel VBA 定数にオブジェクト...
-
サーブレットコンテキストの意...
-
C#のクラスで値渡しをする
-
VB.netでメソッドからコントロ...
-
servletからjspへオブジェクト...
-
エクセルVBA/SpecialCellsで特...
-
Vba ListViewの行挿入に関して...
-
C#で親にイベントを投げる方法
-
MessageBox.Show(Me,…の「Me」...
-
String型からlong型への変換は...
-
VB.NETでのnothing の意義について
-
UTF-8のテキストファイルを開く...
-
javaで、、、
-
System.Collections.SortedList
-
C#でのExcel操作について.(Ran...
-
VBSのGetFolderメソッドについ...
-
JSPでのArrayListの表示につい...
-
ピクチャーボックスに点を打つ...
-
VBAでの[]
おすすめ情報