Ich versuche, zwei Bildparameter zu verwenden, um mein Bild im Projekt zu steuern. Das Problem ist, dass wenn ich Bild nicht zuweisen kann, nach dem Anwenden von öffentlichen Void-Funktionen in Emgu CV. Dies ist mein Code:EMGU CV neu zugeordnetes Bild
public static class Global
{
public static Image<Gray, byte> xrayPic;
public static Image<Gray, byte> rootPic;
}
private void takePhotoBtn_Click(object sender, EventArgs e)
{
Image<Bgr, Byte> ImageSrc = new Image<Bgr, Byte>(_subPath);
Image<Gray, Byte> GrayImage = ImageSrc.Convert<Gray, byte>();
Image<Gray, Byte> MedianImage = GrayImage.SmoothMedian(5);
Global.xrayPic = MedianImage;
Global.rootPic = MedianImage;
Global.xrayPic.Save(_subPath);
imgBox.Image.Dispose();
imgBox.Image = Global.xrayPic.Bitmap;
}
private void checkHistogram_CheckedChanged(object sender, EventArgs e)
{
if(checkHistogram.Checked)
{
Image<Gray, byte> tmpPic = Global.xrayPic;
tmpPic._EqualizeHist();
// Global.xrayPic._EqualizeHist();
imgBox.Image.Dispose();
imgBox.Image = tmpPic.Bitmap;
}
if(checkHistogram.Checked == false)
{
Global.xrayPic = Global.rootPic;
imgBox.Image.Dispose();
imgBox.Image = Global.xrayPic.Bitmap;
}
}
Als ich in den Checkbox die Funktion __EqualizeHist() anzuwenden, es angewandte Funktion automatisch erstes Bild zu dem zweiten Bild (wie angehängtes Bild) einzustellen. Allerdings, wenn ich deaktivieren, es nicht zu meinem root_Pic (zweites Bild zum ersten Bild) zurückkehrt This is the demonstration for my code
Es hat funktioniert! Ich danke dir sehr! –
mein Zweifel ist warum? Was ist der Unterschied zwischen dem Zuweisen eines Wertes von einer Bildvariablen zu einer anderen und dem Klonen der ersten in die zweite? –
@PabloGonzalez Weisen Sie einem Wert direkt den Wert zu, statt dessen kopiert er nur seine Adresse. Deshalb brauchte er die tiefe Kopie. Wenn Sie immer noch Zweifel haben, dann studieren Sie das Konzept der flachen und tiefen Kopie. –