- vừa được xem lúc

Thêm dlib vào project Xcode

0 0 20

Người đăng: Tuấn Ngô Doãn

Theo Viblo Asia

dlib là một thư viện được viết bằng C++ về machine learning được sử dụng trong rất nhiều ứng dụng liên quan đến xử lý hình ảnh. Nó được sử dụng trong nhiều ứng dụng liên quan đến computer vision và machine learning, nó có thể được sử dụng để phát hiện các điểm trên khuôn mặt như mắt, mũi, môi, v.v. Ví dụ như ứng dụng snapchat sử dụng các filter trên khuôn mặt.

Vì nó là thư viện C++ nên có một chút khó khăn để làm cho nó hoạt động trong dự án iOS swift. Bài viết này nhằm mục đích giải thích cách thêm dlib vào một dự án iOS hiện có.

Building dlib

Chúng ta sẽ cần cài đặt X11 và CMake . Nếu bạn không có cmake, bạn có thể cài thông qua homebrew.

brew install cmake

  • Mở terminal và cd tới thứ mục bên trong folder dlib.
  • Sau đó tạo 1 thư mục có tên là "build"

mkdir build && cd build

  • Sau đó thực hiện các lệnh sau:

cmake -G Xcode ..

cmake --build . --config Release

Một project Xcode sẽ được tạo ra bên trong thư mục "build/dlib_buid" mà vừa tạo trước đó.

Bây giờ chúng ta có thư viện dlib đã được build và setup. Hay cùng thử thêm thư viện đó vào trong project Xcode.

Thêm dlib vào project Xcode

Trong thư mục root của project Xcode tạo một folder tên là 'lib'. Sau đó copy file 'libdlib.a' từ project xcode dlib tạo được từ bên trên vào thư mục 'lib' vừa tạo. Sau đó copy thư mục 'dlib' từ thư mục 'dlib-{verison}' ví dụ: dlib-19.2 và paste vào thư mục 'lib'.

Kéo file 'libdlib.a' từ thư mục lib và thả vào project Xcode chúng ta đang thêm thư viện dlib. Khi xong thì file libdlib.a sẽ hiện trong mục "linked libraries and frameworks" trong project Xcode.

Đây là tất cả các tệp cần thiết để thêm dlib vào porject Xcode. Nhưng nếu build ngay lúc này nó sẽ không hoạt động vì chúng cần thiết lập một số flag và thêm header path framework cho xcode để có thể build thư viện dlib cùng với project hiện tại.

Thiết lập

Mở mục "Build Settings" sau đó thêm vào các mục ‘Library Search Paths’ và ‘Header Search Paths’ như sau:

$(PROJECT_DIR)/lib

Phần này sẽ cho xcode biết được thư mục dlib ở đâu trong quá trình build. Tiếp theo cần thêm 1 số các macros tiền xử lý để Xcode có thể compile các file dilb đúng cách.

DLIB_NO_GUI_SUPPORT
DLIB_JPEG_SUPPORT
NDEBUG
DLIB_USE_BLAS
DLIB_USE_LAPACK

Như vậy đã có đủ các setting cần thiết cho việc thêm thư viện dlib vào trong project Xcode. Trong một số trường hợp nếu gặp lỗi "BITCODE ERROR" => Cần phải setting enable bitcode to "No" trong mục "Build Setting"

Tổng kết

Đó là những thao tác cần để thêm thư viện dlib vào trong project xcode. Để sử dụng thư viện này cần viết thêm một class dạng wrappter các function của dlib. Ví dụ về phần đó mọi người có thể xem ở đây. face-landmarking-ios using dlib

Bình luận

Bài viết tương tự

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 1: Làm quen cô nàng Flutter

Lời mở đầu. Gần đây, Flutter nổi lên và được Google PR như một xu thế của lập trình di động vậy.

0 0 279

- vừa được xem lúc

Học Flutter từ cơ bản đến nâng cao. Phần 3: Lột trần cô nàng Flutter, BuildContext là gì?

Lời mở đầu. Màn làm quen cô nàng FLutter ở Phần 1 đã gieo rắc vào đầu chúng ta quá nhiều điều bí ẩn về nàng Flutter.

0 0 204

- vừa được xem lúc

Swift: Tạo custom phép toán tử (Operator) của riêng bạn!

Swift cho phép bạn tạo các toán tử có thể tùy chỉnh của riêng bạn. Điều này đặc biệt hữu ích khi bạn xử lý các loại dữ liệu của riêng mình. Operator Types in Swift. Có năm loại toán tử chính trong Swift.

0 0 55

- vừa được xem lúc

Chương 6 Protocol oriented programming.

Cuốn sách này là về lập trình hướng protocol. Khi Apple thông báo swift 2 ở WWDC 2015.

0 0 45

- vừa được xem lúc

Ví dụ về UIActivityViewController

Trên iOS, UIActivityViewController cung cấp giao diện thống nhất để người dùng chia sẻ và thực hiện các hành động trên văn bản, hình ảnh, URL và các mục khác trong ứng dụng. let string = "Hello, world!". let url = URL(string: "https://nshipster.com").

0 0 56

- vừa được xem lúc

Quản lý self và cancellable trong Combine.

. . Công việc quản lý bộ nhớ memory management thường trở nên phức tạp khi chúng ta thực hiện các tác vụ bất đồng bộ asynchronous vì chúng ta thường phải lưu giữ một số object nằm ngoài scope mà object được define trong khi vẫn phải đảm bảo được việc giải phóng object đó được thực hiện đúng quy trìn

0 0 40