常见语言都有简单的图像处理库,我知道java、python等都有。这些库一般比较简单,方便在对应的语言下进行简单的图像处理。另外,一些需要图像处理的芯片也会实现自己独立的图像处理库。

在学习工作过程中,我一般使用matlab、magick、opencv进行图像处理(opengl一般进行图形处理)。

matlab是一个非常强大的软件,包含很多数学处理基础,图像处理,模式识别,信号处理等,和数学沾边的方方面面几乎在matlab中都有比较完美的实现。堪称数学界的神曲。但是它不太合适用于工程应用,着重于过程实现。它函数使用非常简单,如果有想法可以先在matlab下试试。

magick和opencv是在实际项目中比较常用的两个图像处理软件,在实际的应用中,他们各有优缺点。下面介绍一下这两个图像处理库。

magick的官方网站:http://www.imagemagick.org/script/index.php(imagemagick)

http://www.graphicsmagick.org/(graphicmagick)

opencv的官方网站:http://opencv.willowgarage.com/wiki/

  1. 语言版本
  • magick:         G2F(Ada), MagickCore(C), MagickWand(C), ChMagick(Ch), ImageMagickObject(COM+), Magick++(C++), JMagick(Java), L-Magick(Lisp), NMagick(Neko/haXe), MagickNet(.NET), PascalMagick(Pascal), PerlMagick(Perl), MagickWand for PHP(PHP), IMagick(PHP), PythonMagick(Python), RMagick(Ruby), or TclMagick(Tcl/TK):使用者可以根据自己习惯的语言来进行相应的编程,我在图像处理的过程中使用的是C++版本的。
  • opencv:       python版本和C版本(有10%代码是C++实现的):我使用的是C版本
  • 对比示例:
// magick中的图像读写
Image image("xxx.jpg");
// 或者
Image image; image.read("xxx.jpg"); image.write("xxxx.jpg");
// opencv中的图像读写
IplImage* image = cvLoadImage("xxx.jpg");
cvSaveImage("xxxx.jpg", image);

2. 实现

  • magick:magick主要是以应用的角度展示它的实现,比如图像切割,图像融合,图像模糊,图像锐化等。
  • opencv:opencv主要是以算法的角度来展示它的实现,也就是说,它实际提供的是各种图像处理算法,如果需要具体的应用,你需要组合它所提供的算法实现来实现某个功能。
  • 对比示例:
// magick中的图像切割image.crop( Geometry(100,100, 100, 100) );(magick中的图像切割)//opencv中的图像切割CvRect crop_rect = cvRect(100,100, 100, 100)IplImage* image_crop = cvCreateImage(cvSize(crop_rect.width, crop_rect.height), image->depth,  image->nChannels);cvSetImageROI(image, crop_rect);
cvCopy(image, image_crop);
cvResetImageROI(image);
// magick中的图像缩放
image.zoom("200x200");//得到是最长边为200的图像
// opencv中的图像缩放
int max_size = 200;
int ori_width = image->width;
int ori_height = image->height;
CvSize dst_size;
if(width > height)dst_size = cvSize(max_size, int(max_size * height/(double)width));
elsedst_size = cvSize(int(max_size * width / (double)height), max_size);
IplImage* image_zoom = cvCreateImage(dst_size, image->depth, image->nChannels);
cvResize(image, image_zoom, CV_INTER_LINEAR);

3.  opencv和magick的优缺点对比

  • opencv和magick都是开源代码,方便开发
  • magick最近更新不多,opencv近几年有Intel的支持更新比较及时,功能越加强大,bug修复也比较及时。
  • magick使用简便;opencv的使用稍微复杂,对使用者有一定的图像技术要求。同时,magick封装较好,使用灵活度稍低;opencv使用比较灵活。
  • magick功能实现较少,主要是一些常用的图像处理实现,很多比较复杂的图像处理没有实现。opencv的算法实现非常强大,而且从它最近版本更新的速度来看,它将更加强大,很多经典的图像处理算法都被它实现。作为一个图像开发者,这是一个很大的诱惑。
  • magick函数的运行时间较慢, opencv运行速度较快。常见的函数 ,比如图像读,图像压缩,图像写等等 ,opencv都要比magick快很多。感兴趣的同学可以自己测试一下,速度的提升会让你满意的。

