paint-brush
ការចាប់ផ្តើមជាមួយនឹង Vision Framework របស់ Apple: ទស្សនៈរបស់អ្នកអភិវឌ្ឍន៍ ដោយ@threadmaster
ប្រវត្តិសាស្ត្រថ្មី។

ការចាប់ផ្តើមជាមួយនឹង Vision Framework របស់ Apple: ទស្សនៈរបស់អ្នកអភិវឌ្ឍន៍

ដោយ Boris Dobretsov5m2025/02/19
Read on Terminal Reader

យូរ​ពេក; អាន

Apple's Vision framework ត្រូវបានណែនាំនៅក្នុង iOS 11។ វាអនុញ្ញាតឱ្យអ្នកអភិវឌ្ឍន៍វិភាគមាតិកាដែលមើលឃើញ និងដំណើរការជាបន្តបន្ទាប់តាមតម្រូវការ។ នៅក្នុងអត្ថបទនេះ យើងនឹងពិនិត្យមើលសេណារីយ៉ូសំខាន់ៗនៃការប្រើប្រាស់ Vision ជាមួយនឹងឧទាហរណ៍កូដ។
featured image - ការចាប់ផ្តើមជាមួយនឹង Vision Framework របស់ Apple: ទស្សនៈរបស់អ្នកអភិវឌ្ឍន៍
Boris Dobretsov HackerNoon profile picture
0-item
1-item

ក្របខ័ណ្ឌ Vision ត្រូវបានណែនាំដោយ Apple ក្នុងឆ្នាំ 2017 នៅ WWDC ដែលជាផ្នែកមួយនៃប្រព័ន្ធប្រតិបត្តិការ iOS 11 ។ ការបើកដំណើរការរបស់វាបានសម្គាល់ចំណុចរបត់មួយក្នុងការវិវត្តន៍នៃចក្ខុវិស័យម៉ាស៊ីន និងការវិភាគរូបភាព ដោយផ្តល់ឱ្យអ្នកអភិវឌ្ឍន៍នូវឧបករណ៍ដើមដើម្បីវិភាគមាតិកាដែលមើលឃើញ និងដំណើរការជាបន្តបន្ទាប់តាមតម្រូវការ។


នៅឆ្នាំ ២០១៧ ចក្ខុវិស័យបានណែនាំ៖

  • ការទទួលស្គាល់អត្ថបទ
  • ការសម្គាល់មុខ
  • ការរកឃើញរាងចតុកោណ
  • ការស្គាល់លេខកូដ QR និងបាកូដ


ចាប់តាំងពីការបង្ហាញខ្លួនលើកដំបូង Apple បានបន្តពង្រឹងក្របខ័ណ្ឌ Vision ដោយធានាថាវាវិវឌ្ឍទៅតាមតម្រូវការទំនើប។ នៅចុងឆ្នាំ 2024 ជាមួយនឹងការចេញផ្សាយ iOS 18 ឥឡូវនេះ Vision ផ្តល់ជូន៖

  • ធ្វើឱ្យប្រសើរឡើងនូវភាពត្រឹមត្រូវនៃការទទួលស្គាល់អត្ថបទដោយមានការគាំទ្រសម្រាប់ភាសាមួយចំនួនធំ
  • ការរកឃើញមុខនិងលក្ខណៈពិសេសរបស់ពួកគេ។
  • សមត្ថភាពក្នុងការវិភាគចលនា
  • សមត្ថភាពក្នុងការទទួលស្គាល់ទីតាំង រួមទាំងទីតាំងដៃ និងចំណុចសំខាន់ៗនៃរាងកាយមនុស្ស
  • ការគាំទ្រសម្រាប់ការតាមដានវត្ថុនៅក្នុងវីដេអូ
  • ការធ្វើសមាហរណកម្មប្រសើរឡើងជាមួយ CoreML សម្រាប់ធ្វើការជាមួយម៉ូដែលការរៀនតាមម៉ាស៊ីនផ្ទាល់ខ្លួន
  • ការរួមបញ្ចូលយ៉ាងស៊ីជម្រៅជាមួយក្របខ័ណ្ឌដែលពាក់ព័ន្ធដូចជា AVKit, ARKit


