2011-02-03 35 views
2

所以目前我打開與OpenCV的創建與一些相似圖片OpenCV - 如何啓用圖像滾動窗口?

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

,但我的圖片非常大,

Lena

我想窗口是可調整大小熄滅像這裏顯示的畫面或至少用戶屏幕的大小,但滾動。

如何做這樣的事情?

+7

請下次使用真SFW圖片:) – CharlesB 2011-02-03 14:02:18

回答

0

據我所知(但我最近纔開始關注OpenCV),您需要構建帶有Qt GUI庫的OpenCV庫作爲GUI後端。

然後你得到所有可愛的功能。

好的,沒有多少,但是那裏的那個小文件只記錄爲Qt。

編輯:PS,因爲可能還有其他的答案可能製造混亂,我不談論使用Qt自己實現這樣的功能。我正在討論OpenCV的HighGUI模塊中可用的功能。

乾杯&心連心,

4

編輯

簡短的回答:你不能 「使能」,你必須實現它。

OpenCV確實有trackbars - 看看documentation,特別是cvCreateTrackbar函數。但是,即使您使用它們,您仍然必須編寫代碼(以確定新的ROI並確定實際顯示的內容)。

如果這聽起來有點太令人生畏,那麼您可以使用一些GUI框架來包裝顯示的圖像。這是一個使用OpenCV和wxWidgets的example。當然,你可以使用任何其他的GUI框架(例如Qt)。

0

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

cvNamedWindow(yourWindowName, CV_WINDOW_NORMAL); 

cvShowImage("Original Image", original); 
2

滾動大圖像的一種簡單方法是使用軌跡欄和矩形進行剪切。

. 
    . 
    . 

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