所以目前我打开用类似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);