4.   选择

  • 通过opencv和magick的优缺点对比,你也许已经有决断了。总之,opencv功能强大,代码运行速度快,更新速度快,对开发者有一定的要求。magick使用比较简单,对图像处理不太熟悉,又只是想实现简单的图像处理的同学可以选择magick。
  • opencv不能解析gif文件格式,听说是因为版权的原因。如果你要用opencv的功能,又需要解析gif文件格式,可以先用其他函数库将其读入再转化为IplImage。
  • magick有一个不错的sharpen函数,用于锐化图像,效果挺不错。opencv中没有锐化函数,没有相应的锐化算法实现。我自己尝试了几种锐化方法,但是都没有magick中的实现效果好。所以你确实想在opencv下用这个函数的话,可以将magick中对应的源代码实现。
  • 如果选择使用magick的同学,建议使用graphicsmagick。 graphicsmagick和imagemagick的函数调用方法相同,但是graphicsmagick在效率上优于imagemagick,特别是在windows下运行。
原文地址:http://www.udpwork.com/item/5810.html

opencv和magick两个图像处理库的使用心得相关推荐

  1. pilt图像处理_详解python opencv、scikit-image和PIL图像处理库比较

    进行深度学习时,对图像进行预处理的过程是非常重要的,使用pytorch或者TensorFlow时需要对图像进行预处理以及展示来观看处理效果,因此对python中的图像处理框架进行图像的读取和基本变换的 ...

  2. 两大图像处理库Halcon和Opencv 的对比

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 OpenCV Halcon 开发语言 C++.C#(emgu).P ...

  3. Python的图像处理库(OpenCV,PIL,matplotlib和scikit-image)

      目前接触过的python图像处理代码涉及到多种的图像库,其中最常用的当属opencv和PIL.惭愧的是,以前只是拿来用,却一直迷惑为什么不同的代码会选择不同的图像库.这些图像库的联系和区别又是什么 ...

  4. 除opencv以外的一些图像处理库(包含链接)

    最近被要求找一些除了opencv以外的一些图像处理库,但网上很多类似的记录,链接都失效了,于是整理了一些目前链接还是有效的库 库名 功能简述 ICL 新型的C + +计算机视觉库,由比勒费尔德大学神经 ...

  5. 《OpenCv视觉之眼》Python图像处理六 :Opencv图像傅里叶变换和傅里叶逆变换原理及实现

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  6. 《OpenCv视觉之眼》Python图像处理十二 :Opencv图像轮廓提取之基于一阶导数的Roberts算法、Prewitt算法及Sobel算法

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  7. 机器视觉基础知识/经典系统/常用领域以及机器视觉常用的图像处理库

    [0-定义] **计算机视觉:**一门研究如何使机器"看"的科学,更进一步的说,就是指用摄影机和计算机代替人眼对目标进行识别.跟踪和测量等机器视觉,并进一步做图像处理,用计算机处理 ...

  8. Python图像处理【2】探索Python图像处理库

    探索Python图像处理库 0. 前言 1. 利用 scikit-image 绘制图像 2. 使用 SciPy 模块裁剪/调整图像大小 3. 使用 OpenCV 绘制轮廓 3.1 轮廓简介 3.2 绘 ...

  9. python下医学图像处理库的安装问题(更新中)

    1. pip install dipy:DIPY is a python toolbox for analysis of MR diffusion imaging. 2. pip install ni ...

最新文章

  1. C++实现求字符串的所有的组合
  2. Flex命令行学习总结
  3. How is SAP Gateway metadata request converted to XML format transformation
  4. 线程管理(九)使用本地线程变量
  5. 只要一点点力气就可以撬起重物?
  6. vivo C/C++工程师视频面试总结 20180802
  7. 小程序 获取当前用户地址及地图显示
  8. IEnumerable和IQueryable的区别
  9. Envoy service mesh、Prometheus和Grafana下的微服务监控(翻译)
  10. 安卓最好的浏览器_今日软件 | AI一键抠图、隐私保护工具、全能下载器、安卓启动器、茄子快传、迅雷、批量字符替换、傲游浏览器、全局负一屏...
  11. 自己应该如何不断学习呢?
  12. 有关使用seajs和template模板的总结
  13. dexposed框架Android在线热修复
  14. 分页,在第一页不显示上一页或禁止使用上一页
  15. 实验三 直流扫描分析
  16. Socket(网络编程)面试题
  17. 最不起眼的基础知识,却成了你面试跨不过去的门槛
  18. 企业邮箱是什么?企业邮箱和个人邮箱的区别在哪里
  19. ps有一款比较好用的插件也就是调色插件用过吗
  20. prometheus-community-PushProx介绍

热门文章

  1. 印度乘法口诀双位数乘法详解
  2. 联想拯救者Y7000P和Y9000P的区别
  3. bootcmd执行过程
  4. Vue中插入base64图片
  5. 自动化运维为什么是必须的?
  6. 如何申请微信公众号--企业服务号
  7. 若依RuoYi-Vue前后端项目启动流程
  8. 【富文本】亿图思维导图MindMaster Pro限时赠送正版
  9. MyBatisPlus 开启事务并交由 Springboot 管理
  10. c语言还是python-自学编程应该从c语言还是python入手?