在上一篇文章opencv 顯示第一副圖像 中, 咱們完成了一副圖像的顯示, 包括使用VS,和QT 進行顯示.. 本文將展現如何進行圖像的顯示與存儲過程, 主要以 QT爲例, 附帶介紹一下 VS的實現方法html
咱們以上一章節的顯示圖像爲例git
必定要注意 路徑的位置, windows 下面的 \ 斜槓 爲 C++ 裏面的轉義符號, 換成 / 或者 \ 來表示github
#include "mainwindow.h"
#include <QApplication>
// 引入 opencv 函數頭文件
#include <opencv2/opencv.hpp>
int main(int argc, char *argv[]) {
QApplication a(argc, argv);
MainWindow w;
w.show();
// 設置 要顯示的圖像路徑
std::string test_pic = "D:\\Project\\Vision\\ImageLab\\TestImages\\lena.png";
// 讀取圖像
cv::Mat lena_img = cv::imread(test_pic);
// 顯示圖像
cv::imshow("圖像顯示窗口", lena_img);
// cv::waitKey(100);
// 存儲圖像
std::string write_pic = "D:\\Project\\Vision\\ImageLab\\TestImages\\lena_write.png";
cv::imwrite(write_pic,lena_img);
return a.exec();
}
咱們使用 imread
函數 去讀取文件, 使用 imshow
顯示圖像, 使用 imwrite
將圖像存儲到文件中.web
咱們運行可以顯示 lena 圖像, 而後點擊右上角 關閉窗口以後, 能夠在文件夾看到生成的圖像, write_lena.png
圖像, 和原始圖像如出一轍,編程
在咱們的程序運行過程當中, 爲了不一些沒必要要的解釋, 咱們都使用的是 絕對路徑,
可是若是咱們須要作遷移, 到別的電腦上, 大機率是運行不成功的, 會顯示文件沒法找到等問題, 因此 程序中儘可能使用相對路徑
具體的路徑的差異能夠參考相對路徑和絕對路徑windows
絕對路徑就是 從硬盤開始的, 一直到某個文件夾的路徑, 相似於 D:\Project\Vision\ImageLab
的形式,
相對路徑是從當前文件開始的, 使用 ./
表示當前目錄, ../
表示上一層目錄,
對於咱們 QT 工程來講, 原始運行目錄爲: D:\Project\Vision\ImageLab
markdown
./
表示 D:\Project\Vision\ImageLab
../
表示 D:\Project\Vision
./TestImages
表示 D:\Project\Vision\ImageLab\TestImages
../ImageLab
又表示回來了當前目錄 D:\Project\Vision\ImageLab
./Depend/opencv/lib
能夠表示到 opencv 的lib 庫文件夾 D:\Project\Vision\ImageLab\Depend\opencv\lib
多用就好, 很容易就上手學會了.函數
QT 默認的構建目錄 能夠在 工具--選項--構建與運行-- 默認構建目錄
裏面設置, 默認裏面是
../%{JS: Util.asciify("build-%{CurrentProject:Name}-%{CurrentKit:FileSystemName}-%{CurrentBuild:Name}")}
這裏是 QT 進行的一些宏的解析, %{CurrentProject:Name}
表示當前工程名 ImageLab , %{CurrentKit:FileSystemName}
是運行環境 Desktop_Qt_5_14_2_MSVC2017_64bit
, %{CurrentBuild:Name}
是 Debug, 最後 解析成 ../build-ImageLab-Desktop_Qt_5_14_2_MSVC2017_64bit-Debug
, 會在當前文件夾的上一層目錄裏面創建 build-ImageLab-Desktop_Qt_5_14_2_MSVC2017_64bit-Debug
文件夾, 把全部的編譯文件和生成文件放進去,工具
我不是很喜歡這種方式, 不過創建好工程以後, 能夠在 左側的 項目裏面, 選擇你的編譯套件, 而後設置 構建目錄
ui
咱們將其設置成爲 D:\Project\Vision\ImageLab\Debug
, 這樣, 咱們在程序執行過程當中能夠將讀寫的文件路徑改成 ../TestImages/lena.png
, 和 ../TestImages/lenalena_write.png
文件, 一樣的程序也可以運行成功. 再次看到 lena
VS 的構建目錄能夠經過設置中間目錄和輸入目錄設定, VS 的工程設置都是在解決方案上右鍵, 設置 調試-- 工做目錄
VS 使用 $(ProjectDir)
的形式去解析宏定義, 這個目錄表示 VS 工程(不是解決方案) 的路徑, 在本工程中表示 就是 D:\Project\Vision\ImageLab
目錄, 那咱們的 讀寫文件的路徑都要更改, ./TestImages/lena.png
, 和 ./TestImages/lenalena_write.png
在VS 和 QT 混合編程的時候 必定要注意相對路徑的設置 不要坑到了本身..