opencv-3-圖片存儲與相對路徑

opencv-3-圖片存儲與相對路徑

在上一篇文章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\ImageLabmarkdown

  • ./ 表示 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 運行路徑

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 文件夾, 把全部的編譯文件和生成文件放進去,工具

我不是很喜歡這種方式, 不過創建好工程以後, 能夠在 左側的 項目裏面, 選擇你的編譯套件, 而後設置 構建目錄
QT 編譯路徑ui

咱們將其設置成爲 D:\Project\Vision\ImageLab\Debug , 這樣, 咱們在程序執行過程當中能夠將讀寫的文件路徑改成 ../TestImages/lena.png, 和 ../TestImages/lenalena_write.png 文件, 一樣的程序也可以運行成功. 再次看到 lena

VS 運行路徑

VS 的構建目錄能夠經過設置中間目錄和輸入目錄設定, VS 的工程設置都是在解決方案上右鍵, 設置 調試-- 工做目錄 VS 使用 $(ProjectDir) 的形式去解析宏定義, 這個目錄表示 VS 工程(不是解決方案) 的路徑, 在本工程中表示 就是 D:\Project\Vision\ImageLab 目錄, 那咱們的 讀寫文件的路徑都要更改, ./TestImages/lena.png, 和 ./TestImages/lenalena_write.png

VS運行目錄
VS運行目錄

其餘

在VS 和 QT 混合編程的時候 必定要注意相對路徑的設置 不要坑到了本身..

相關文章
相關標籤/搜索