The minimal opencv for Android, iOS and ARM Linux

Overview

opencv-mobile

License release download

✔️ This project provides the minimal build of opencv library for the Android, iOS and ARM Linux platforms.

✔️ We provide prebuild binary packages for opencv 2.4.13.7, 3.4.13 and 4.5.1.

✔️ We also provide prebuild binary package for iOS with bitcode enabled, that the official package lacks.

✔️ All the binaries are compiled from source on github action, no virus, no backdoor, no secret code.

opencv 4.5.1 android package size
The official opencv 229MB
opencv-mobile 15.5MB
opencv 4.5.1 ios package size
The official opencv 173MB
opencv-mobile 14.8MB
opencv 4.5.1 ios with bitcode package size
The official opencv missing :(
opencv-mobile 51.6MB

Download

Android

(armeabi-v7a arm64-v8a x86 x86_64) build with ndk r21d and android api 24

iOS

(armv7 arm64 arm64e i386 x86_64) build with Xcode 12.2

iOS with bitcode

(armv7 arm64 arm64e i386 x86_64) build with Xcode 12.2

ARM Linux

(arm-linux-gnueabi arm-linux-gnueabihf aarch64-linux-gnu) build with ubuntu cross compiler

Usage Android

  1. Extract archive to /app/src/main/jni/
  2. Modify /app/src/main/jni/CMakeListst.txt to find and link opencv
set(OpenCV_DIR ${CMAKE_SOURCE_DIR}/opencv-mobile-4.5.1-android/sdk/native/jni)
find_package(OpenCV REQUIRED)

target_link_libraries(your_jni_target ${OpenCV_LIBS})

Usage iOS

  1. Extract archive, and drag opencv2.framework into your project

Usage ARM Linux

  1. Extract archive to /
  2. Modify /CMakeListst.txt to find and link opencv
set(OpenCV_DIR ${CMAKE_SOURCE_DIR}/opencv-mobile-4.5.1-armlinux/arm-linux-gnueabihf/lib/cmake/opencv4)
find_package(OpenCV REQUIRED)

target_link_libraries(your_target ${OpenCV_LIBS})

How-to-build your custom package

step1 download opencv source

wget -q https://github.com/opencv/opencv/archive/4.5.1.zip -O opencv-4.5.1.zip
unzip -q opencv-4.5.1.zip
cd opencv-4.5.1

step2 strip zlib dependency and use stb-based highgui implementation (optional)

truncate -s 0 cmake/OpenCVFindLibsGrfmt.cmake
rm -rf modules/gapi
rm -rf modules/highgui
cp -r ../highgui modules/

step3 patch opencv source for no-rtti build (optional)

patch -p1 -i ../opencv-4.5.1-no-rtti.patch

step4 apply your opencv options to opencv4_cmake_options.txt

step5 build your opencv package with cmake

mkdir -p build
cd build
cmake -DCMAKE_INSTALL_PREFIX=install \
  -DCMAKE_BUILD_TYPE=Release \
  `cat ../../opencv4_cmake_options.txt` \
  -DBUILD_opencv_world=OFF ..

step6 make a package

zip -r -9 opencv-mobile-4.5.1.zip install

Some notes

  • The minimal opencv build contains most basic opencv operators and common image processing functions, with some handy additions like keypoint feature extraction and matching, image inpainting and opticalflow estimation.

  • Many computer vision algorithms that reside in dedicated modules are discarded, such as face detection etc. You could try deep-learning based algorithms with nerual network inference library optimized for mobile.

  • Image IO functions in highgui module, like cv::imread and cv::imwrite, are re-implemented using stb for smaller code size. GUI functions, like cv::imshow, are discarded.

  • cuda and opencl are disabled because there is no cuda on mobile, no opencl on ios, and opencl on android is slow. opencv on gpu is not suitable for real productions. Write metal on ios and opengles/vulkan on android if you need good gpu acceleration.

  • C++ RTTI and exceptions are disabled for minimal build. Be careful when you write cv::Mat roi = image(roirect); :P

opencv modules included

module comment
opencv_core Mat, matrix operations, etc
opencv_imgproc resize, cvtColor, warpAffine, etc
opencv_highgui imread, imwrite
opencv_features2d keypoint feature and matcher, etc (not included in opencv 2.x package)
opencv_photo inpaint, etc
opencv_video opticalflow, etc

opencv modules discarded

module comment
opencv_androidcamera use android Camera api instead
opencv_calib3d camera calibration, rare uses on mobile
opencv_contrib experimental functions, build part of the source externally if you need
opencv_dnn very slow on mobile, try ncnn for nerual network inference on mobile
opencv_dynamicuda no cuda on mobile
opencv_flann feature matching, rare uses on mobile, build the source externally if you need
opencv_gapi graph based image processing, little gain on mobile
opencv_gpu no cuda/opencl on mobile
opencv_imgcodecs link with opencv_highgui instead
opencv_java wrap your c++ code with jni
opencv_js write native code on mobile
opencv_lagacy various good-old cv routines, build part of the source externally if you need
opencv_ml train your ML algorithm on powerful pc or server
opencv_nonfree the SIFT and SURF, use ORB which is faster and better
opencv_objdetect HOG, cascade detector, use deep learning detector which is faster and better
opencv_ocl no opencl on mobile
opencv_python no python on mobile
opencv_shape shape matching, rare uses on mobile, build the source externally if you need
opencv_stitching image stitching, rare uses on mobile, build the source externally if you need
opencv_superres do video super-resolution on powerful pc or server
opencv_ts test modules, useless in production anyway
opencv_videoio use android MediaCodec or ios AVFoundation api instead
opencv_videostab do video stablization on powerful pc or server
opencv_viz vtk is not available on mobile, write your own data visualization routines
Issues
  • opencv-mobile-4.5.3 在Android jni 里使用 cv::cvtColor(roi, roi, cv::COLOR_BGR2GRAY),app崩溃

    opencv-mobile-4.5.3 在Android jni 里使用 cv::cvtColor(roi, roi, cv::COLOR_BGR2GRAY),app崩溃

    E/cv::error(): OpenCV(4.5.3) Error: Requested object was not found (could not open directory: /data/app/com.tencent.ncnnyolox-ZEvyprlUzrPIBsQ8ClaFTw==/base.apk!/lib/arm64-v8a) in glob_rec, file /home/runner/work/opencv-mobile/opencv-mobile/opencv-4.5.3/modules/core/src/glob.cpp, line 273 A/libc: Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 in tid 10749 (ImageReader-640), pid 10701 (ncent.ncnnyolox)

    opened by meixiansen 4
  • cv::imdecode 接口读取jpg图片异常

    cv::imdecode 接口读取jpg图片异常

    imdecode 直接读取内存的jpg图片解析异常 但是把图片存入文件,用imread解析文件正常

    #if 0
        std::vector<unsigned char> buff(jpg, jpg + len);
        // cv::Mat m = cv::imdecode(cv::Mat(buff), 1);
        cv::Mat m = cv::imdecode(buff, 1);
    #else
        std::string filename("test.jpg");
        std::ofstream ofs(filename.c_str());
        ofs.write((const char*)jpg, len);
        ofs.close();
        cv::Mat m = cv::imread(filename.c_str(), 1);
        double meanValue = blurdetection(m);
        rsq["meanValue"] = meanValue;
    #endif
    
    bug 
    opened by 1658988725 3
  • 'opencv2/opencv.hpp' file not found

    'opencv2/opencv.hpp' file not found

    Xcode Version 12.4 Framework source in use : https://opencv.org/releases/ It works correctly

    I wanted to use a lightweight framework, so I tried to replace it.

    • opencv-mobile-3.4.13-ios-bitcode
    • opencv-mobile-4.5.1-ios-bitcode

    error : 'opencv2/opencv.hpp' file not found

    No settings have changed from working correctly. Just changed the framework

    opened by nil-known 2
  • vs2019 x64 failed to use prebuilt package

    vs2019 x64 failed to use prebuilt package

    Description

    基于 cmake 的 vs2019 x64 工程, 使用 opencv-mobile 预编译包 opencv-mobile-4.5.4-windows-vs2019.zip, 报错提示 opencv 版本呢不兼容。

    Error Message

    -- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.19042.
    -- The C compiler identification is MSVC 19.29.30138.0
    -- The CXX compiler identification is MSVC 19.29.30138.0
    -- Detecting C compiler ABI info
    -- Detecting C compiler ABI info - done
    -- Check for working C compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe - skipped
    -- Detecting C compile features
    -- Detecting C compile features - done
    -- Detecting CXX compiler ABI info
    -- Detecting CXX compiler ABI info - done
    -- Check for working CXX compiler: C:/Program Files (x86)/Microsoft Visual Studio/2019/Community/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64/cl.exe - skipped
    -- Detecting CXX compile features
    -- Detecting CXX compile features - done
    -- OpenCV ARCH: x64
    -- OpenCV RUNTIME: vc14
    -- OpenCV STATIC: OFF
    CMake Warning at D:/artifacts/opencv-mobile/4.5.4/opencv-mobile-4.5.4-windows-vs2019/x64/OpenCVConfig.cmake:190 (message):
      Found OpenCV Windows Pack but it has no binaries compatible with your
      configuration.
    
      You should manually point CMake variable OpenCV_DIR to your build of OpenCV
      library.
    Call Stack (most recent call first):
      CMakeLists.txt:6 (find_package)
    
    
    CMake Error at CMakeLists.txt:6 (find_package):
      Found package configuration file:
    
        D:/artifacts/opencv-mobile/4.5.4/opencv-mobile-4.5.4-windows-vs2019/x64/OpenCVConfig.cmake
    
      but it set OpenCV_FOUND to FALSE so package "OpenCV" is considered to be
      NOT FOUND.
    
    
    -- Configuring incomplete, errors occurred!
    See also "D:/test/build/vs2019-x64/CMakeFiles/CMakeOutput.log".
    请按任意键继续. . .
    

    Reproduce

    CMakeLists.txt:

    cmake_minimum_required(VERSION 3.20)
    project(hello)
    set(CMAKE_CXX_STANDARD 11)
    
    set(OpenCV_DIR "D:/artifacts/opencv-mobile/4.5.4/opencv-mobile-4.5.4-windows-vs2019/x64")
    find_package(OpenCV REQUIRED)
    
    add_executable(hello main.cpp)
    target_link_libraries(hello ${OpenCV_LIBS})
    

    Full package: test.zip

    Visual Studio Version

    Microsoft Visual Studio Community 2019
    版本 16.11.8
    
    opened by zchrissirhcz 1
  • up up up 我遇到一个问题和一个疑问

    up up up 我遇到一个问题和一个疑问

    疑问一:描述 我是用您编译的ubuntu20.04的opencv库,我使用您github描述使用方式是没问题,但是我想要改变您所提供opencv使用库目录话, 比如我的结构如 会报错, image

    所以我需要独立的修改config.make的一些链接路径,但是我想问的是能在CMakelist.txt中修改某些变量让它生效,而不动config.make等一系列文件,自动去定位我要使用的头文件和库目录路径呢?目前我暂且搞成了静态库调用的方式~ 问题二:描述 我在rk3399 pro 使用opencv-mobile库,貌似出现问题了 (gcc version 7.5.0 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04)) 怀疑gcc编译版本不匹配 搜了一圈 需要在我每个代码文件中添加 #define _GLIBCXX_USE_CXX11_ABI 0/1去适应您的库 然而 仍然无法使用 (使用的库为opencv-mobile-4.5.4-armlinux/aarch64-linux-gnu) image

    1638251647665_C4F69FFE-A6E7-4506-9599-FB39A82E2E43

    image


    cmakelsit.txt文件部分内容(ubuntu20.04 gcc-9.3 &rk3399 pro-18.04-gcc7)

    cmake_minimum_required(VERSION 3.10) project(controlslide)

    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fopenmp -w") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -fopenmp -w") set(CMAKE_CXX_STANDARD 11)

    include_directories(${CMAKE_SOURCE_DIR}/include) include_directories(${CMAKE_SOURCE_DIR}/include/common) include_directories(${CMAKE_SOURCE_DIR}/include/ncnn) include_directories(${CMAKE_SOURCE_DIR}/include/opencv4)

    if(${CMAKE_SYSTEM_PROCESSOR} MATCHES "aarch64") # rk3399 message(${CMAKE_SYSTEM_PROCESSOR}) set(TARGET_ARCH aarch64) elseif(${CMAKE_SYSTEM_PROCESSOR} MATCHES "x86_64") # ubuntu message(${CMAKE_SYSTEM_PROCESSOR}) set(TARGET_ARCH x86_64) endif()

    add_library(libopencv_core STATIC IMPORTED) set_target_properties(libopencv_core PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/lib/libopencv/${TARGET_ARCH}/libopencv_core.a)

    add_library(libopencv_features2d STATIC IMPORTED) set_target_properties(libopencv_features2d PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/lib/libopencv/${TARGET_ARCH}/libopencv_features2d.a)

    add_library(libopencv_highgui STATIC IMPORTED) set_target_properties(libopencv_highgui PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/lib/libopencv/${TARGET_ARCH}/libopencv_highgui.a)

    add_library(libopencv_imgproc STATIC IMPORTED) set_target_properties(libopencv_imgproc PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/lib/libopencv/${TARGET_ARCH}/libopencv_imgproc.a)

    add_library(libopencv_photo STATIC IMPORTED) set_target_properties(libopencv_photo PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/lib/libopencv/${TARGET_ARCH}/libopencv_photo.a)

    add_library(libtengine-lite-static STATIC IMPORTED) set_target_properties(libtengine-lite-static PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/lib/libtengine/${TARGET_ARCH}/libtengine-lite-static.a)

    add_library(libncnn-static STATIC IMPORTED) set_target_properties(libncnn-static PROPERTIES IMPORTED_LOCATION ${CMAKE_SOURCE_DIR}/lib/libncnn/${TARGET_ARCH}/libncnn.a)

    option(DEBUG "Set to switch to build use DEBUG" ON) if (DEBUG) add_definitions(-DDEBUG) # 宏定义 USE_SEE message(STATUS "Use DEBUG") else() message(STATUS "Use Nothing") endif()

    add_executable(controlslide main.cpp ControlSlide.cpp)

    target_link_libraries(controlslide libtengine-lite-static libncnn-static libopencv_highgui libopencv_imgproc libopencv_features2d libopencv_photo libopencv_core #务必放在最后sxj731533730 -ldl )

    opened by sxj731533730 1
  • An example of O3 optimization that cause segfault

    An example of O3 optimization that cause segfault

    Code

    example.cpp

    #include <opencv2/core.hpp>
    #include <vector>
     
    using namespace cv;
    using namespace std;
     
    int main()
    {
        Mat im(176, 176, CV_8U);
        vector<uint8_t> buf(sizeof(void*) * im.rows + 1);
        const uint8_t** rowTab = (const uint8_t**) (buf.data() + 1);
        for (int y = 0; y < im.rows; ++y) // 这里 gcc 会自动做SSE2优化,因指针的指针不是16字条对齐,导致crash
            rowTab[y] = im.ptr(y);
    }
    

    Test Environment

    OpenCV: tag 4.5.1 System: Linux x64, ubuntu 16.04 Compiler: GCC 5.5.0

    │gcc (Ubuntu 5.5.0-12ubuntu1~16.04) 5.5.0 20171010
    │Copyright (C) 2015 Free Software Foundation, Inc.
    │This is free software; see the source for copying conditions.  There is NO
    │warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    

    Compile options for opencv: edit cmake/OpenCVCompilerDefenses.cmake, scroll to last lines, comment them out the replacement of O3 to O2 image

    Then compile opencv with these options:

    cmake ../.. \                                     
        -DCMAKE_BUILD_TYPE=Release \                  
        -DCMAKE_INSTALL_PREFIX=./install \            
        -DBUILD_TESTS=OFF \                           
        -DBUILD_PERF_TESTS=OFF \                      
        -DWITH_CUDA=OFF \                             
        -DWITH_VTK=OFF \                              
        -DWITH_MATLAB=OFF \                           
        -DBUILD_DOCS=OFF \                            
        -DBUILD_opencv_python3=OFF \                  
        -DBUILD_opencv_python2=OFF \                  
        -DWITH_IPP=OFF \                              
        -DBUILD_LIST='core,imgcodecs,imgproc,highgui' 
    
    opened by zchrissirhcz 1
  • link error: many undefined references

    link error: many undefined references

    Firstly, thank the awesome work you did. I use the opencv-mobile-4.5.3-armlinux.zip in my project. When I build my project, the compiler gives:

    /usr/lib/gcc-cross/aarch64-linux-gnu/8/../../../../aarch64-linux-gnu/bin/ld: smooth.dispatch.cpp:(.text._ZN2cv12GaussianBlurERKNS_11_InputArrayERKNS_12_OutputArrayENS_5Size_IiEEddi+0xa5c): undefined reference to `cv::softdouble::operator==(cv::softdouble const&) const'
    /usr/lib/gcc-cross/aarch64-linux-gnu/8/../../../../aarch64-linux-gnu/bin/ld: smooth.dispatch.cpp:(.text._ZN2cv12GaussianBlurERKNS_11_InputArrayERKNS_12_OutputArrayENS_5Size_IiEEddi+0xab4): undefined reference to `cv::softdouble::operator+(cv::softdouble const&) const'
    /usr/lib/gcc-cross/aarch64-linux-gnu/8/../../../../aarch64-linux-gnu/bin/ld: smooth.dispatch.cpp:(.text._ZN2cv12GaussianBlurERKNS_11_InputArrayERKNS_12_OutputArrayENS_5Size_IiEEddi+0xae4): undefined reference to `cv::softdouble::operator==(cv::softdouble const&) const'
    /usr/lib/gcc-cross/aarch64-linux-gnu/8/../../../../aarch64-linux-gnu/bin/ld: smooth.dispatch.cpp:(.text._ZN2cv12GaussianBlurERKNS_11_InputArrayERKNS_12_OutputArrayENS_5Size_IiEEddi+0xf0c): undefined reference to `cv::softdouble::operator+(cv::softdouble const&) const'
    /usr/lib/gcc-cross/aarch64-linux-gnu/8/../../../../aarch64-linux-gnu/bin/ld: smooth.dispatch.cpp:(.text._ZN2cv12GaussianBlurERKNS_11_InputArrayERKNS_12_OutputArrayENS_5Size_IiEEddi+0xf3c): undefined reference to `cv::softdouble::operator==(cv::softdouble const&) const'
    /usr/lib/gcc-cross/aarch64-linux-gnu/8/../../../../aarch64-linux-gnu/bin/ld: smooth.dispatch.cpp:(.text._ZN2cv12GaussianBlurERKNS_11_InputArrayERKNS_12_OutputArrayENS_5Size_IiEEddi+0xf94): undefined reference to `cv::softdouble::operator+(cv::softdouble const&) const'
    /usr/lib/gcc-cross/aarch64-linux-gnu/8/../../../../aarch64-linux-gnu/bin/ld: smooth.dispatch.cpp:(.text._ZN2cv12GaussianBlurERKNS_11_InputArrayERKNS_12_OutputArrayENS_5Size_IiEEddi+0xfc4): undefined reference to `cv::softdouble::operator==(cv::softdouble const&) const'
    /usr/lib/gcc-cross/aarch64-linux-gnu/8/../../../../aarch64-linux-gnu/bin/ld: /root/work_space/codes/accv/download/arm/opencv-mobile-4.5.3-armlinux/aarch64-linux-gnu/lib/libopencv_core.a(check.cpp.o): in function `cv::detail::check_failed_MatDepth(int, int, cv::detail::CheckContext const&)':
    check.cpp:(.text._ZN2cv6detail21check_failed_MatDepthEiiRKNS0_12CheckContextE+0x40): undefined reference to `std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> >::basic_stringstream()'
    

    How to fix it? my compiler information:

    aarch64-linux-gnu-g++ --version
    
    aarch64-linux-gnu-g++ (Debian 8.3.0-2) 8.3.0
    Copyright (C) 2018 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
    aarch64-linux-gnu-gcc --version
    
    aarch64-linux-gnu-gcc (Debian 8.3.0-2) 8.3.0
    Copyright (C) 2018 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    

    Look forward for reply. 😊😊😊😊

    opened by xutch 0
  • opencv_videoio	use android MediaCodec or ios AVFoundation api instead

    opencv_videoio use android MediaCodec or ios AVFoundation api instead

    Hello,

    Understand opencv_videoio is not included, and saw the suggestions for android/ios.

    Can you please also suggest how I should capture video on linux?

    Thanks

    opened by mike-2020 0
  • 【文档】自己编译 ARM 版 opencv-mobile 解决编译器版本导致的 `undefined reference to std::__cxx11::basic_stringstream` 问题

    【文档】自己编译 ARM 版 opencv-mobile 解决编译器版本导致的 `undefined reference to std::__cxx11::basic_stringstream` 问题

    起因

    因项目需要在 arm 中进行简单的图形运算,于是打算直接用 opencv-mobile 仓库预编译好的 opencv-mobile-4.5.4-armlinux.zip。但果然因为生产环境依赖的编译器版本太旧,在编译过程遇到了因为 ABI 接口导致的错误:

    undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
    undefined reference to `std::__cxx11::basic_stringstream<char, std::char_traits<char>, std::allocator<char> > const&)
    ...
    

    尝试直接使用 -D _GLIBCXX_USE_CXX11_ABI=0,无效 搜索一圈无果,(#20 #25 #27)

    于是决定自己编译一遍,解决问题,顺便编写这个文档,方便后人查阅。

    最后的运行结果

    image-20220518154610943

    具体步骤

    很抱歉我把文档发到了博客,目的是骗点点击量,希望大家不要介意:

    https://www.cnblogs.com/singlex/p/16285234.html

    最后在末尾推荐使用,PRemoteM 来打开 SSH、SFTP、RDP 远程会话。

    opened by VShawn 0
  • the ios version cv::imread .png as rgb not bgr

    the ios version cv::imread .png as rgb not bgr

    I found that the ios version opencv read .png as rgb (but jpeg as bgr). cv::Mat img = cv::imread("test.png"); cv::cvtColor(img, img, cv::COLOR_RGB2BGR); cv::imwrite("new.png", img);

    the code above generate correct new.png, but if I do not cvtColor for RGB to BGR, the result is not correct.

    I use the opencv-mobile-4.5.4-ios.zip downloaded from: https://github.com/nihui/opencv-mobile/releases/download/v14/opencv-mobile-4.5.4-ios.zip

    opened by xutch 0
  • cv::imencode bmp write wrong header

    cv::imencode bmp write wrong header

    Mat frame;
    ... std::vector buf(1); cv::imencode(".bmp", frame, buf);

    I use full feature opencv in ios work normally but when I use opencv minimize 4.54 work abnormally.

    opened by tranthienhau 0
Releases(v14)
Owner
マジやばくね
null
This is a C++17 deployment of deep-learning based image inpainting algorithm on Windows10, using Libtorch, Opencv and Qt.

This is a desktop software for image inpainting. It is a C++ deployment of image inpainting algorithm on Windows10, based on C++17 and implemented using vs2019.

null 4 May 13, 2022
OpenCV Sample Code in C++

OpenCV Sample Code in C++

iwatake 40 Jul 15, 2022
C++ image processing and machine learning library with using of SIMD: SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX-512, VMX(Altivec) and VSX(Power7), NEON for ARM.

Introduction The Simd Library is a free open source image processing and machine learning library, designed for C and C++ programmers. It provides man

Ihar Yermalayeu 1.6k Aug 4, 2022
Minimal example of prototyping CLAP audio plugins using Dear ImGui as the user interface.

clap-imgui Minimal example of prototyping CLAP audio plugins using Dear ImGui as the user interface. This is intended as an example of presenting a UI

schwa 36 Jul 25, 2022
Motion Cam is a camera application for Android that replaces the entire camera pipeline.

About Motion Cam is a camera application for Android that replaces the entire camera pipeline. It consumes RAW images and uses computational photograp

Mirsad Makalic 306 Aug 7, 2022
Growtopia android modmenu with ImGui

Growtopia Android ImGUI Growtopia android modmenu with ImGUI. Features Built with ImGUI. Coming Soon None Requirements The following dependencies are

ZTz 54 Jul 31, 2022
Slate is a bitmap editor available for Linux, Windows and Mac.

Slate is a bitmap editor available for Linux, Windows and Mac.

Mitch Curtis 896 Jul 30, 2022
a Vulkan real-time rendering engine (Windows and Linux).

Luz Engine A Vulkan engine that I'm developing to study and implement modern rendering techniques used by AAA games. Videos on Youtube Features How to

Hadryan Salles 47 Aug 5, 2022
Video, Image and GIF upscale/enlarge(Super-Resolution) and Video frame interpolation. Achieved with Waifu2x, SRMD, RealSR, Anime4K, RIFE, CAIN, DAIN and ACNet.

Video, Image and GIF upscale/enlarge(Super-Resolution) and Video frame interpolation. Achieved with Waifu2x, SRMD, RealSR, Anime4K, RIFE, CAIN, DAIN and ACNet.

Aaron Feng 7.3k Aug 1, 2022
CGIF, A fast and lightweight GIF encoder that can create GIF animations and images

CGIF, a GIF encoder written in C A fast and lightweight GIF encoder that can create GIF animations and images. Summary of the main features: user-defi

Daniel Löbl 66 Jul 27, 2022
libspng is a C library for reading and writing PNG format files with a focus on security and ease of use.

libspng (simple png) is a C library for reading and writing Portable Network Graphics (PNG) format files with a focus on security and ease of use.

Randy 520 Aug 6, 2022
Generate Height map with Generator (OpenGL and imgui) and Construct Splat Map with generated height map using Algorithm

Generate Height map with Generator (OpenGL and imgui) and Construct Splat Map with generated height map using Algorithm(DPS, BFS, Gradient Descent ... etc) . At Renderer, with height map and blend map which are generated in front of this stage, render high quality terrain with OpenGL

Snowapril 35 Mar 22, 2022
PNG encoder and decoder in C and C++.

PNG encoder and decoder in C and C++, without dependencies

Lode Vandevenne 1.7k Aug 4, 2022
An image and texture viewer for tga, png, apng, exr, dds, gif, hdr, jpg, tif, ico, webp, and bmp files

An image and texture viewer for tga, png, apng, exr, dds, gif, hdr, jpg, tif, ico, webp, and bmp files. Uses Dear ImGui, OpenGL, and Tacent. Useful for game devs as it displays information like the presence of an alpha channel and querying specific pixels for their colour.

Tristan Grimmer 140 Aug 4, 2022
A bunch of functions and helpers classes for D3D12, and DXGI libraries

TypedD3D A bunch of functions and helpers classes for D3D12, and DXGI libraries Namespaces Helpers A bunch of helper functions that interface more wit

Renzy Alarcon 6 Jun 17, 2022
A toolkit for making real world machine learning and data analysis applications in C++

dlib C++ library Dlib is a modern C++ toolkit containing machine learning algorithms and tools for creating complex software in C++ to solve real worl

Davis E. King 11.3k Aug 8, 2022
Reading, writing, and processing images in a wide variety of file formats, using a format-agnostic API, aimed at VFX applications.

README for OpenImageIO Introduction The primary target audience for OIIO is VFX studios and developers of tools such as renderers, compositors, viewer

OpenImageIO 1.5k Jul 27, 2022