android使用libyuv

libyuv可以帮我们将rgb转换成yuv,也可以用来旋转yuv,转换成其他yuv格式
libyuv git地址是https://chromium.googlesource.com/libyuv/libyuv,由于众所周知的原因,无法直接访问,我们可以用gitlab来中转一下
首先创建一个project,选择Import project,点击Repo by URL,在url里填入这个网址,勾选Mirror repository,然后创建工程,等待同步完成就可以下载代码了

这个是我创建的一个镜像 https://gitlab.com/cc_linco/libyuv1.git

接下来创建AS工程,勾选C++支持,一路next就可以了
将libyuv源码解压到src/main/cpp目录下,修改一下libyuv/CMakeLists.txt,去掉一些编译生成的文件,也可以不改,按自己需要编辑,下面是我注释掉一些编译目标后的文件

# CMakeLists for libyuv
# Originally created for "roxlu build system" to compile libyuv on windows
# Run with -DTEST=ON to build unit tests

PROJECT ( YUV C CXX )   # "C" is required even for C++ projects
CMAKE_MINIMUM_REQUIRED( VERSION 2.8 )
OPTION( TEST "Built unit tests" OFF )

SET ( ly_base_dir   ${PROJECT_SOURCE_DIR} )
SET ( ly_src_dir    ${ly_base_dir}/source )
SET ( ly_inc_dir    ${ly_base_dir}/include )
SET ( ly_tst_dir    ${ly_base_dir}/unit_test )
SET ( ly_lib_name   yuv )
SET ( ly_lib_static ${ly_lib_name} )
SET ( ly_lib_shared ${ly_lib_name}_shared )

FILE ( GLOB_RECURSE ly_source_files ${ly_src_dir}/*.cc )
LIST ( SORT         ly_source_files )

FILE ( GLOB_RECURSE ly_unittest_sources ${ly_tst_dir}/*.cc )
LIST ( SORT         ly_unittest_sources )

INCLUDE_DIRECTORIES( BEFORE ${ly_inc_dir} )

# this creates the static library (.a)
ADD_LIBRARY             ( ${ly_lib_static} STATIC ${ly_source_files} )

# this creates the shared library (.so)
ADD_LIBRARY             ( ${ly_lib_shared} SHARED ${ly_source_files} )
SET_TARGET_PROPERTIES   ( ${ly_lib_shared} PROPERTIES OUTPUT_NAME "${ly_lib_name}" )
SET_TARGET_PROPERTIES   ( ${ly_lib_shared} PROPERTIES PREFIX "lib" )

# this creates the conversion tool
#ADD_EXECUTABLE         ( yuvconvert ${ly_base_dir}/util/yuvconvert.cc )
#TARGET_LINK_LIBRARIES  ( yuvconvert ${ly_lib_static} )


INCLUDE ( FindJPEG )
if (JPEG_FOUND)
  include_directories( ${JPEG_INCLUDE_DIR} )
  target_link_libraries( yuvconvert ${JPEG_LIBRARY} )
  add_definitions( -DHAVE_JPEG )
endif()

if(TEST)
  find_library(GTEST_LIBRARY gtest)
  if(GTEST_LIBRARY STREQUAL "GTEST_LIBRARY-NOTFOUND")
    set(GTEST_SRC_DIR /usr/src/gtest CACHE STRING "Location of gtest sources")
    if(EXISTS ${GTEST_SRC_DIR}/src/gtest-all.cc)
      message(STATUS "building gtest from sources in ${GTEST_SRC_DIR}")
      set(gtest_sources ${GTEST_SRC_DIR}/src/gtest-all.cc)
      add_library(gtest STATIC ${gtest_sources})
      include_directories(${GTEST_SRC_DIR})
      include_directories(${GTEST_SRC_DIR}/include)
      set(GTEST_LIBRARY gtest)
    else()
      message(FATAL_ERROR "TEST is set but unable to find gtest library")
    endif()
  endif()

  add_executable(libyuv_unittest ${ly_unittest_sources})
  target_link_libraries(libyuv_unittest ${ly_lib_name} ${GTEST_LIBRARY})
  find_library(PTHREAD_LIBRARY pthread)
  if(NOT PTHREAD_LIBRARY STREQUAL "PTHREAD_LIBRARY-NOTFOUND")
    target_link_libraries(libyuv_unittest pthread)
  endif()
  if (JPEG_FOUND)
    target_link_libraries(libyuv_unittest ${JPEG_LIBRARY})
  endif()

  if(NACL AND NACL_LIBC STREQUAL "newlib")
    target_link_libraries(libyuv_unittest glibc-compat)
  endif()

  find_library(GFLAGS_LIBRARY gflags)
  if(NOT GFLAGS_LIBRARY STREQUAL "GFLAGS_LIBRARY-NOTFOUND")
    target_link_libraries(libyuv_unittest gflags)
    add_definitions(-DLIBYUV_USE_GFLAGS)
  endif()
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: libyuv.so是一个用于图像处理的开源库,特别适用于Android平台。它提供了许多用于颜色空间转换、缩放、旋转和镜像等常见图像操作的函数。 首先,libyuv.so可以用来进行颜色空间转换。它支持诸如I420、NV12、NV21、UYVY等常见的颜色格式之间的相互转换。这在很多图像处理应用中非常有用,比如将相机采集到的图像数据转换为OpenGL ES所需的纹理格式。 其次,libyuv.so还提供了缩放和旋转图像的功能。通过使用这些函数,我们可以根据需要调整图像的大小和方向。这对于在Android应用中处理实时视频流或图像预览非常有用,比如实现缩放和旋转摄像头的功能。 此外,libyuv.so还提供了镜像图像的功能。通过使用这个库,我们可以轻松地在水平和垂直方向上对图像进行镜像翻转。这在一些镜像或翻转效果的应用中非常有用,比如实现照片编辑软件中的镜像滤镜效果。 总之,libyuv.so是一个强大的图像处理库,它提供了许多常用的图像操作的函数,可以方便地在Android平台上进行图像处理。无论是颜色空间转换、缩放、旋转还是镜像,libyuv.so都能帮助我们实现这些功能,而且使用起来非常便捷。 ### 回答2: libyuv.so是一个用于处理图像和视频的开源库,特别适用于Android平台。它提供了一系列的函数和工具,用于进行图像和视频的格式转换、旋转、缩放和裁剪等操作。 libyuv.so库的功能非常强大,可以处理各种不同编码格式的图像和视频。它支持YUV、RGB和ARGB等不同的颜色格式,并且可以进行各种不同格式之间的转换。这使得它在处理图像和视频时非常灵活,可以适应不同的需求和场景。 除了格式转换,libyuv.so还提供了一些其他功能,如图像和视频的旋转、缩放和裁剪等操作。这些功能可以帮助开发者在处理图像和视频时更加方便和高效。例如,开发者可以使用libyuv.so库将图像旋转90度或者180度,实现图像的镜像效果,或者进行图像的缩放和裁剪等操作。 另外,libyuv.so库还提供了一些用于图像和视频处理的工具函数,如计算PSNR(峰值信噪比)、计算图像差异、计算图像相似度等。这些工具函数可以帮助开发者评估图像和视频质量,进行相关的算法研究和优化。 总的来说,libyuv.so是一个功能强大的开源库,适用于Android平台的图像和视频处理。它提供了多种功能和工具,方便开发者进行图像和视频处理相关的操作,同时也帮助提高了开发效率和质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值