Значение argc и argv в int main (int argc, char ** argv) в OpenCV

В следующей программе для загрузки и отображения изображения в openCV

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main( int argc, char** argv )
{
if( argc != 2)
{
cout <<" Usage: display_image ImageToLoadAndDisplay" << endl;
return -1;
}

Mat image;
image = imread(argv[1], CV_LOAD_IMAGE_COLOR);   // Read the file

if(! image.data )                              // Check for invalid input
{
cout <<  "Could not open or find the image" << std::endl ;
return -1;
}

namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// Create a window for display.
imshow( "Display window", image );                   // Show our image inside it.

waitKey(0);                                          // Wait for a keystroke in the window
return 0;
}

Я не могу понять, как программист определяет входное изображение. Это потому, что argv [1] является просто элементом массива, и я думаю, что он не имеет отношения к изображению, которое должно быть указано, и он не был определен нигде в программе. Кто-нибудь может очистить мои сомнения?

Еще одна вещь: что проверяется в операторе «if», который проверяет, если (argc! = 2)?

3

Решение

main( int argc, char** argv )
|            |
|            |
|            +----pointer to supplied arguments
+--no. of arguments given at command line (including executable name)

Пример :

display_image image1.jpg

Вот,

argc will be 2
argv[0] points to display_image
argv[1] points to image1

if(argc !=2 )
^^ Checks whether no. of supplied argument is not exactly two
6

Другие решения

Когда пользователь запускает программу из интерфейса командной строки, он может указать путь к файлу после ввода имени программы: imdisplay image.jpg

argc содержит общее количество аргументов, включая название программы. Таким образом, если пользователь не набрал имя изображения, то argc это 1. argv это массив char*с размером argc, так argv[0] это имя программы, введенное пользователем, и argc[1] это первый аргумент.

if (argc != 2) произойдет, если пользователь использует программу неправильно.

1

Программа предназначена для вызова из командной строки с одним аргументом, который указывает имя файла:

$ display_image filename.jpg

В этом случае argv[1] будет указателем на строку «filename.jpg».

1

Если вы используете Visual Studio

argv [1] соответствует [Свойства проекта]->[Свойства конфигурации]->[Отладка]

Он может установить имя и адрес изображения

0
По вопросам рекламы [email protected]