1

C#で画像処理を行いたいのですが、フィルターを適用する前に2つの画像を整列させる必要があります。これを行うには、小さな長方形のセクションの固定点で画像をスキャンします。これにより、ビットマップクラスを使用する必要があると思います。

このセクションには大量の白いピクセルがあるので、画像を横切る大きな白い水平バーがあるので、この領域の平均ピクセル値を取得してy軸のシフトを見つけたいと思います。

x軸は両方の画像で同じになります。最小値を検索できるように、小さいものから大きいもの、正と負まで、シフト値が異なるいくつかのテスト画像を設定したいと思います。

これには、画像を少量移動するために画像上にスクロールバーが必要になります。私はC#にまったく慣れておらず、低レベルのプログラマーです。次のコードを使用して、pictureBox1の画像を取得しようとしています。

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

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

        private void button1_Click(object sender, EventArgs e)
        {
            Bitmap myImage = (Bitmap)pictureBox1.Image;
            OpenFileDialog ofd = new OpenFileDialog();

            if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK) ;
            {
                pictureBox1.Image = Image.FromFile();    
               // this.pictureBox1.Image = myImage;
            }
        }
    }
}

Image.FromFile();フォームのボタンをクリックしたときに画像を選択したいので、何も渡さずに残しました。現在、ボタンと画像ボックスは1つしかありません。

4

1 に答える 1

1

FileName次のプロパティを使用する必要がありますOpenFileDialog

if (ofd.ShowDialog() == DialogResult.OK && ofd.FileName != "")
{
    pictureBox1.Image = Image.FromFile(ofd.FileName);
}

リンクから:

ファイル名には、ファイル パスと拡張子の両方が含まれます。ファイルが選択されていない場合、このメソッドは空の文字列 ("") を返します。

于 2013-02-03T10:01:48.323 に答える