我正在做一些简单的OCR车牌识别系统.我正在使用HaarCascades找到车牌,然后我需要将这个盘子标准化,将其放入我的OCR模块中.我正在使用填充物找到汽车板的主要轮廓,然后我执行霍夫变换,找到汽车板的上下边界:


这是代码的一部分,我执行Hough变换^
HoughLinesP(canny_img, lines, 1, CV_PI/180, 80, 80, 30 );
for ( size_t i = 0; i < lines.size(); i++ ) {
line (output, Point(lines[i][0], lines[i][3]), Point(lines[i][4], lines[i][5]), Scalar(0,0,255), 1, 8 );
}
Run Code Online (Sandbox Code Playgroud)
现在我需要沿着这两条线切割和旋转这张照片.我怎样才能做到这一点?我明白我需要使用点Point(lines [i] [0]).. Point(第i行),但是我应该用它们做什么?
所以基本上,我需要得到类似的东西:


所以在第一步我只需要削减上下边界.
我想创建附件视图,放置在输入附件视图下,通过键盘,如Skype App或Viber:
我已经在这里问过这样的问题了,但是这个问题的建议解决方案并不那么优雅,因为当我将滚动视图拖到顶部时,我希望我的附件UIView向下移动键盘(我使用UIScrollViewKeyboardDismissModeInteractive).
所以我创建了一个函数,找出视图,键盘和我的自定义输入附件视图放在哪里:
func findKeyboardView() -> UIView? {
var result: UIView? = nil
let windows = UIApplication.sharedApplication().windows
for window in windows {
if window.description.hasPrefix("<UITextEffectsWindow") {
for subview in window.subviews {
if subview.description.hasPrefix("<UIInputSetContainerView") {
for sv in subview.subviews {
if sv.description.hasPrefix("<UIInputSetHostView") {
result = sv as? UIView
break
}
}
break
}
}
break
}
}
return result
}
Run Code Online (Sandbox Code Playgroud)
之后,我添加了我的自定义UIView并创建了一些约束:
func createAttachView() {
attach = MessageChatAttachmentsView(frame: CGRectZero)
let newView = findKeyboardView()
newView!.addSubview(attach!)
newView!.addConstraint(NSLayoutConstraint(item: accessoryView, attribute: .Bottom, …Run Code Online (Sandbox Code Playgroud)