OpenCV - Как включить прокрутку до окон с изображениями? - PullRequest
3 голосов
/ 03 февраля 2011

Так что в настоящее время я открываю изображения, созданные с помощью openCV, что-то вроде

                cvNamedWindow( "Original Image", CV_WINDOW_AUTOSIZE );
                cvShowImage( "Original Image", original );

но мои изображения довольно большие и исчезают с экрана, как показано здесь

Lena

Я хочу, чтобы окна были изменяемого размера или хотя бы размера экрана пользователя, но с прокруткой.

Как это сделать?

Ответы [ 4 ]

4 голосов
/ 03 февраля 2011

EDIT

Краткий ответ: вы не можете "включить" его, вы должны реализовать его.

OpenCV имеет трекбары - посмотрите документацию , в частности, функцию cvCreateTrackbar. Однако, даже если вы используете их, вам все равно придется писать код за ним (для определения нового ROI и определения того, что на самом деле показывать).

Если это звучит слишком устрашающе, вы можете обернуть отображаемое изображение с помощью некоторого графического интерфейса. Вот пример , который использует OpenCV с wxWidgets. Конечно, вы можете использовать любой другой графический интерфейс (например, Qt).

3 голосов
/ 02 ноября 2014

Простой способ прокрутки большого изображения - использование трекбара и прямоугольника для подрезания.

  .
  .
  .

namedWindow("winImage",WINDOW_AUTOSIZE);
namedWindow("controlWin",WINDOW_AUTOSIZE);

int winH=300;
int winW=600;
if(winH>=largeImage.rows)winH=largeImage.rows-1;
if(winW>=largeImage.cols)winW=largeImage.cols-1;

int scrolHight=0;
int scrolWidth=0;  
cvCreateTrackbar("Hscroll", "controlWin", &scrolHight, (largeImage.rows -winH));
cvCreateTrackbar("Wscroll", "controlWin", &scrolWidth, (largeImage.cols -winW));
while(waitKey(0)!='q'){
 Mat winImage= largeImage( Rect(scrolWidth,scrolHight,winW,winH) );
 imshow("winImage",winImage);
}//while
  .
  .
3 голосов
/ 24 июня 2014

Это может помочь за один шаг: просто используйте CV_WINDOW_NORMAL вместо CV_WINDOW_AUTOSIZE.

cvNamedWindow(yourWindowName, CV_WINDOW_NORMAL);

cvShowImage("Original Image", original);
0 голосов
/ 03 февраля 2011

Насколько я знаю (но я только недавно начал изучать OpenCV), вам нужно собрать библиотеку OpenCV с библиотекой Qt GUI в качестве бэкэнда GUI.

Тогда вы получите все милые функции.

Хорошо, хорошо, не так много, но то, что есть, задокументировано только как Qt.

EDIT : PS, поскольку, возможно, другой ответ может посеять путаницу, я не говорю о том, чтобы использовать Qt для самостоятельной реализации такой функциональности. Я говорю о функциональности, доступной в модуле HighGUI OpenCV.

Приветствия & hth.,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...