OpenCV – 如何启用图像滚动窗口?

所以目前我打开用类似openCV创build的图像

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

但是我的图片非常大,像这里显示的那样离开了屏幕

莉娜

我想要窗口可resize或至less是用户屏幕的大小,但与滚动。

如何做这样的事情?

编辑

简短的回答:你不能“启用”它,你必须执行它。

OpenCV确实有trackbars – 看看文档 ,特别是cvCreateTrackbar函数。 但是,即使使用它们,您仍然需要编写代码(用于确定新的ROI并确定实际显示的内容)。

如果这听起来有点太令人生畏,那么你可以使用一些GUI框架来包装显示的图像。 这是一个使用OpenCV和wxWidgets的例子 。 当然,你可以使用任何其他的GUI框架(例如,Qt)。

滚动大图的简单方法是使用轨迹栏和矩形进行剪切。

  . . . 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 . . 

据我所知(但我最近才开始看OpenCV),你需要建立OpenCV库与Qt的GUI库作为GUI的后端。

然后你得到所有可爱的功能。

好吧,没有多少,但是那里的那个只有Qt。

编辑 :PS,因为可能其他答案可能会混淆,我不是在谈论使用Qt自己实现这样的功能。 我正在讨论OpenCV的HighGUI模块中可用的功能。

干杯&hth。,

这可能有助于一步:只需使用CV_WINDOW_NORMAL而不是CV_WINDOW_AUTOSIZE

 cvNamedWindow(yourWindowName, CV_WINDOW_NORMAL); cvShowImage("Original Image", original);