【C#】画像処理におけるエラー

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
koiroke

【C#】画像処理におけるエラー

#1

投稿記事 by koiroke » 13年前

C#で画像処理の勉強をしています。画像処理の書籍ではC#についての記述があまり詳しくありません。インターネット等で調べてはみたもののなかなか次に進めませず困っています。どうかお力をお貸しください。
文章力が足りず意味の分からない部分があるかもしれません。そういった場合にも気軽にお答えください。なるべく早く返信したいと思います。

以下質問内容

(目標)
Form1の中にはピクチャーボックス(以下pb)が2つあります。
片方のpb1には処理前の画像を、もう一方のpb2には画像処理後の画像を表示するプログラムを完成させたい。

(方法)
書籍に書いてあるプログラムをPC上で実行させる。(Visualstadio2010)

(問題点)
・エラーにより実行ができない(エラーの内容は以下)
'System.Windows.Forms.PictureBox' に 'bmp' の定義が含まれておらず、型 'System.Windows.Forms.PictureBox' の最初の引数を受け付ける拡張メソッドが見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。

・プログラム中の"pb1.bmp"は自分で用意する必要があるのか

・ 書籍に掲載されていた部分は、「 26行 : int i, j, nx, ny, gray; ~ 41行 : pb2.bmp = bmp; 」である。
そもそもこのプログラムを記述する場所が正しいのかどうか疑わしい

コード:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace SampleProgram2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void pb2_Click(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            int i, j, nx, ny, gray;
            Color col;
            nx = pb1.Width;
            nx = pb1.Height;

            Bitmap bmp = new Bitmap(pb1.bmp);
            for (j = 0; j < ny; j++)
            {
                for (i = 0; i < nx; i++)
                {
                    col = bmp.GetPixel(i, j);
                    gray = col.R;
                    bmp.SetPixel(i, j, Color.FromArgb(gray, gray, gray));
                }
            }
            pb2.bmp = bmp;

        }

        private void pb1_Click(object sender, EventArgs e)
        {

        }
    }
}

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: 【C#】画像処理におけるエラー

#2

投稿記事 by ISLe » 13年前

さほどC#に詳しくありませんが。

31行目は
Bitmap bmp = new Bitmap(pb1.Image);
41行目は
pb2.Image = bmp;
ではないでしょうか。

PictureBoxにbmpというプロパティはありません。
ImageプロパティでPictureBoxに表示するイメージを取得または設定します。

参考にした書籍の題名なども書いていただくと回答が付きやすいかと思います。

koiroke

Re: 【C#】画像処理におけるエラー

#3

投稿記事 by koiroke » 13年前

ISLeさん
解決方法ありがとうございます。31行目と41行目を直したところ正常に動作しました。さらに、ピクチャーボックスに画像を出すといった点もImageプロパティに画像ファイルを設定することでクリアできました。無事、カラー画像を白黒画像に変換処理することができました。

今更ですが、参考にしていた書籍名は『画像処理とパターン認識入門(森北出版株式会社)』です。なかなか回答がつかなかった理由は書籍名の有無も関係していたんですね・・・

最後に一つ質問なのですが、回答の「pictureBoxにbmpというプロパティはありません」という部分でこのようなことはプログラムのどこを参照したらわかるのでしょうか。

ISLe
記事: 2650
登録日時: 15年前
連絡を取る:

Re: 【C#】画像処理におけるエラー

#4

投稿記事 by ISLe » 13年前

慣れればエラーメッセージを見ただけで分かるようになりますが、Visual Studioの使い方としては、エラーメッセージをマウスの左ボタンでクリックしてテキストカーソルがエラーメッセージ上に表示されている状態にしてF1(ヘルプ)キーを押すと、エラーメッセージの解説文書が開きます。
デフォルトではウェブブラウザでMSDNライブラリのサイトにアクセスします。
コンパイラ エラー CS1061
MSDNライブラリには、マイクロソフトの開発製品のマニュアルが無償で公開されていて、ウェブブラウザを使って誰でも読むことができます。

コード入力中には、PictureBox型の変数名に続けて.(ドット)を打鍵したときにインテリセンス機能が働いてプロパティやメソッドの一覧が表示されます。

あと、PictureBox型の変数名にテキストカーソルが表示されている状態にしてF1(ヘルプ)キーを押すとPictureBoxの解説が開くと思います。
PictureBox クラス

閉鎖

“C言語何でも質問掲示板” へ戻る