2016-05-06 39 views
-1

我想顯示一個基於數字的圖像我手動輸入[0或1],之後,它從一個文件夾中的20個圖像中隨機選擇一個圖像顯示。 這裏是代碼imshow()不更新其內容C++

stringstream ss; 
string fullfileName; 
int x; 
int pic = 0; 
namedWindow("MyWindow", CV_WINDOW_AUTOSIZE); 
while (1) 
{ 
    Mat img; 
    pic = 0; 
    cin >> x; 
    if (x == 0) 
    { 
     pic = rand() % ((10 - 1) + 1) + 1; 
    } 
    else if (x == 1) 
    { 
     pic = rand() % ((20 - 11) + 1) + 11; 
    } 


    ss << "C:/Users/abed/Desktop/Opencv/test/" << pic << ".jpg"; 
    ss >> fullfileName; 
    img = imread(fullfileName, CV_LOAD_IMAGE_UNCHANGED); 

    imshow("MyWindow", img); 
    char key = (char)waitKey(20); 
    if (key == 27) 
     break; 

} 
return 0; 

我的問題是:imshow()只呈現選擇的第一圖像,無論圖像路徑的新價值。 謝謝。

+0

你已經檢查過,你確定路徑正在改變?另外,所有圖像都可以加載? –

+0

是的,我確實放了一些「cout」來檢查它們是否改變,並且一切都改變,圖像的路徑是正確的,所有這些都可以加載.imshow()查看加載的第一個IMG並保持顯示它。 –

回答

2

stringstream不會自行重置。它將繼續爲現有的附加值。我建議你或者使ss和fullfileName作用域變量,即將它們移到循環中,或者在當前迭代結束之前重置ss變量,例如ss.str(「」); ss.clear()

+0

非常感謝你,當我添加ss.clear();在循環結束時 –