2011-02-03 5 views
2

그래서 현재 내가OpenCV - 이미지가 포함 된 창으로 스크롤하는 방법을 사용 하시겠습니까?

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

처럼 뭔가 OpenCV의로 만든 이미지를 열하지만 내 이미지가 매우 크고, 나는 창 크기 조정되고 싶어

Lena

여기에 표시된 같은 화면을 이동하거나 적어도 사용자 화면의 크기이지만 스크롤하는 것이 좋습니다.

그런 일을하는 방법?

+7

정말 다음 SFW 이미지를 사용하십시오 :) – CharlesB

답변

0

내가 아는 한 (하지만 최근에야 OpenCV를 살펴 보았습니다) GUI 백엔드로 Qt GUI 라이브러리가있는 OpenCV 라이브러리를 만들어야합니다.

그러면 모든 귀여운 기능을 사용할 수 있습니다.

글쎄, 좋아,별로 많지는 않지만, 거기에는 Qt로만 기록되어있다.

편집 : 아마도 다른 대답은 혼란을 뿌릴 수 있으므로 PS, 내가 하지는 이러한 기능을 직접 구현하는 Qt를 사용에 대한 이야기입니다. OpenCV의 HighGUI 모듈에서 사용할 수있는 기능에 대해 이야기하고 있습니다.

건배 & HTH,

4

편집

짧은 답변 :. 당신이 그것을 "수"없습니다, 당신은 그것을 구현해야합니다.

OpenCV에는 documentation, 특히 cvCreateTrackbar 기능이 있습니다. 그러나 이들을 사용하더라도 새로운 ROI를 결정하고 실제로 무엇을 표시할지 결정하기 위해 코드를 작성해야합니다.

약간 힘든 것처럼 들리면 일부 GUI 프레임 워크를 사용하여 표시된 이미지를 래핑 할 수 있습니다. 다음은 wxWidgets에서 OpenCV를 사용하는 example입니다. 물론 다른 GUI 프레임 워크 (예 : Qt)를 사용할 수 있습니다.

0

이것은 한 단계에 도움이 될 수 있습니다. CV_WINDOW_AUTOSIZE 대신 CV_WINDOW_NORMAL을 사용하십시오.

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 
    . 
    . 
관련 문제