예제 #1
0
파일: ImageForm.cs 프로젝트: Xaprice/XView
        //设置图像通道的偏移量
        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;
        }
예제 #2
0
파일: ImageForm.cs 프로젝트: Xaprice/XView
 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);
     }
 }