我有一个用于OCR目的的字典来存储模式图像。我从字典中获取这些位图并将它们与我从图像中裁剪出来的位图进行比较,如果它们匹配,则抓取键(OCR部分已完成)。
问题在于这里出现了。一个键应该由多个不同的位图(即值)表示。如何向字典中添加多个位图以表示相同的键?
下面是我使用字典的方法:
现在,为了获取图片和值,我按照以下步骤进行:
问题在于这里出现了。一个键应该由多个不同的位图(即值)表示。如何向字典中添加多个位图以表示相同的键?
下面是我使用字典的方法:
Dictionary<string, Bitmap> lookup = new Dictionary<string, Bitmap>();
lookup.Add("A", new Bitmap(@"C:\08\letters\1\a1.bmp", true));
lookup.Add("A", new Bitmap(@"C:\08\letters\1\a2.bmp", true)); // Error will be here, because key A already exists for one Bitmap value.
lookup.Add("a", new Bitmap(@"C:\08\letters\1\aa1.bmp", true));
lookup.Add("B", new Bitmap(@"C:\08\letters\1\b1.bmp", true));
现在,为了获取图片和值,我按照以下步骤进行:
var target = lookup.ToList();
bitmap b1 = target[j].Value; //grab value
//if value = cropped bitmap => proceed
string key = target[j].Key; //grab key
根据您的解决方案,这个过程将如何改变?
P.s. 我听说过“System.Linq.Lookup(Of TKey, TElement)”,但以前从未使用过。这个“lookup”能帮我解决我的问题吗,还是它是一个完全不同的工具?谷歌对此也不了解,所以欢迎提供示例。
请注意,我只在程序启动时加载字典一次,因此添加速度有多快并不重要。另一方面,Lookup是我最担心的问题。 我有两个字典中的120个元素,根据这篇文章http://www.dotnetperls.com/dictionary-time - 在列表中进行查找比在字典中慢得多..
无论如何,我将采取一些措施来测试下面建议的列表解决方案与我现在拥有的字典解决方案相比较,并稍后告诉结果,可能是今晚。