CIPerspectiveCorrection Filter kullanıyorum ve benim sorunum, döndürülen resim sonuçlarının yansıtılmış, baş aşağı ve perspektif düzeltmesi için kullanılan noktaların yanlış eksene veya eksen yönüne referans olarak görünmesiydi .CIPerspectiveCorrection filtresi döndürülen görüntüyü döndürür ve ters çevrilmiş
Konuyu izole etmek için 1024 x 1024 boyutunda bir test görüntüsü ile çalışıyorum ve mükemmel bir dikdörtgen alanda geçiyorum. Hala dikey ve yatay olarak çevrilmiş resimlerle bitiyorum. İşte
bir görüntü verilmiş ve puan set kırpılmış bir CIImage örneği döndüren benim fonksiyonudur:private func _getCroppedImageWithImage(image:CIImage, topLeft:CGPoint, topRight:CGPoint, botLeft:CGPoint, botRight:CGPoint) -> CIImage {
var rectCoords = NSMutableDictionary(capacity: 4)
rectCoords["inputTopLeft"] = CIVector(CGPoint:topLeft)
rectCoords["inputTopRight"] = CIVector(CGPoint:topRight)
rectCoords["inputBottomLeft"] = CIVector(CGPoint:botLeft)
rectCoords["inputBottomRight"] = CIVector(CGPoint:botRight)
return image.imageByApplyingFilter("CIPerspectiveCorrection", withInputParameters: rectCoords)
}
Ve burada bu işlevi arıyorum nerede:
func testCrop() {
let ciInputImage = CIImage(image:UIImage(named:"test-pattern.jpg")!)
println("source image is \(ciInputImage)") //<CIImage: 0x170212290 extent [0 0 1024 1024]>
let ptBotLeft = CGPointMake(32.0,992.0)
let ptBotRight = CGPointMake(992.0,992.0)
let ptTopRight = CGPointMake(992.0,32.0)
let ptTopLeft = CGPointMake(32.0,32.0)
let croppedImage = _getCroppedImageWithImage(ciInputImage, topLeft: ptTopLeft, topRight: ptTopRight, botLeft: ptBotLeft, botRight: ptBotRight)
println("cropped image \(croppedImage)") //<CIImage: 0x174204a60 extent [0 0 960 960]>
let croppedImageCG = CIContext(options: nil).createCGImage(croppedImage, fromRect: croppedImage.extent())
let imageVC = ImageViewController(image: UIImage(CGImage: croppedImageCG))
presentViewController(imageVC, animated: true, completion: nil)
}
kimse sorunlarla karşılaştı Has daha önce böyle mi yaptın? İşte
kaynak imajınıVe burada
fonk cartesianForPoint (noktası: CGPoint, kapsamı: CGRect) -> CGPoint { dönüş CGPoint (x: point.x, y: extent.height - point.y) } – nwales
Bunun için kadar teşekkür olabilir son işlev! Sorunun ne olduğunu biliyordum ama projemde çok fazla zaman geçirdim, nasıl dönüştüreceğimi anlayamadım! – Fengson
@nwales Teşekkürler! – Zeotyn