数字图像处理(2)——环境搭建(MATLAB、OpenCV、Python)

 

前言:为什么图像处理学习最常用的图片是Lena?

标题

参考[1] 。Lena Söderberg 是瑞典模特,最初出现在《花花公子》1972年11月期的杂志中,原图是一张裸体图片(这并不是重点!!!)。其实还有一些原因[2]:

首先,Lenna图像包含了各种细节、平滑区域、阴影和纹理,这些对测试各种图像处理算法很有用。它是一副很好的测试图像!第二,图像处理工作的人都是些什么样的家伙大家都知道,看看Github被称为“全球最大的同性交友网站”就知道开发人员占比了。

2、MATLAB2018a安装

2.1 MATLAB环境配置

        MATLAB作为一种强大的数学计算软件,应用的领域也随着Tools的增加而逐步扩大,甚至有些工具包还会独立出来做成软件。而MATLAB的软件也日渐膨胀。目前最新版的MATLAB2019a已经支持深度学习相关的算法了,甚至在APP里面还有视频图像自动标签的功能。

        但是MATLAB的安装还是传统的套路,没什么坑。这里附上安装教程:

        https://www.cnblogs.com/shenxiaolin/p/9129618.html

        https://jingyan.baidu.com/article/0a52e3f4e3a8a7bf62ed72f0.html

        注意自己电脑系统的位数和MATLAB的相匹配,即64位的系统,安装64位的MATLAB。

2.2 MATLAB 读显图片

        上一章我们讲到,MATLAB中,图像的存储方式是以矩阵存储的,实际上,对图像的操作就是矩阵运算过程。MATLAB的绘制图片,都是描点的方式(描点绘图在中学就学过)。

这里一定要注意的是,你的工作空间,也就是左侧那个当前文件夹里面一定要有你要处理的图片,或者说一定要切换到工作目录下面。

clear    % 清除工作空间变量,防止变量互相干扰
clc      % 清空命令行
I = imread('lena.jpg');      % 读取当前目录下的lena.jpg图片,返回值为矩阵I
imshow(I)

        可以看到右侧工作区的变量 I 为512*512*3的矩阵,实际上存储的是RGB三个通道的数据,每个通道分别为512*512像素。如果我们想要查看各个通道的情况,可以直接imshow这些通道:

subplot(3,1,1);     % 绘制图片
imshow(I(:,:,1))    % 显示红色通道
title('红色分布情况');
subplot(3,1,2);
imshow(I(:,:,2));   % 绿色通道
title('绿色分布情况');
subplot(3,1,3);
imshow(I(:,:,3));   % 蓝色通道
title('蓝色分布情况');

所以,知道为什么选择这副图像了吧!!!

3、OpenCV+VS2013环境配置

3.1、OpenCV + VS2013 + Windows 10环境配置

VS2013的安装:https://jingyan.baidu.com/article/ab0b56305e8883c15bfa7d7a.html

正常配置,安装默认组件即可,无坑。但是要注意路径问题,不要含有中文名称,不要含有空格

VS2013+OpenCV的配置:http://blog.chinaaet.com/crazybird/p/5100054053

这里可能会有很多的坑,最常出现的就是我总结了以下几点配置时会遇到的问题:

(1)OpenCV 版本:OpenCV的版本和VS2013版本是有匹配关系的,这个一定要注意,尤其是OpenCV下的 *\opencv\build\x64\ 目录下面会有  vc10,vc11,vc12,vc14......

这些目录的匹配关系如下表:

OpenCV和VS的对应关系
*\opencv\build\x64\ 对应的Visual Stdio 
vc10 VS2010
vc11 VS2012
vc12 VS2013

具体的版本对应,还要自己找。

(2)环境变量的设置:环境变量本身是一个文件夹所在的路径,不同的博客上面会有不同的定义方式,但无非就是$符和绝对路径的区别,仔细观察就行。环境变量添加的时候看你要添加的是X86还是X64。如果你选择了X64,就一直下去。

这里一定要注意你到底配置的是X86机器还是X64机器,一定要注意这个问题!!!!!!!

(3)需要注意的事项:VS中需要配置的项目

这里一定要注意你到底配置的是X86机器还是X64机器,一定要注意这个问题!!!!!!!

       默认情况下是32位机器,即属性 Win32,如果你需要修改编译器,那么一定要先修改成X64,这时候对应的属性管理器也会不同。

假设我们设置的是X64机器。则

a. 属性管理器双击的是 Debug | x64 下面的 Microsoft.Cpp.x64.user

b. 后面的配置均在这个下面。

3.2、OpenCV图像读显

搞了一下午,终于弄完了。

另一个注意事项:工作目录是项目名目录!!!!

在VS生成项目时,会生成如下文件,第一个文件夹就是你的工作目录,如果还记得MATLAB的那部分,大家就知道这个问题的重要性了。

生成的项目目录
图片应放在这里

以下为图像的读取和显示测试代码

#include <opencv2\opencv.hpp>
using namespace cv;

int main()
{
	Mat img = imread("test.jpg"); //  载入一张图片
	imshow("test", img);         //  在窗口中显示载入的图片
	waitKey();                      //  等待按键按下退出
	return 0;
}

 结果:

 

4、Python3 及图像相关模块配置

       为什么要推荐大家用 Python3 ?

       因为Python官网说:2020年将不再维护 Python2  !!!!!!

        python的环境配置就不说了,因为比较简单,并且基本不会遇到坑。

        目前主流的Python环境是 Anaconda 、Pychram、Python IDLE、Jupyter.

4.1 PIL 库和 matplotlib 介绍

PIL可以做很多和图像处理相关的事情[3]:

  • 图像归档(Image Archives)。PIL非常适合于图像归档以及图像的批处理任务。你可以使用PIL创建缩略图,转换图像格式,打印图像等等。
  • 图像展示(Image Display)。PIL较新的版本支持包括Tk PhotoImage,BitmapImage还有Windows DIB等接口。PIL支持众多的GUI框架接口,可以用于图像展示。
  • 图像处理(Image Processing)。PIL包括了基础的图像处理函数,包括对点的处理,使用众多的卷积核(convolution kernels)做过滤(filter),还有颜色空间的转换。PIL库同样支持图像的大小转换,图像旋转,以及任意的仿射变换。PIL还有一些直方图的方法,允许你展示图像的一些统计特性。这个可以用来实现图像的自动对比度增强,还有全局的统计分析等。

Matplotlib 则是受到MATLAB的启发,并且完全仿照MATLAB的函数形式的绘图接口。

当然,Python也可以使用Opencv的方式来处理图像。

4.2、图像的读取与显示

这里我基于Ananconda下的Spyder来做图像处理。

# -*- coding: utf-8 -*-

from PIL import Image          # 导入PIL库
im = Image.open('test.jpg');   # 读取图片
bands = im.getbands()          # 显示该图像的所有通道
im.show()                      # 显示图像

显示结果

 这里是需要一个图片查看工具的。

参考

[1] https://cloud.tencent.com/developer/news/324419

[2] https://baike.baidu.com/item/%E8%8E%B1%E5%A8%9C%C2%B7%E7%91%9F%E5%BE%B7%E8%B4%9D%E9%87%8C/10916076?fr=aladdin

[3] https://www.cnblogs.com/lyrichu/p/9124504.html

[4] https://www.jianshu.com/p/da385a35f68d

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章