源码如下,实现把一个JPG保存成灰度图格式的BMP

 1 //jpg2bmp.cpp
2 #include <stdio.h>
3 #include <inttypes.h>
4 #include <opencv2/opencv.hpp>
5 #include <opencv2/core.hpp>
6
7 #ifndef P
8 #define P(format, ...) do \
9 { \
10 printf("%s %s %d " format "\n", __FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__); \
11 fflush(stdout); \
12 } \
13 while (0);
14 #endif
15
16 int main(int argc, char* argv[]){
17 if (argc<3){
18 printf("usage:%s <from> <to>\n", argv[0]);
19 return 0;
20 }
21 cv::Mat image = cv::imread(argv[1], cv::IMREAD_UNCHANGED);
22 cv::UMat u_img = image.getUMat(cv::ACCESS_READ);
23 if (image.empty()){
24 P("load pic %s fail", argv[1]);
25 return -1;
26 }
27 cv::UMat bmp;
28 cv::cvtColor(u_img, bmp, cv::COLOR_BGR2GRAY);
29 cv::imwrite(argv[2], bmp);
30 P("ok");
31 return 1;
32 }

编译命令行如下:

1 /Users/ahfu/code/android/android-ndk-r14b/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-g++  \
2 -o jpg2bmp_1.o -c jpg2bmp_1.cpp -pie -fPIC \
3 -I"/Users/ahfu/code/android/OpenCV-android-sdk/sdk/native/jni/include" \
4 --sysroot=/Users/ahfu/code/android/android-ndk-r14b/platforms/android-22/arch-arm/ \
5 -I"/Users/ahfu/code/android/android-ndk-r14b/sources/cxx-stl/gnu-libstdc++/4.9/include" \
6 -I"/Users/ahfu/code/android/android-ndk-r14b/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a/include/"

链接命令行如下:

1 /Users/ahfu/code/android/android-ndk-r14b/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-g++ \
2 -o jpg2bmp_1 jpg2bmp_1.o -pie -fPIC \
3 --sysroot=/Users/ahfu/code/android/android-ndk-r14b/platforms/android-22/arch-arm/ \
4 -L"/Users/ahfu/code/android/OpenCV-android-sdk/sdk/native/staticlibs/armeabi-v7a" -lopencv_core -lopencv_imgcodecs -lopencv_imgproc -lm -lz -landroid -llog \
5 -L"/Users/ahfu/code/android/OpenCV-android-sdk/sdk/native/3rdparty/libs/armeabi-v7a/" -ltegra_hal -lcpufeatures -ltbb -llibpng -llibjpeg-turbo -llibtiff -llibjasper -llibwebp -lIlmImf -lopencv_core -lopencv_imgcodecs -lopencv_imgproc -ltegra_hal \
6 -L"/Users/ahfu/code/android/android-ndk-r14b/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi-v7a" -lgnustl_static -lsupc++ \
7 -L"/Users/ahfu/code/android/android-ndk-r14b/platforms/android-22/arch-arm/usr/lib" -lstdc++

然后使用adb上传
adb root  #手机必要要root
adb push jpg2bmp 1.jpg /data/data/temp
adb shell
  cd /data/data/temp
  chmod +x jpg2bmp
  ./jpg2bmp 1.jpg 2.bmp

#执行成功

ndk版本是:android-ndk-r14b
opencv android sdk版本是:opencv-3.4.6-android-sdk.zip

