
static void SimpleOCRCalculator(string filePath)
{
RasterCodecs codecs = new RasterCodecs();
RasterImage image = codecs.Load(filePath);
string[] calculations;
using (IOcrEngine engine = OcrEngineManager.CreateEngine(OcrEngineType.Advantage, false))
{
engine.Startup(null, null, null, null);
IOcrPage page = engine.CreatePage(image, OcrImageSharingMode.None);
page.AutoZone(null);
page.Recognize(null);
calculations = new string[page.Zones.Count];
for (int i = 0; i < page.Zones.Count; i++)
{
calculations[i] = page.GetText(i);
}
engine.Shutdown();
}
Dictionary<string, Action<double, double>> operands = new Dictionary<string, Action<double, double>>();
operands.Add("+", new Action<double, double>(delegate(double a, double b) { double ans = a + b; Console.WriteLine("{0} + {1} = {2}", a, b, ans); }));
operands.Add("-", new Action<double, double>(delegate(double a, double b) { double ans = a - b; Console.WriteLine("{0} - {1} = {2}", a, b, ans); }));
operands.Add("x", new Action<double, double>(delegate(double a, double b) { double ans = a * b; Console.WriteLine("{0} * {1} = {2}", a, b, ans); }));
operands.Add("/", new Action<double, double>(delegate(double a, double b) { double ans = a / b; Console.WriteLine("{0} / {1} = {2}", a, b, ans); }));
for (int i = 0; i < calculations.Length; i++)
{
string equation = Regex.Replace(calculations[i], @"\n|\r| ", "");
string[] ops = new string[] { "+", "-", "x", "/" };
for (int j = 0; j < ops.Length; j++)
{
int index = equation.IndexOf(ops[j]);
if (index > 0 && index < equation.Length)
{
string op1 = equation.Substring(0, index);
string op2 = equation.Substring(index + 1);
double arg1 = double.Parse(op1);
double arg2 = double.Parse(op2);
operands[ops[j]](arg1, arg2);
break;
}
}
}
codecs.Dispose();
image.Dispose();
}
[PresentationContext(DicomUidType.VideoPhotographicImageStorage, DicomUidType.ImplicitVRLittleEndian,
DicomUidType.JPEG2000,
DicomUidType.JPEG2000LosslessOnly,
DicomUidType.JPEGBaseline1,
DicomUidType.JPEGExtended2_4,
DicomUidType.ExplicitVRBigEndian,
DicomUidType.ExplicitVRLittleEndian,
DicomUidType.JPEGLosslessNonhier14,
DicomUidType.JPEGLosslessNonhier14B,
DicomUidType.Mpeg4AvcH264BdCompatibleHighProfileLevel_4_1,
DicomUidType.Mpeg4AvcH264HighProfileLevel4_1)]
[PresentationContext(DicomUidType.VideoPhotographicImageStorage, DicomUidType.ImplicitVRLittleEndian,
DicomUidType.JPEG2000,
DicomUidType.JPEG2000LosslessOnly,
DicomUidType.JPEGBaseline1,
DicomUidType.JPEGExtended2_4,
DicomUidType.ExplicitVRBigEndian,
DicomUidType.ExplicitVRLittleEndian,
DicomUidType.JPEGLosslessNonhier14,
DicomUidType.JPEGLosslessNonhier14B,
DicomUidType.Mpeg4AvcH264BdCompatibleHighProfileLevel_4_1,
DicomUidType.Mpeg4AvcH264HighProfileLevel4_1,
DicomUidType.MPEG2MainProfileHighLevel,
DicomUidType.MPEG2MainProfileMainLevel)]
试用、下载、了解更多产品信息请点击"咨询在线客服"
基于浏览器的客户端图像浏览器Prizm ActiveX Viewer在线订购专享8折!



如今手机应用市场越来越大,其中创新、独特的产品也越来越多。APP市场最好的地方就是无论是iTunes还是Google Play中,你都有平等的机会参与竞争和获得成功。这是一个公平的竞争环境,吸引着无数优质的开发商。专家们已经预测,APP市场在2020年将翻一番,价值可以达到101亿美元。
无论你是一个多优秀的开发者,在开始新的APP应用时也应该注意一些事情。在启动一个APP项目时你应该记住和经过几个重要的步骤来确保它能成功。

Xamarin Studio是跨平台移动开发(IDE)利器。Xamarin Studio是一个开发效率很高的移动开发工具,开发者可以轻松查看iOS、Android和OS X APIs,快速查询类型、方法和API功能,而且不会打乱你的思路。








DicomEngine.Startup();
using (DicomDataSet ds = new DicomDataSet())
{
//Load DICOM File
ds.Load(input, DicomDataSetLoadFlags.None);
//Initialize J2K Options
DicomJpeg2000Options options = ds.DefaultJpeg2000Options;
//Set Options
options.CompressionControl = DicomJpeg2000CompressionControl.Ratio;
options.CompressionRatio = 50;
//Add options to the dataset
ds.Jpeg2000Options = options;
//Change the transfer syntax to J22K
ds.ChangeTransferSyntax(DicomUidType.JPEG2000, 2, ChangeTransferSyntaxFlags.MinimizeJpegSize);
//Save Dicom file
ds.Save(dest, DicomDataSetSaveFlags.None);
//Shut down the DICOM engine
DicomEngine.Shutdown();
}试用、下载、了解更多产品信息请点击"咨询在线客服"
