Я пытаюсь получить угловые точки из неподвижного изображения, используя GPUImageHarrisCornerDetectionFilter
.
Я посмотрел пример кода из проекта, я посмотрел документацию, и я просмотрел этот пост, который касается примерно того же: GPUImage Harris Corner Detection на существующем UIImage дает черный экран
Но я не могу заставить его работать - и мне трудно понять, как это должно работать с неподвижными изображениями.
То, что у меня на данный момент, таково:
func harrisCorners() -> [CGPoint] {
var points = [CGPoint]()
let stillImageSource: GPUImagePicture = GPUImagePicture(image: self.image)
let filter = GPUImageHarrisCornerDetectionFilter()
filter.cornersDetectedBlock = { (cornerArray:UnsafeMutablePointer<GLfloat>, cornersDetected:UInt, frameTime:CMTime) in
for index in 0..<Int(cornersDetected) {
points.append(CGPoint(x:CGFloat(cornerArray[index * 2]), y:CGFloat(cornerArray[(index * 2) + 1])))
}
}
filter.forceProcessingAtSize(self.image.size)
stillImageSource.addTarget(filter)
stillImageSource.processImage()
return points
}
Эта функция всегда возвращает []
, поэтому она явно не работает.
Интересная деталь - я скомпилировал проект FilterShowcaseSwift из примеров GPUImage, и фильтр не нашел очень четких углов, например, на листе бумаги на черном фоне.