1. 程式人生 > >argv[1] 路徑問題

argv[1] 路徑問題

在看《學習opencv》一書時遇到一個小問題:函式只是通過argv傳遞引數來讀取圖片並顯示,但是卻一直彈出畫布,沒有影象。

如下:test.c

複製程式碼

# include<stdio.h>
#include <opencv/cv.h>
#include <opencv/cxcore.h>
#include <opencv/highgui.h>

int main(int argc, char **argv)
{

    IplImage *img = cvLoadImage( argv[1],1);
    cvNamedWindow("Example", CV_WINDOW_AUTOSIZE);
    cvShowImage("Example", img);
    cvWaitKey(0);
    cvReleaseImage(&img);
    cvDestroyWindow("Example");
    
    return 0;
    
}

複製程式碼

使用 argv[1]傳參的方法有兩種

1)點選專案——某某屬性——除錯——命令引數——寫入呼叫的圖片的地址,我的路徑是:E:\visual studio 2013\project\opencv_test\dab.jpg

我發現路徑中有空格,所以我換了一個路徑:G:\360downloads\dab.jpg  結果成功了。注意如果有多個引數只需在命令引數中空格隔開即可。

2)開啟cmd,找到並進入test.exe的路徑後,按這樣的格式(路徑名 引數)寫,以我的為例:  E:\visual studio 2013\project\SIFT_lps\text\Debug>text.exe

G:\360downloads\dab.jpg

注:

       cvLoadImage( filename, -1 ); 預設讀取影象的原通道數

  cvLoadImage( filename, 0 ); 強制轉化讀取影象為灰度圖

  cvLoadImage( filename, 1 ); 讀取彩色圖

 

補充:對於main函式原型: int main(int argc, char*argv[]),  形參argc和argv為main函式提供了命令列引數的機制。拿上文中的test.exe為例

         終端(win下)中執行 text.exe opt1 opt2 opt3  會導致main中出現如下的行引數值:

                                       argc  4       argv[0]    "test.exe"

                                                         argv[1]    "opt1"

                                                         argv[2]    "opt2"

                                                         argv[3]    "opt3"

                                                         argv[4]    " "(空字串)