macos下命令行通过ndk编译android下可以执行的ELF程序(并验证opencl的调用)的更多相关文章

  1. Linux学习心得之 Linux下命令行Android开发环境的搭建

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Linux学习心得之 Linux下命令行Android开发环境的搭建 1. 前言2. Jav ...

  2. iOS系统提供开发环境下命令行编译工具:xcodebuild

    iOS系统提供开发环境下命令行编译工具:xcodebuild[3] xcodebuild 在介绍xcodebuild之前,需要先弄清楚一些在XCode环境下的一些概念[4]: Workspace:简单 ...

  3. 编译Android下可用的FFmpeg+x264

    编译Android下可用的FFmpeg+x264 编译x264: 下载最新版的x264 ftp://ftp.videolan.org/pub/videolan/x264/snapshots/ 1.解压 ...

  4. C++命令行多文件编译(g++)

    在刚开始学Java时用命令行进行编译代码.而C++一直在用IDE, 这次尝试下命令行编译.vs下也可以用cl.exe.link.exe等命令来进行编译 但这次是通过安装MinGW来学习命令编译,主要用 ...

  5. LibOpenCM3(一) Linux下命令行开发环境配置

    目录 LibOpenCM3(一) Linux下命令行开发环境配置 本文使用 Linux 环境, 硬件为 STM32F103 系列开发板 LibOpenCM3 介绍 LibOpenCM3 是GPL协议( ...

  6. Linux下命令行安装weblogic10.3.6

    Linux下命令行安装weblogic10.3.6 一.安装前准备工作: 1.创建用户useradd weblogic;创建用户成功linux系统会自动创建一个和用户名相同的分组,并将该用户分到改组中 ...

  7. windows下命令行模式中cd命令无效的原因

    当我们执行cmd 想切换当前工作目录时,会发现windows下命令行模式中cd命令没有生效,到底是什么原因呢? 例如: 当我们想切换到 D:\MySql\mysql-5.7.19-winx64\bin ...

  8. ubuntu 下命令行播放器mplayer 使用详解

    ubuntu 下命令行播放器mplayer 使用详解 2011-01-02 21:00:42|  分类: Linux/Unix |  标签: |字号大中小 订阅 使用 MPlayer 播放媒体文件最简 ...

  9. php 运行linux命令 与 linux下命令行执行php

    1.php运行linux命令 exec函数:string exec(string command, string [array], int [return_var]);  执行函数后不输出结果,返回最 ...

随机推荐

  1. java 常用类库:Math:常用min、max;floor;ceil;random;

    Math //7.取整数小于目标的最大整数(Math.floor(1.2));//8.取整数.获取大于目标的最大整数System.out.println(Math.ceil(1.2)); //18.获 ...

  2. CSS 常用颜色代号

    常用颜色代号一览表:http://www.divcss5.com/html/h636.shtml   #000000   #2F0000   #600030   #460046   #28004D   ...

  3. 痞子衡嵌入式:揭秘i.MXRT1170上用J-Link连接复位后PC总是停在0x223104的原因

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT1170上安全调试策略实现对JLink调试的影响. 痞子衡之前写过一篇旧文 <i.MXRT600的ISP模式下用J-L ...

  4. centos7 升级php版本到7.2

    #自带的只有5.4版本 yum provides php [root@localhost etc]# yum provides php Loaded plugins: fastestmirror, l ...

  5. 重学c#系列——datetime 和 datetimeoffset[二十一]

    前言 简单介绍一下datetime和 datetimeoffset. 正文 了解一个国家的文化,就要了解一个国家的历史. 要了解datetimeoffset,那么很有必要了解一下datetime. 表 ...

  6. DirectByteBuffer实现原理分析

    1.创建DirectByteBuffer Direct ByteBuffer是通过JNI在Java虚拟机外的内存中分配了一块(所以即使在运行时通过-Xmx指定了Java虚拟机的最大堆内存,还是可能实例 ...

  7. 【LeetCode】993. Cousins in Binary Tree 解题报告(C++ & python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 DFS BFS 日期 题目地址:https://le ...

  8. Andrey and Problem

    B. Andrey and Problem time limit per test 2 seconds memory limit per test 256 megabytes input standa ...

  9. 线程 IO流 网络编程 基础总结

    线程 进程---->进行中的程序 线程---->由进程创建 一个进程可以创建多个线程 并发:同一个时刻 多个任务交替执行 造成一种貌似同时进行的错觉 简单来说 单个cpu的多任务就是并发 ...

  10. DEEP DOUBLE DESCENT: WHERE BIGGER MODELS AND MORE DATA HURT

    目录 概 主要内容 Effective Model Complexity(EMC) label noise data augmentation 下降方式 SGD vs Adam Adam SGD SG ...