我正在尝试使用新的 Apple Vision API 从图像中检测条形码并返回其详细信息。我已成功检测到二维码并使用CIDetector. 但是我不能为一维条形码做这项工作。这是一个示例结果:
import UIKit
import Vision
class BarcodeDetector {
func recognizeBarcode(for source: UIImage,
complete: @escaping (UIImage) -> Void) {
var resultImage = source
let detectBarcodeRequest = VNDetectBarcodesRequest { (request, error) in
if error == nil {
if let results = request.results as? [VNBarcodeObservation] {
print("Number of Barcodes found: \(results.count)")
if results.count == 0 { print("\r") }
var barcodeBoundingRects = [CGRect]()
for barcode in results {
barcodeBoundingRects.append(barcode.boundingBox)
let barcodeType = String(barcode.symbology.rawValue)?.replacingOccurrences(of: "VNBarcodeSymbology", with: "")
print("-Barcode …Run Code Online (Sandbox Code Playgroud) My Object符合新的Swift 4 Codeable协议.如何保存这些对象的数组UserDefaults?
struct MyObject: Codeable {
var name: String
var something: [String]
}
myObjectsArray = [MyObject]() // filled with objects
UserDefaults.standard.set(myObjectsArray, forKey: "user_filters")
Run Code Online (Sandbox Code Playgroud)
错误
由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'尝试插入非属性列表对象
JSONEncoder方法func encode<T>(_ value: T) throws -> Data where T : Encodable是可以抛出的。
我想知道为什么它是可抛出的:如果要编码的值不符合Encodable,则不应通过编译器,因此在运行时不应发生错误。
我正在使用Vision框架来处理图像。我正在使用的函数运行良好,在完成处理程序中不返回任何错误,但结果为空。
这是我的功能:
func recognizeImage() {
let request = VNDetectFaceRectanglesRequest { (res: VNRequest, error: Error?) in
print("Reuslt : \(res.accessibilityActivationPoint)")
}
if let cgContet = image.image.cgImage {
let handler = VNImageRequestHandler(cgImage: cgContet)
try? handler.perform([request])
}
}
Run Code Online (Sandbox Code Playgroud)
函数的结果是:
Reuslt : (0.0, 0.0)
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用新 Vision API的图像对齐分析部分,但我正在努力初始化 VNTranslationalImageRegistrationRequest。我的代码如下:
import UIKit
import Vision
class ImageTranslation {
var sourceImage: UIImage!
lazy var imageTranslationRequest: VNTranslationalImageRegistrationRequest = {
//This line fails let translationRequest = VNTranslationalImageRegistrationRequest(targetedCGImage: sourceImage.cgImage, completionHandler: self.handleImageTranslationRequest)
return translationRequest
}()
func handleImageTranslationRequest(request: VNRequest, error: Error?) {
guard let observations = request.results as? [VNImageTranslationAlignmentObservation]
else { print("unexpected result type from VNDetectRectanglesRequest")
return
}
guard observations.first != nil else {
return
}
DispatchQueue.main.async {
observations.forEach { observation in
let transform = observation.alignmentTransform
print(transform)
}
}
}
} …Run Code Online (Sandbox Code Playgroud) 假设我有一张桌子
---------Image-------------
imageFile (File) | thumbnail (File) | Post (a pointer to Post)
Run Code Online (Sandbox Code Playgroud)
知道如何编写云代码以在另一列中获取该图像的较小版本吗?
例如,如果用户上传了(2000x3500 像素)图像,Parse 会将其保存在 imageFile 列中,并将其缩略图保存在另一列中
谢谢