Переменные Opencv, не объявленные в этой области

0

Я только начал попробовать opencv. И успешно запустили программу на моем другом компьютере (есть два компьютера).

Я следовал тем же самым шаги установки, как компьютер, который построил успешно, но он не работает она подскажет вверх ниже сообщение об ошибке, после того как я cmake и make для создания проекта.

Тестирование этого примера здесь на официальном сайте: http://docs.opencv.org/doc/tutorials/imgproc/histograms/template_matching/template_matching.html#code

/home/howard/Documents/opencv/opencv-sample/template_match/template_match.cpp:11:22: warning: deprecated conversion from string constant to ‘char* [-Wwrite-strings]
 char* image_window = "Source Image";
                      ^
/home/howard/Documents/opencv/opencv-sample/template_match/template_match.cpp:12:23: warning: deprecated conversion from string constant to ‘char* [-Wwrite-strings]
 char* result_window = "Result window";
                       ^
/home/howard/Documents/opencv/opencv-sample/template_match/template_match.cpp: In function ‘int main(int, char**):
/home/howard/Documents/opencv/opencv-sample/template_match/template_match.cpp:28:30: error: ‘CV_WINDOW_AUTOSIZE was not declared in this scope
   namedWindow( image_window, CV_WINDOW_AUTOSIZE );
                              ^
/home/howard/Documents/opencv/opencv-sample/template_match/template_match.cpp:32:26: warning: deprecated conversion from string constant to ‘char* [-Wwrite-strings]
   char* trackbar_label = "Method: \n 0: SQDIFF \n 1: SQDIFF NORMED \n 2: TM CCORR \n 3: TM CCORR NORMED \n 4: TM COEFF \n 5: TM COEFF NORMED";
                          ^
/home/howard/Documents/opencv/opencv-sample/template_match/template_match.cpp: In function ‘void MatchingMethod(int, void*):
/home/howard/Documents/opencv/opencv-sample/template_match/template_match.cpp:68:24: error: ‘CV_TM_SQDIFF was not declared in this scope
   if( match_method  == CV_TM_SQDIFF || match_method == CV_TM_SQDIFF_NORMED )
                        ^
/home/howard/Documents/opencv/opencv-sample/template_match/template_match.cpp:68:56: error: ‘CV_TM_SQDIFF_NORMED was not declared in this scope
   if( match_method  == CV_TM_SQDIFF || match_method == CV_TM_SQDIFF_NORMED )
                                                        ^
make[2]: *** [CMakeFiles/template_match.dir/template_match.cpp.o] Error 1
make[1]: *** [CMakeFiles/template_match.dir/all] Error 2
make: *** [all] Error 2

Кто-нибудь знает, что происходит, и как я могу это исправить?

  • 0
    char * не для строк, которые нельзя изменить.
  • 0
    Это странно, но вы можете попробовать добавить к этим константам префикс пространства имен cv, например, cv :: CV_WINDOW_AUTOSIZE.
Показать ещё 1 комментарий
Теги:
opencv

2 ответа

1
Лучший ответ

Я обнаружил проблему, потому что я установил нестабильную версию, вы не должны напрямую устанавливать opencv из репо https://github.com/Itseez/openc/, перейти к версии выпуска и загрузить последнюю версию,

0

Я столкнулся с теми же проблемами, используя бета-версию 3.0.0.

Ваша первая строка - предупреждение C++. Вы можете просто проигнорировать это, если вы просто пытаетесь запустить тест. В противном случае используйте std::string и конвертируйте его с помощью c_str() когда вам нужно. Эти char* windowName = "My Window" отображаются в учебниках OpenCV.

Для второго параметра namedWindow() просто используйте WINDOW_AUTOSIZE вместо CV_WINDOW_AUTOSIZE.

Для соответствия шаблону вам также необходимо CV_ префикс CV_ и использовать TM_SQDIFF. Похоже, он работает и для всех остальных (TM_SQDIFF_NORMED, TM_CCORR и т.д.).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню