CameraUsage
Created by Zhifeng Chen on 2020/8/2.
Copyright 2020 Zhifeng Chen. A11 rights reserved.
import UIKit
class ViewController: UTViewController,UINavigationControllerDelegate UIImagePickerControllerDelegatel
@IBOutlet weak var carImageView: UITmageView!
//显示识别出来的车辆名称型号
@IBOutlet weak var carName: UILabel!
@IBOutlet weak var carDetails: UILabel!
IBAction func onLibrary(sender: UIButton)
// 设置相册拍照的控制器
let vc = UIImagePickerController()
vc,sourceType =.photoLibrary
vc.allowsEditing = true
vc.delegate = self
present(vc, animated: true)
一
IBAction func onCamera( sender: UIButton)
let vc = UIImagePickerController()
vc.sourceType = .camera
vc.allowsEditing = true
vc.delegate = self
present(vc, animated: true)
func imagepickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.Infokey: Any])( picker.dismiss(animated:true)
guard let image = info[.editedImage]as? UIImage else
return
carImageView.image - image
let access_token =get_baidu_token()
if access_token ==""
return
else
get_car_type(access_token:access_token)
func get_car_type(access_token:String)i
let image = carImageView.image
guard let data = image!.jpegData(compressionQuality:0.5) else l return
let data base64 str = data.base64Encodedstring()
let carT'ype_host = "https://aip.baidubce.com/rest/2.0/image-classify/vl/car" +"?access token="+"\(access_token)"
if let url - URL(string:carType_host)(
var request = URLRequest(url:url)
request.setValue("application/x-www-form-urlenooded",forHTTPHeaderField:"Content-Type")
request.httpMethod="PosT"
let cs = NSCharacterSet(charactersIn:"/=+号").invertedlet image_urlEncode = data_base64_str.addingPercentEncoding(withAllowedCharacters:cs)
let postString ="image=\(image_ur)Encode!)&top_num-5&balke_nume1'// 将字符串转为 UTF8 类型的数据
request.httpBody=poststring.data(using:.utf8)
//URLSession 调用
URLSession.shared.dataTask(with:request)((data, response error) in
if error = nil
print("error")
)
elge f
if let json = try? JSONSezialization,jsonObject (with:
datal, options:.allowFragments)as?String: Any] (
et result = json["result"] as! ArrayeDictionarye
String,Any>
let name = result 0]["name"l as! String
var description="非车类”
if name !="非车类”
let baike info -result [0] ("baike_info"] as!
Dictionary<String,String>
if lct details = baike_info[”description"
description -details
)
elsei
description=”百度百科无此车资料
一
DispatchQueue.main.async l
self.carDetails.text = description
self.carName.text = name
.resume ()
let API_Key ="EIpAlhdD7i5152EsiNqpU0F1"
let Secret Key="p8EZWg4aqjDOxABmKvBYSNyZ1YzGFqbm"
let token host="https://aip.baidubce.com/oauth/2.0/token?granttype=client_credentials&client id=\(API Key)&client_secret=\(Secret_Key)"
var access token = ""
let semaphore: DispatchSemaphore = DispatchSemaphore(value: 0)
if let url = URL(string: token_host)
URLSession.shared.dataTask(with:url)((data, response, error) in if error l=nil {
print("network error")
}
else {
if let ison = trv? JSONSerialization.isonObject(with:
data!, options:.allowFraaments) as?[String:Any] i
access token =json["access_token"] as! String
)
一
//发出信号量
semaphore.signal()
.resume()
)
else {
print("url error")
}
semaphore,wait()
return access_token
}
}