0
我尝试使用两个图像参数来控制项目中的图像。问题是,当我在Emgu CV中应用任何公共无效函数后无法重新分配图像时。 这是我的代码:EMGU CV重新分配图像
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;
}
}
当我检查到的复选框以应用功能__EqualizeHist(),它自动应用功能以调整第一PIC到第二PIC(如附加的图像)。然而,当我取消,但不回我的root_Pic(第二张图先PIC) This is the demonstration for my code
它的工作!非常感谢! –
我的疑问是为什么?将一个图像变量的值分配给另一个图像变量并将第一个图像克隆到第二个图像变量之间有什么区别? –
@PabloGonzalez直接赋值并不实际赋值为“Value”,而只是复制其地址。这就是为什么他需要深层复制。如果你仍然怀疑,那么研究浅层和深层复制的概念。 –