这篇博客讲述如何使用与AddCommand结合ColorSeparateCommand从图像去除一个特定的颜色。示例中的代码块能让黑色的表单以及文字从图像中删除,只留下图像的彩色文本。随后可用于屏蔽文本或用于OCR目的。
注意ColorSeparateCommand产生输出RasterImage四页,依次为青、洋红、黄、黑。通过调用AddCommand除去最后(黑色)一页,只有其他几个颜色被添加,这个也可以被修改为不同的组合以保持或删除特定颜色。由于ColorSeparateCommand根据强度返回平面,因此生成的图像为白色,因此在保存输出之前使用InvertCommand创建黑白反转图像。
这里是使用的一些重要的RasterCommands的链接。
ColorSeparateCommand
https://www.leadtools.com/help/leadtools/v19/dh/pc/leadtools.imageprocessing.color~leadtools.imageprocessing.color.addcommand.html
private static void DoColorPlaneSeparation(string input) { string outPath = Path.GetDirectoryName(input); string outFile = Path.GetFileName(input); using (RasterCodecs codecs = new RasterCodecs()) { RasterImage image = codecs.Load(input); ColorSeparateCommand csc = new ColorSeparateCommand(ColorSeparateCommandType.Cmyk); csc.Run(image); csc.DestinationImage.RemovePageAt(4); AddCommand ac = new AddCommand(AddCommandType.Add); ac.Run(csc.DestinationImage); InvertCommand ic = new InvertCommand(); ic.Run(ac.DestinationImage); AutoBinarizeCommand abc = new AutoBinarizeCommand(); abc.Run(ac.DestinationImage); string outputFile = Path.Combine(outPath, "output_" + outFile); codecs.Save(ac.DestinationImage, outputFile, image.OriginalFormat, image.BitsPerPixel); } }
下面是处理前后的图像对比