Skip to content

Instantly share code, notes, and snippets.

View cyrusbehr's full-sized avatar

Cyrus Behroozi cyrusbehr

View GitHub Profile
@cyrusbehr
cyrusbehr / config.yml
Created October 10, 2020 00:17
Sample circleCI config.yml
version: 2.1
jobs:
build:
docker:
- image: cyrusbehr/sdk_design
steps:
- checkout
- restore_cache:
@cyrusbehr
cyrusbehr / detect_faces.py
Created October 10, 2020 00:03
Using the python bindings library to run our SDK
import mysdk
sdk = mysdk.MY_SDK()
error_code, face_detected, face_box_and_landmarks = sdk.get_face_box_and_landmarks('../tests/images/face.jpg')
if error_code != mysdk.ERRORCODE.NO_ERROR:
print("There was an error!")
quit()
@cyrusbehr
cyrusbehr / py_bindings.cpp
Created October 9, 2020 23:55
Python bindings
#include "my_sdk.h"
#include "pybind11/pybind11.h"
#include "pybind11/stl.h"
namespace py = pybind11;
using namespace sdk;
PYBIND11_MODULE(mysdk, m) {
@cyrusbehr
cyrusbehr / doxyfile.in
Created October 9, 2020 23:33
Sample doxyfile
OUTPUT_DIRECTORY = @CMAKE_CURRENT_BINARY_DIR@/doxygen_documentation/
INPUT = @CMAKE_CURRENT_SOURCE_DIR@/../include/
@cyrusbehr
cyrusbehr / my_sdk.h
Created October 9, 2020 23:28
Sample doxygen syntax
struct FaceBoxAndLandmarks {
/** The top left corner of the bounding box */
Point topLeft;
/** The bottom right corner of the bounding box */
Point bottomRight;
/** The facial landmark points: left eye, right eye, nose, left mouth corner, right mouth corner */
std::array<Point, 5> landmarks;
};
/**
@cyrusbehr
cyrusbehr / CMakeLists.txt
Created October 9, 2020 23:19
Unit testing CMake
# Unit test
add_executable(run_tests tests/test.cpp)
target_link_libraries(run_tests ${CMAKE_CURRENT_BINARY_DIR}/libmy_sdk.a)
target_include_directories(run_tests PRIVATE ${CMAKE_CURRENT_LIST_DIR}/include)
target_include_directories(run_tests PRIVATE ${CMAKE_CURRENT_LIST_DIR}/3rdparty/catch2)
add_dependencies(run_tests my_sdk)
@cyrusbehr
cyrusbehr / test.cpp
Created October 9, 2020 23:14
Unit testing using Catch2
#define CATCH_CONFIG_MAIN
#include <iostream>
#include "my_sdk.h"
#include "catch.hpp"
TEST_CASE("Core functionality", "[core]")
{
sdk::MySDK mySdk;
@cyrusbehr
cyrusbehr / CMakeLists.txt
Created October 9, 2020 22:58
CMake MRI script
add_custom_target(my_sdk
COMMAND
/bin/echo -e 'create libmy_sdk.a\\naddlib libmy_sdk_static.a\\naddlib ${LIBCNN}\\naddlib ${LIBOPENCV_CORE}\\naddlib ${LIBOPENCV_IMGCODECS}\\naddlib ${LIBOPENCV_IMGPROC}\\naddlib ${LIBOPENCV_ZLIB}\\naddlib ${LIBOPENCV_PNG}\\naddlib ${LIBOPENCV_TIFF}\\naddlib ${LIBOPENCV_JPG}\\nsave\\nend' | ar -M
DEPENDS
my_sdk_static
COMMENT
"Merging dependency libraries into my_sdk_static to create libmy_sdk.a"
)
@cyrusbehr
cyrusbehr / CMakeLists.txt
Created October 9, 2020 22:48
Root Cmake
# Build options for cross compiling
option(BUILD_ARM32 "Cross compile the SDK for arm32" OFF)
option(BUILD_ARM64 "Cross compile the SDK for arm64" OFF)
# Choose the appropriate toolchain file
if (BUILD_ARM32)
SET (CMAKE_TOOLCHAIN_FILE tools/toolchain-arm32.cmake)
elseif(BUILD_ARM64)
SET (CMAKE_TOOLCHAIN_FILE tools/toolchain-aarch64.cmake)
endif()
@cyrusbehr
cyrusbehr / toolchain-aarch64.cmake
Created October 9, 2020 22:45
AArch64 toolchain file
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR aarch64)
SET(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)
SET(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)