עבור לתוכן

תמונות ומערכים .. C#

Featured Replies

פורסם

כתבתי פעולה סטאטית שמקבלת תמונה בינארית והופכת אותה למערך דו מימדי

שכל תא בו מייצג פיקסל אחד מהתמונה- 0 ללבן ו-1 לשחור .

הבעיה היא שכשאני רוצה להשתמש במערך (שבניתי בפעולה נפרדת)

בפעולה הראשית ולהפעיל עליו פעולות נוספות זה נותן שגיאה שהמערך לא קיים ..

יש לזה פתרון?

תודה מראש לעוזרים (: ...

פורסם

יעזור מאד עם תוסיפי את הקוד הרלוונטי בעזרת כפתור ה"#"

פורסם
  • מחבר

זו הפעולה שבונה את המערך :


public static void imageToArray(Bitmap B)
{
int width = B.Size.Width;
int height = B.Size.Height;
int[,] arr = new int[width, height];
int[,] labelarr = new int[width - 2, height - 2];
for (int j = 0; j < height; j++)
{
for (int i = 0; i < width; i++)
{
Color binarycol = B.GetPixel(i, j);
if (binarycol.R == 0 && binarycol.G == 0 && binarycol.B == 0)//black
arr[i, j] = 1;
else
arr[i, j] = 0;
Debug.Write(arr[i, j]);
}
Debug.WriteLine(" ");
}
}

זה הזימון :


private void comp_btn_Click(object sender, EventArgs e)
{

Bitmap comp = new Bitmap(pb_grayscale.Image);
imageToArray(comp); \\עד כאן עובד בסדר..
int numberofobjects = countObjects(arr);
Debug.WriteLine("number of objects is:" + numberofobjects);

}

countObjects

זה פעולה שמחשבת את מספר העצמים בתמונה ..

השגיאה שמתקבלת היא:

The name 'arr' does not exist in the current context

פורסם

מאיפה הבאת את המשתנה arr? הוא לא קיים ב comp_btn_Click.

אתה צריך שהפונקציה imageToArray תחזיר את אותו המערך שייצרת, ואז בזימון שלך ליצור משתנה חדש ולהשתמש בו.

הינה הקוד: http://www.codetrunk.com/m98fc98c

פורסם
  • מחבר

תודה רבה!

חשבתי על זה אבל לא ידעתי שאפשר להחזיר ערך של מערך ,

הייתי בטוחה שאם עושים שינוי במערך הוא תקף גם בתוכנית הראשית

(ככה לימדו אותנו בבית ספר, בכל אופן)

ואה כן ,אני בת ..(:

פורסם

המערך שלך הוא בדיוק כמו כל משתנה אחר (מחרוזת, מספר..וכו') - ולכן יש לו את אותן תכונות כמו לכל משתנה, כלומר כל מה שמוגדר בטווח של פונקציה ספציפית נשאר בתוכה ולא זמין לשאר התוכנית.

וכדאי שתגדירי את זה בפרופיל כדי שלא נטעה שוב :P

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים