参考[1] 。Lena Söderberg 是瑞典模特,最初出现在《花花公子》1972年11月期的杂志中,原图是一张裸体图片(这并不是重点!!!)。其实还有一些原因[2]:
首先,Lenna图像包含了各种细节、平滑区域、阴影和纹理,这些对测试各种图像处理算法很有用。它是一副很好的测试图像!第二,图像处理工作的人都是些什么样的家伙大家都知道,看看Github被称为“全球最大的同性交友网站”就知道开发人员占比了。
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。
上一章我们讲到,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('蓝色分布情况');
所以,知道为什么选择这副图像了吧!!!
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\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. 后面的配置均在这个下面。
搞了一下午,终于弄完了。
另一个注意事项:工作目录是项目名目录!!!!
在VS生成项目时,会生成如下文件,第一个文件夹就是你的工作目录,如果还记得MATLAB的那部分,大家就知道这个问题的重要性了。
以下为图像的读取和显示测试代码
#include
using namespace cv;
int main()
{
Mat img = imread("test.jpg"); // 载入一张图片
imshow("test", img); // 在窗口中显示载入的图片
waitKey(); // 等待按键按下退出
return 0;
}
结果:
为什么要推荐大家用 Python3 ?
因为Python官网说:2020年将不再维护 Python2 !!!!!!
python的环境配置就不说了,因为比较简单,并且基本不会遇到坑。
目前主流的Python环境是 Anaconda 、Pychram、Python IDLE、Jupyter.
PIL可以做很多和图像处理相关的事情[3]:
Matplotlib 则是受到MATLAB的启发,并且完全仿照MATLAB的函数形式的绘图接口。
当然,Python也可以使用Opencv的方式来处理图像。
这里我基于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