數字圖像處理(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

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