- 博客(20)
- 资源 (3)
- 收藏
- 关注
原创 openjpeg:jpeg2000(j2k)图像内存压缩编码
上一篇博文实现了《jpeg2000(j2k)图像编码解码:c++实现openjpeg内存流接口(memory stream)》中实现了openjpeg的memory stream接口,本文介绍如何用memory stream实现jpeg2000图像的内存压缩。create opj_image_topenjpeg在处理图像是有定义自己的图像描述结构opj_image_t,如果要对内存的中的图像进行压缩
2016-01-29 14:56:31 8318 6
原创 jpeg2000(j2k)图像编码解码:c++实现openjpeg内存流接口(memory stream)
前阵子用libjpeg-turbo实现jpeg图像在内存中编码与解码 参见《libjpeg:实现jpeg内存解压缩塈转换色彩空间/压缩分辨率》,《libjpeg:实现jpeg内存压缩暨error_exit错误异常处理和个性化参数设置》觉得libjpeg接口用起来挺麻烦的。。。但libjpeg 80以上的版本好歹提供了jpeg_mem_dest/jpeg_mem_src API让我可以直接将实现
2016-01-29 14:14:11 6843 14
原创 openjpeg:解决静态链接时未定义引用错误:undefined reference to `__imp_opj_xxxxxxx‘
解决办法加入OPJ_STATIC宏定义。 1. 在#include "openjpeg-2.1/openjpeg.h"之前中加入OPJ_STATIC定义,如下#ifndef OPJ_STATIC#define OPJ_STATIC#endif#include "openjpeg-2.1/openjpeg.h"2.如果你用cmake编译项目代码可以在CMakeLists.txt中加入OPJ_S
2016-01-28 11:09:12 22833 5
原创 VS2015编译openjpeg(32/64位)
上一篇博客《mingw(gcc)编译openjpeg》讲了如何用gcc编译openjpeg,但我目前只会在64位平台下生成64位目标代码,如果需要在64位平台生成32位目标代码怎么办?我还没有找到不修改CMakeList.txt的情况下在Windows 64位平台用gcc生成32位代码的办法(待研究),因为我的调试环境还是喜欢用VS2015所以我决定还是用VS2015再把openjpeg编译一遍,而
2016-01-25 16:58:27 7698 3
原创 mingw(gcc)编译openjpeg
openjpeg是C语言实现的开源jpeg2000图像格式的编码/解码器,github上有编译好的linux/windows二进制文件,目前最新的版本是2.1(https://github.com/uclouvain/openjpeg/releases/tag/version.2.1) 但官方提供的二进制文件只提供了dll,如果想要将代码静态编译到项目中需要自己下载源代码编译。下载原代码下载:ht
2016-01-25 16:00:54 4583
原创 libjpeg:读取jpeg头获取图像基本信息(jpeg_read_header)
libjpeg中的jpeg_read_header函数用于读取jpeg数据头部的基本信息,以下为jpeg_read_header的定义。/* Decompression startup: read start of JPEG datastream to see what's there */EXTERN(int) jpeg_read_header (j_decompress_ptr cinfo,
2016-01-23 17:40:26 9516 1
原创 libjpeg:实现jpeg内存解压缩塈转换色彩空间/压缩分辨率
前一篇博客《libjpeg:实现jpeg内存压缩暨error_exit错误异常处理和个性化参数设置》实现了jpeg图像的内存压缩,本文来讨论jpeg图像内存解压缩的过程先贴出完整代码,再做讲解 jpeg_mem.h/* 图像矩阵基本参数 */typedef struct _image_matrix_pram{ int32_t width;
2016-01-23 16:31:41 5717
原创 libjpeg:实现jpeg内存压缩暨error_exit错误异常处理和个性化参数设置
libjpeg-turbo是与libjpeg接口兼容的一个jpeg编/解码库,其主要的特点就是利用SIMD指令(如X86架构的MMX/SSE/SSE2,ARM架构的NEON)来加速jpeg图像的编/解码,相比被广泛使用的libjpeg,编码和解码性能提高2~4倍左右。 本文介绍的内容适用于libjpeg-turbo和libjpeg(80以上版本) 关于如何用gcc对libjpeg编译,请参考我之
2016-01-20 10:51:27 5610
原创 VS2015下解决:error LNK2019: 无法解析的外部符号 __iob_func
在使用VS2015下使用libjpeg-turbo静态库,编译时报错了: error LNK2019: 无法解析的外部符号 __iob_func,该符号在函数 output_message 中被引用根据关键字在网上找到一些文章描述了类似的错误,大都是找不到外部符号__iob,与我的情况不同,但是原理是一样的, 其实__iob_func和__iob都是用来定义stdin,stdout,stde
2016-01-16 17:15:40 49708 6
原创 cmake:让mingw(gcc)生成MSVC可用的dll(.lib)
minggw(gcc)编译出来的动态库(DLL),默认是没有MSVC连接动态库所需要的lib文件的。 关于MSVC的DLL和LIB的作用和区别,请参考这篇博文,讲得很透彻了–>《DLL和LIB的区别》那么如果VC要链接gcc生成的DLL,却没有lib文件怎么办? 对于这个问题网上都有解决的办法,这篇文章讲到一些办法,可供收藏《VC6 调用GCC的DLL》,对于没有提供lib的DLL都可以用这
2016-01-15 19:49:55 12060 11
原创 mingw(gcc)编译libjpeg-turbo
最近的工作需要读写jpeg图像,网上找了半天,发现libjpeg-turbo是个不错的选择。 ibjpeg-turbo是与libjpeg接口兼容的一个jpeg编/解码库,其主要的特点就是利用SIMD指令(如X86架构的MMX/SSE/SSE2,ARM架构的NEON)来加速jpeg图像的编/解码,相比被广泛使用libjpeg,编码和解码性能提高2~4倍左右。下面是其官网的说明: libjpeg-
2016-01-15 17:57:16 3977
原创 cmake:在各级子项目(目录)之间共享变量
项目目录结构如下图,facedetect和facefeature都要用到opencl中的include文件,1.2,2.0,2.1是不同的opencl版本的头文件,希望在cmake创建Makefile时,opencl文件夹下的CMakeLists.txt能定义类似INCLUDE_OPENCL_1_2,INCLUDE_OPENCL_2_0,INCLUDE_OPENCL_2_1,这样的变量,以保存不同版
2016-01-13 08:59:33 26534 2
原创 OpenCL ICD Loader运行测试暨解决报错:ERROR: App log and stub log differ.
上一篇博文《OpenCL Installable Client Driver (ICD) Loader编译》详细描述了如何编译OpenCL ICD Loader。OpenCL ICD Loader自带了测试程序,成功编译后可以根据源码根目录下README.txt的说明运行测试程序来验证Loader是否可以正常工作: == Running ICD Test == ICD Test can b
2016-01-11 15:54:21 2558 2
原创 OpenCL Installable Client Driver (ICD) Loader编译
ICD是什么?OpenCL Installable Client Driver (ICD) Loader是实现OpenCL应用程序与各硬件厂商提供的OpenCL驱动(platform)之间隔离的中间库。从OpenCL 1.2开始,OpenCL提供了一个ICD扩展(cl_khr_icd),它允许不同厂商的多个OpenCL驱动(platform)共存于一个主机系统,应用程序可以通过调用clIcdGetP
2016-01-11 10:38:09 5940 1
原创 java(JVM)结束时释放JNI资源(Runtime.addShutdownHook)
如下代码中cmjnidrv是一个动态库,CodeCacheManager在类加载时就自动将cmjnidrv加载进来。cmjnidrv中有多个独立的线程在运行并申请了大量的内存. release()是个native方法,用于释放cmjnidrv中的申请资源并中止cmjnidrv中的线程。 为了保证在java应用结束的时候cmjnidrv的资源能被正确释放,就必须确保release()被调用。
2016-01-05 11:20:00 2670 1
原创 cmake:动态链接库(so)中静态链接tcmalloc(gperftools2.4)暨静态链接libstdc++
将tcmalloc作为动态库使用,非常方便,网上有很多资料介绍了。tcmalloc.a也可以很方便的以静态链接的方式加入应用程序中,大概因为使用太方便,网上关于这方面的介绍都是一笔带过。真正使用的时候,还是有一些需要注意的地方。 我的项目中有一个so动态库,需要在java中通过jni调用,因为涉及频繁的内存分配操作所以这个so希望用tcmalloc管理内存池以提高系统运行效率,如果使用以动态库方式
2016-01-04 18:28:34 7196
原创 bash shell脚本安装tcmalloc,linunwind,libstdc++ so库
因为项目中使用了tcmalloc,而是用gcc 5.2.0编译的64位代码,所以项目中的so依赖libunwind,tcmalloc,以及gcc5.2.0的libstdc++.so [roo@t2]ldd /usr/local/face/lib/libcmjnidrv.so linux-vdso.so.1 => (0x00007fffa4bff000) libcmimp
2016-01-02 10:42:45 1186 1
原创 ant调用make实现Makefile编译
上一篇博文《cmake:shell(bat,sh) 脚本方式生成Makefile》中完成了cmake生成Makefile脚本的过程,也就是步骤1,本文谈谈步骤2和步骤3的实现:步骤2:为了让ant能执行make,还得用脚本实现linux sh脚本实现,build.sh:#!/bin/shexport BUILD_FOLDER="`cd "$(dirname "$0")"; pwd`.prj"##
2016-01-01 13:05:29 2209
原创 cmake 生成Makefile时指定c/c++编译器
linux下在使用cmake生成Makefile的时候,如果不指定编译器,则默认是使用系统原生的编译器, 当操作系统中安装了新的版本的编译器,两个版本编译器共存的时候,如果想使用新版本的编译,在cmake生成Makefile的时候就需要指定编译。这就是我目前遇到的情况: 我的项目代码是用C++11写的,需要支持C++11的编译,而我使用的CentOS6.5原生的编译器是gcc4.4.7(位置/u
2016-01-01 12:12:25 54957 1
原创 cmake:shell(bat,sh) 脚本方式生成Makefile
项目总体是用ant来控制编译的,但有一些用c/c++写的native的动态链接库是用cmake来生成Makefile文件编译的,为了统一用ant来控制所有代码的生成,就需要将c/c++代码也能用ant脚本编译。 总体的过程是这样的: 步骤1.为了让ant能控制c/c++代码的编译,首先就需将cmake生成Makefile的过程脚本化。 步骤2.在ant脚本中调用步骤1中的脚本来实现Makef
2016-01-01 11:46:30 4748 1
CMake脚本在ultraedit中的语法高亮支持
2023-06-08
erpcgen-windows-x86_64.zip
2020-09-17
windows下MSVC兼容的dirent.h
2016-03-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人