ជាមួយនឹងការមកដល់នៃក្របខ័ណ្ឌ Vision អ្នកអភិវឌ្ឍន៍ទទួលបានសមត្ថភាពក្នុងការអនុវត្តភារកិច្ចវិភាគរូបភាព និងវីដេអូកម្រិតខ្ពស់ពីដើម ដោយមិនពឹងផ្អែកលើដំណោះស្រាយភាគីទីបី។ សមត្ថភាពទាំងនេះរួមមានការស្កែនឯកសារ សម្គាល់អត្ថបទ កំណត់អត្តសញ្ញាណមុខ និងទីតាំង រកឃើញរូបភាពស្ទួន និងដំណើរការស្វ័យប្រវត្តិកម្មផ្សេងៗដែលសម្រួលប្រតិបត្តិការអាជីវកម្ម។


នៅក្នុងអត្ថបទនេះ យើងនឹងពិនិត្យមើលសេណារីយ៉ូសំខាន់ៗនៃការប្រើប្រាស់ Vision ជាមួយនឹងឧទាហរណ៍កូដដែលនឹងជួយអ្នកឱ្យយល់ពីរបៀបធ្វើការជាមួយវា យល់ថាវាមិនពិបាកទេ ហើយចាប់ផ្តើមអនុវត្តវានៅក្នុងការអនុវត្តនៅក្នុងកម្មវិធីរបស់អ្នក។

សំណើរ VNR

Vision មាន VNRequest ថ្នាក់អរូបីដែលកំណត់រចនាសម្ព័ន្ធសំណើទិន្នន័យនៅក្នុង Vision ហើយថ្នាក់បន្តបន្ទាប់អនុវត្តសំណើជាក់លាក់ដើម្បីអនុវត្តកិច្ចការជាក់លាក់ជាមួយរូបភាព។


ថ្នាក់រងទាំងអស់ទទួលមរតកកម្មវិធីចាប់ផ្តើមពីថ្នាក់ VNRequest

 public init(completionHandler: VNRequestCompletionHandler? = nil)

ដែលត្រឡប់លទ្ធផលនៃការដំណើរការសំណើ។ វាចាំបាច់ក្នុងការបញ្ជាក់ឱ្យច្បាស់ថាលទ្ធផលនៃសំណើនឹងត្រូវបានបញ្ជូនត្រឡប់មកវិញក្នុងជួរដូចគ្នាដែលសំណើត្រូវបានផ្ញើ។


កន្លែងដែល VNRequestCompletionHandler គឺជាប្រភេទវាយអក្សរ។

 public typealias VNRequestCompletionHandler = (VNRequest, (any Error)?) -> Void

ដែលផ្តល់លទ្ធផល VNRequest ជាមួយនឹងលទ្ធផលនៃសំណើ ឬកំហុស ប្រសិនបើសំណើមិនត្រូវបានប្រតិបត្តិដោយសារបញ្ហាប្រព័ន្ធមួយចំនួន រូបភាពមិនត្រឹមត្រូវ។ល។


ថ្នាក់ VNRecognizeTextRequest ពីថ្នាក់ VNRequest អរូបីត្រូវបានរចនាឡើងដើម្បីដោះស្រាយសំណើការទទួលស្គាល់អត្ថបទក្នុងរូបភាព។


