//设置图像通道的偏移量 private void ShiftColorChannel(ImagePropType type, double value) { if (value == 0) { return; } Image <Bgr, Byte> newImg = this.Image.Clone(); Image <Gray, Byte>[] splitedImgsNew = newImg.Split(); //BGR if (type == ImagePropType.BLUE_CHANNEL) { //splitedImgsNew[0] = originalRGBChannels[0].Mul(para.Value); splitedImgsNew[0] = originalRGBChannels[0].Add(new Gray(value)); } else if (type == ImagePropType.GREEN_CHANNEL) { //splitedImgsNew[1] = originalRGBChannels[1].Mul(para.Value); splitedImgsNew[1] = originalRGBChannels[1].Add(new Gray(value)); } else if (type == ImagePropType.RED_CHANNEL) { //splitedImgsNew[2] = originalRGBChannels[2].Mul(para.Value); splitedImgsNew[2] = originalRGBChannels[2].Add(new Gray(value)); } else { logger.Error("color channel not defined!"); return; } CvInvoke.cvMerge(splitedImgsNew[0].Ptr, splitedImgsNew[1].Ptr, splitedImgsNew[2].Ptr, IntPtr.Zero, newImg.Ptr); _imageBox.Image = newImg; }
public void SetImageProps(ImagePropType type, double value) { try { if (type == ImagePropType.RED_CHANNEL || type == ImagePropType.GREEN_CHANNEL || type == ImagePropType.BLUE_CHANNEL)//设置颜色通道 { ShiftColorChannel(type, value); } else if (type == ImagePropType.GAMMA) { } } catch (System.Exception ex) { logger.Error(ex.Message); } }