我在PictureBox1中有image_1。我想掃描圖像中間的一個矩形部分,例如x軸上的300到500和y軸上的300到450。當我掃描這一部分時,我想將所有像素的值相加並得到它們的平均值。c#循環和總和數據
然後,我在ImageBox2中有image_2,測試圖像。這是第一張圖片的副本,但PictureBox2上有一個滾動條。如果我然後在與第一張圖像相同的位置掃描第二張圖像,則對該矩形內的每個像素值進行求和,並得到它們的平均值,這些值應與我使用image_1得到的值完全相同。
現在,我將使用PictureBox2上的滾動條在垂直,y軸上稍微向上移動image_2,並在與之前相同的固定位置重新掃描,然後合併像素值並獲取它們的平均值。這些值應該是不同的,因爲我正在掃描圖像的不同部分。 然後我再重複這個過程,在image_2的y軸上獲得不同程度的差異以獲得數值讀數。
這只是爲了證明一個概念。在固定的矩形位置上掃描圖像,求和和平均值足以最終縮小這些值,以便可以定位對象的起點。
這是否被認爲是可能的我是否想嘗試一下。 請指教最簡單的方法。在這個階段沒有必要嘗試最快或最有效的方法,純粹目前最簡單的方法是最好的
這是我可以簡單這樣做嗎?
namespace imageAlign
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Bitmap myImage1 = (Bitmap)pictureBox1.Image;
OpenFileDialog ofd1 = new OpenFileDialog();
if (ofd1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
pictureBox1.Image = Image.FromFile(ofd1.FileName);
// get pixel value and store it in array, sum and average it so it can Be compared to image2
int sum = 0;
for (int i = 0; i > 300 && i < 500; i++)
{
for (int j = 0; j > 300 && j < 450; i++)
{
int[] img1 = new int[i];
sum += img1[i];
MessageBox.Show(sum);
//Color pixel = img1.GetPixel(i,j);
//sum and average pixel values in array
}
}
}
}
謝謝大家。
這一切的目標是什麼。你想達到什麼目的?你是否想知道第二張圖像與第一張圖像進行比較所滾動的數量?它可以水平和垂直滾動嗎? –
您的for循環不正確。如果你想在300到500之間,應該是__for(int i = 300; i <500; i ++); __你寫的東西會落在循環中 –
@Jason Moore:不客氣。此外,由於您是StackOverflow的新用戶,因此我想告訴您,您可以通過查看答案旁邊的勾號來獲得最佳答案並接受最能幫助您的答案。在這個網站上upvote或接受的答案算作「謝謝」。 –