ឧទាហរណ៍នៃការអនុវត្តសំណើសម្រាប់ការទទួលស្គាល់អត្ថបទ៖

 import Vision import UIKit func recognizeText(from image: UIImage) { guard let cgImage = image.cgImage else { return } let request = VNRecognizeTextRequest { request, error in // 1 guard let observations = request.results as? [VNRecognizedTextObservation] else { return } // 2 for observation in observations { if let topCandidate = observation.topCandidates(1).first { print("Recognized text: \(topCandidate.string)") print("Text boundingBox: \(observation.boundingBox)") print("Accuracy: \(topCandidate.confidence)") } } } request.recognitionLevel = .accurate request.usesLanguageCorrection = true let handler = VNImageRequestHandler(cgImage: cgImage, options: [:]) // 3 try? handler.perform([request]) // 3 }


  1. បង្កើត VNRecognizeTextRequest សម្រាប់ការទទួលស្គាល់អត្ថបទ។


  2. ទទួលលទ្ធផលនៃសំណើការទទួលស្គាល់អត្ថបទជាអារេនៃវត្ថុ VNRecognizedTextObservation ។


វត្ថុ VNRrecognizedTextObservation មាន៖

  • អារេនៃអត្ថបទដែលទទួលស្គាល់ (V NRecognizedText().string )
  • ភាពត្រឹមត្រូវនៃការទទួលស្គាល់ ( VNRecognizedText()ទំនុកចិត្ត )
  • សំរបសំរួលនៃអត្ថបទដែលបានទទួលស្គាល់នៅលើរូបភាព ( VNRecognizedText()boundingBox )


  1. បង្កើតសំណើសម្រាប់ដំណើរការរូបភាព និងផ្ញើសំណើសម្រាប់ការទទួលស្គាល់អត្ថបទ។


  2. ឧទាហរណ៍៖ ការទទួលស្គាល់លេខអត្តសញ្ញាណពន្ធ និងលេខលិខិតឆ្លងដែន នៅពេលបង្កើត SDK ផ្ទាល់ខ្លួនរបស់អ្នកសម្រាប់ការទទួលស្គាល់ឯកសារ

VNDetectFaceRectanglesRequest

ថ្នាក់នេះរកឃើញមុខនៅក្នុងរូបភាពមួយ ហើយត្រឡប់កូអរដោនេរបស់ពួកគេ។


ឧទាហរណ៍នៃការអនុវត្តសំណើសម្គាល់មុខ៖

 import Vision import UIKit func detectFaces(from image: UIImage) { guard let cgImage = image.cgImage else { return } let request = VNDetectFaceRectanglesRequest { request, error in // 1 guard let results = request.results as? [VNFaceObservation] else { return } // 2 for face in results { print("Face detected: \(face.boundingBox)") } } let handler = VNImageRequestHandler(cgImage: cgImage, options: [:]) // 3 try? handler.perform([request]) // 3 }


  1. បង្កើត VNDetectFaceRectanglesRequest សម្រាប់ការសម្គាល់មុខនៅក្នុងរូបភាពមួយ។


  2. ទទួលលទ្ធផលនៃសំណើការទទួលស្គាល់អត្ថបទជាអារេនៃវត្ថុ VNFaceObservation


វត្ថុ VNFaceObservation មាន៖

  1. កូអរដោនេនៃមុខ VNFaceObservation().boundingBox ដែលទទួលស្គាល់។


  2. បង្កើតសំណើសម្រាប់ដំណើរការរូបភាព និងផ្ញើសំណើសម្រាប់ការសម្គាល់មុខ។


  3. ឧទាហរណ៍៖ នៅក្នុងធនាគារ មាន KYC onboarding ដែលអ្នកត្រូវថតរូបជាមួយលិខិតឆ្លងដែនរបស់អ្នក។ វិធីនេះ អ្នកអាចបញ្ជាក់បានថា នេះជាមុខមនុស្សពិត។


VNDetectBarcodesសំណើ

ថ្នាក់នេះស្គាល់ និងអានបាកូដ និងកូដ QR ពីរូបភាព។


ឧទាហរណ៍នៃការអនុវត្តសំណើសម្រាប់ការទទួលស្គាល់ និងអានលេខកូដ និង QR កូដ៖

 import Vision import UIKit func detectBarcodes(from image: UIImage) { guard let cgImage = image.cgImage else { return } let request = VNDetectBarcodesRequest { request, error in // 1 guard let results = request.results as? [VNBarcodeObservation] else { return } // 2 for qrcode in results { print("qr code was found: \(qrcode.payloadStringValue ?? "not data")") } } let handler = VNImageRequestHandler(cgImage: cgImage, options: [:]) // 3 try? handler.perform([request]) // 3 }


  1. បង្កើត VNDetectBarcodesRequest សម្រាប់ការទទួលស្គាល់។


  2. ទទួលបានលទ្ធផលនៃសំណើអារេវត្ថុ VNBarcodeObservation


វត្ថុ VNBarcodeObservation មានលក្ខណៈសម្បត្តិជាច្រើន រួមទាំង៖

  1. VNFaceObservation().payloadStringValue - តម្លៃខ្សែអក្សរនៃបាកូដ ឬកូដ QR ។


  2. បង្កើតសំណើសម្រាប់ដំណើរការរូបភាព និងផ្ញើសំណើសម្រាប់ការសម្គាល់មុខ។


  3. ឧទាហរណ៍៖ ម៉ាស៊ីនស្កេន QR សម្រាប់អានលេខកូដ QR សម្រាប់ការទូទាត់។


យើងបានគ្របដណ្តប់សំណួរ 3 ប្រភេទសំខាន់ៗនៅក្នុង Vision ដើម្បីជួយអ្នកចាប់ផ្តើមជាមួយឧបករណ៍ដ៏មានឥទ្ធិពលនេះ។

L O A D I N G
. . . comments & more!

About Author

Boris Dobretsov HackerNoon profile picture
Boris Dobretsov@threadmaster
ios developer, nice guy

ព្យួរស្លាក

អត្ថបទនេះត្រូវបានបង្ហាញនៅក្នុង...