我有一个C++二值化例程,我用于以后的OCR操作.但是我发现它产生了不必要的文本倾斜.寻找替代方案我发现GPUImage具有很高的价值,它解决了倾斜的问题.
我正在使用这样的GPUImage代码在应用OCR之前对输入图像进行二值化.
但是,阈值不包括我得到的图像范围.查看输入图像中的两个样本:


我不能用相同的阈值处理两者.低价值似乎随后很好,第一个价值更高.
第二个图像似乎特别复杂,因为无论我为阈值设置了什么值,我都不会将所有字符都正确地二进制化.另一方面,我的C++二值化例程似乎做得对,但我没有太多的见解可以像GPUImage中的简单阈值那样进行实验.
我该怎么处理?
更新:
我尝试使用GPUImageAverageLuminanceThresholdFilter默认乘数= 1.它适用于第一张图像,但第二张图像仍然是问题.
二值化的一些更多样化的输入:


更新II:
经过布拉德的这个回答后,尝试过GPUImageAdaptiveThresholdFilter(也包含了GPUImagePicture,因为之前我只在UIImage上应用它).
有了这个,我得到了二次图像二值化完美.然而,当我设置模糊大小为3.0时,第一个似乎在二值化后有很多噪音.OCR导致添加额外字符.使用较低的模糊大小值,第二个图像会失去精度.
这里是:
+(UIImage *)binarize : (UIImage *) sourceImage
{
UIImage * grayScaledImg = [self toGrayscale:sourceImage];
GPUImagePicture *imageSource = [[GPUImagePicture alloc] initWithImage:grayScaledImg];
GPUImageAdaptiveThresholdFilter *stillImageFilter = [[GPUImageAdaptiveThresholdFilter alloc] init];
stillImageFilter.blurSize = 3.0;
[imageSource addTarget:stillImageFilter];
[imageSource processImage];
UIImage *imageWithAppliedThreshold = [stillImageFilter imageFromCurrentlyProcessedOutput];
// UIImage *destImage = [thresholdFilter imageByFilteringImage:grayScaledImg];
return imageWithAppliedThreshold;
}
Run Code Online (Sandbox Code Playgroud) 这是我通过Tesseract引擎进行数字识别的iOS OCR代码:
Tesseract* tesseract = [[Tesseract alloc] initWithDataPath:@"tessdata" language:@"eng"];
//set the tesseract variables
[tesseract setVariableValue:@"0123456789" forKey:@"tessedit_char_whitelist"];
NSString * temp = @"7";
[tesseract setVariableValue:temp forKey:@"tessedit_pageseg_mode"];
[tesseract setImage:argImage];
[tesseract recognize];
m_convertedText = [[tesseract recognizedText] copy];
Run Code Online (Sandbox Code Playgroud)
使用上面,我得到一些正确的图像.但是有时我会得到5而不是8,6而不是5等等.我的输入图像非常完美 - 二值化后的纯黑色和白色.
我还缺少其他任何Tesseract选项吗?我看到有600多个选项和非常稀疏的文档.
我能找到的最好的是这个网站列出了所有选项,但对于OCR初学者来说还不是很清楚.
如果有人通过使用tesseract的数字OCR达到了100%的准确率,那将非常有帮助.
我有以下视图控制器层次结构:
在VC1中,我这样做:
[self.navigationController pushViewController:TBC1 animated:YES];
Run Code Online (Sandbox Code Playgroud)
这正确地打开了标签栏控制器,TVC1成为焦点.
TVC1在其导航栏中显示后退按钮(以编程方式从VC1代码创建),这将使我获得VC1,这是预期的.
但是,从TVC1开始,我需要再向TVC2导航一次.我正在尝试为TVC1导航栏添加右键,但它没有显示出来.
这是我在TVC1中使用的代码(rightButton是TVC1的UIButton类型属性):
self.rightButton = [[UIBarButtonItem alloc]
initWithBarButtonSystemItem: UIBarButtonSystemItemAdd
target: self
action: @selector(MySelector:)];
self.rightButton.style = UIBarButtonItemStyleBordered;
self.rightButton.title = @"";
self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects: self.rightButton, nil];
Run Code Online (Sandbox Code Playgroud)
(指定空白标题和样式只是为了确保这是导致这个的问题,我实际上并不需要这些值)
MySelector在TVC1.h中声明为:
- (void) MySelector:(id)sender;
Run Code Online (Sandbox Code Playgroud)
而且它也得到了适当的实施.
但上面的rightButton不会显示在TVC1导航栏中.
我错过了什么?我怀疑它与VC1和TVC1之间的TBC1(标签栏),并以某种方式重置导航属性.
但后来我争辩说我在TVC1上看到了导航栏,而左边的按钮则指向VC1.我在TBC1中检查过,self.navigationItem.rightBarButtonItems里面有一个对象,其中肯定是我正在添加的rightButton.
我哪里错了?
注意:以上内容适用于所有iOS 5.0,5.1和6.0模拟器.
我知道之前已经问过这个问题了,我已经采用了几种方法,但是它们不起作用.
以下是我已经尝试过的:
NSString *newStr = [NSString stringWithUTF8String:[responseData bytes]];
NSString *newStr = [NSString stringWithFormat:@"%.*s", [responseData length], [responseData bytes]];
Run Code Online (Sandbox Code Playgroud)
它们都不起作用.在第一种情况下,它用null填充newStr.在第二,它填充垃圾字符.我从调试器日志(po responseData)知道我得到了有效的响应,就像bbbbbb 00 bbbbbb.[服务器将它们作为字节数组发送]
该怎么办?
编辑:我从http请求响应中接收此数据 - 使用ASIHTTPRequest库,以防任何人可以在该行上提供帮助.
一个类位于片段束中。
这个类可以覆盖或扩展同名类的主机包吗?
Bundle-SymbolicName: example
Bundle-SymbolicName: example.fragment
Fragment-Host: example;
Run Code Online (Sandbox Code Playgroud)
谁能给我一些 Fragment 捆绑示例?
谢谢!
在我的应用程序中,我有两个地址UITextfields使用地址文本填充.我想要这种行为:
我相信这是mkmapview的一个非常直接的用例.但是找不到任何已经完成的例子.我在UIKit中遗漏了一些非常明显的东西吗?
非常感谢您的帮助....
编辑:
我读了Apple的文档,我找到了许多指向这个问题的解决方案.但是,所有这些似乎都假设MKPinAnnotationView(或MKAnnotationView)被覆盖.
有必要吗?如果是的话,除了拖动之外,我需要在子类中提供多少?
我是iphone应用程序以及此论坛的新手.
我想为我的UIView设置一个应该覆盖整个iPhone屏幕的背景纹理.我目前在这个视图上有控件.稍后,我希望我的所有控件都是透明的,因此用户必须能够使用控件,但除了文本外不能看到任何内容.
这是我尝试过的:
创建了一个UIView派生视图 - 简单的背景颜色,没有图像放置我的控件 - UIButtons,标签编程所有这些正确反映我的游戏逻辑
现在我改变了主意.我认为为我的视图和控件提供背景纹理要好得多.
1)我尝试了以下内容:添加背景图像在Interface Builder中, 但这涵盖了我的UI控件.
2)通过界面构建器,我尝试将纹理图像拖放到我的视图上(反过来,可能会创建一个带有背景图像=我的纹理的UIImageview).但那又隐藏了我过去的每一件作品.然后我开始玩alpha值(0.1,0.8等) - 它给了我一些结果,但我不再能够设计我的控件了.我也无法在运行时单击(=触摸)它们.
请给我一个方法,不会破坏我的工作到目前为止(我讨厌重做我的控件的所有插座接线),但仍然允许我实现我的目标.
如果我问过太愚蠢的事情,或者搜索不够,请原谅我.这是我的第一个问题,很乐意尝试任何有用的解决方案!
非常感谢!
我要求在iPhone导航栏中显示待处理通知的数量.外观应该与通知徽章的外观相似 - 但这些不是APNS通知.它们是从具有类似目的的私有服务器发送的.
我尝试UIBarButtonItem在我的位置添加一个右/左按钮(),UINavigationbar但它看起来外观很僵硬.我无法设置其宽度,字体等.请参阅我的代码:
self.notifButton = [[UIBarButtonItem alloc] initWithTitle:@"0" style:
UIBarButtonItemStyleBordered target:self action:@selector(TouchNotif)];
NSMutableArray *items = [[NSMutableArray alloc] init];
[items addObject:self.notifButton];
self.navigationItem.rightBarButtonItems = items;
Run Code Online (Sandbox Code Playgroud)
由于其他2项也添加到items数组中,因此navbar混乱.他们的字体,宽度等我无法玩,或者我不知道应该如何创建它们.
我的问题:
1)在导航栏右侧区域中容纳至少3个项目的正确方法是什么?我问这个是因为我没有找到一种方法来玩UIButtons我使用的宽度和字体.
2)如果我想为我的通知按钮设置自定义外观(就像通知徽章一样) - 是否有任何指示我如何制作它?使用哪种控件,如何设置其允许的框架和字体UINavigationBar?
请帮忙.
基本上我的代码大量使用[UIImage imageNamed]默认情况下从应用程序包中提取图像.
现在我希望从Documents(或库或其他)深处的目录中返回图像 - 而不是主包.由于有很多imageNamed调用实例,我正在考虑为此目的扩展(读取替换)UIImage ImageNamed实现.
我已经完成了这个但是不能完全弥补我应该做什么,什么是最好的:
我也不知道是否需要照顾@ 2x图像.我目前的捆绑包包括一堆,我想我的实现也必须要处理它.但不确定如何.
我对 SPARQL 很陌生,并且对它现有的多种语法标准感到困惑。我正在努力使用以下查询从 DBpedia 获取唯一数据:
SELECT DISTINCT ?Museum, ?name, ?abstract, ?thumbnail, ?latitude,
?longitude, ?photoCollection, ?website, ?homepage, ?wikilink
WHERE {
?Museum a dbpedia-owl:Museum ;
dbpprop:name ?name ;
dbpedia-owl:abstract ?abstract ;
dbpedia-owl:thumbnail ?thumbnail ;
geo:lat ?latitude ;
geo:long ?longitude ;
dbpprop:hasPhotoCollection ?photoCollection ;
dbpprop:website ?website ;
foaf:homepage ?homepage ;
foaf:isPrimaryTopicOf ?wikilink .
FILTER(langMatches(lang(?abstract),"EN"))
FILTER (langMatches(lang(?name),"EN"))
}
LIMIT 20
Run Code Online (Sandbox Code Playgroud)
因为任何人都可以看到,针对这些项目Geffrye_Museum,并Institute_for_Museum_Research重复了结果,因为Institute_for_Museum_Research有它的名字两个不同的值,并 Geffrye_Museum有两个经度值。在这两种重复情况下,我希望丢弃第二个值;即,Geffrye_Museum经度值-0.0762194必须被忽略,而Institute_for_Museum_Research名称值"Institut für Museumsforschung"@en必须被忽略。
请注意,我已经对我想要的字段应用过滤,这只是 DBpedia 中我想在查询级别本身处理的大量数据。那么当同一列有多个值时,如何让 …
我有非消费品购买,并希望与Apple托管.
它就像一本书,包含图像和JSON管理.我该如何上传?
itunesconnect in-app-purchase ios application-loader iap-hosted-content
我知道Apple警告不要使用它.但鉴于他们的推理,结果远非相关和预期.
这是我的调试输出 - 代码中的结果没有区别 - 下面只是为了简洁:
(lldb) po [@"Hello" isKindOfClass:[NSMutableString class]]
true => A mutable string?
(lldb) po [[@"Hello" mutableCopy] isKindOfClass:[NSMutableString class]]
0x00000001019f3201 => What's that?
(lldb) po [[@"Hello" mutableCopy] isMemberOfClass:[NSMutableString class]]
0x000000010214e400 => What's that?
(lldb) po [@"Hello" isMemberOfClass:[NSMutableString class]]
false => Once again?
Run Code Online (Sandbox Code Playgroud)
除此之外,我删除了所有字符串文字代码并测试了以下内容:
NSMutableString * m = [[NSMutableString alloc] initWithString:@"Hello"];
bool b = [m isKindOfClass:[NSMutableString class]];
NSLog(@"%d", b); --> 1 Expected.
b = [m isKindOfClass:[NSString class]];
NSLog(@"%d", b); --> 1 Expected.
b = [m isMemberOfClass:[NSString …Run Code Online (Sandbox Code Playgroud)