이미지 데이터베이스를 통해 검색하는 프로젝트에서하고 있으며 일부 쿼리 - 5 데이터베이스 이미지에 대한 결과를 시각적으로 표시하고 싶습니다. 모든 이미지를 메모리에 보관하지 않으므로 이미지를 표시하기 위해 먼저 이미지를로드해야합니다.OpenCV - 이미지 디스플레이 창 닫기
IplImage *img;
for (int i=0; i < 5; ++i){
img = cvLoadImage(images[i].name.c_str(),1);
cvShowImage(("Match" + images[i].name).c_str(), img);
cvWaitKey(0);
cvDestroyWindow(("Match" + images[i].name).c_str());
// sleep(1);
cvReleaseImage(&img);
}
여기에 사용 images
배열로하지 않습니다 이러한 목적을 위해 OpenCV
를 사용 C++
에 여기
for image 1..5
load images
display image in a window
wait for any keypress
close the window
내 코드의 조각이다 :
나는 의사의 마음에 뭔가를 간단했다 그러한 것들이 내 코드에 존재하지만, 질문을 위해서, 그것은
name
회원 인 경우 현재 프로그램 실행 포인트와 관련된 이미지의 파일 이름을 포함합니다. 프로젝트에서 이미지 이름을 약간 다르게 저장합니다.
거의 작품 위의 코드 : 나는 OK 4/5 이미지를 반복 할 수 있지만, 마지막 이미지가 표시되고 키를 누를 때, 이미지가 회색 간다 내가 나머지를 충돌 withouth 이미지 창을 닫을 수 없습니다 내 신청서의
내 첫 번째 아이디어는 컴파일 시간 최적화 때문에 cvReleaseImage
이 cvDestroyWindow
이 완료되기 전에 이미지를 해제하고 어떻게 든 멈추게한다는 것입니다. 그러나, 나는 약간의 대기 시간 (그러므로 내 코드의 sleep(1)
행을 주석으로 처리했다)을 추가하려고 시도했지만 도움이되지 않았다.
내 콘솔 응용 프로그램에서이 디스플레이 기능을 호출하고 이미지가 정지되면 컨트롤이 내 응용 프로그램으로 돌아가고 계속 사용할 수 있지만 이미지 창은 여전히 백그라운드에서 고정되어 있습니다.
해결 방법에 대한 의견을 보내주십시오.
나는 여전히 아이디어를 질문을하기 때문에 정기적으로 컴퓨터 비전과 OpenCV의 다루는 사람들에게 이야기하지 않고, 한
편집 할 수 있습니다.
나는 또한 stackoverflow question과 유사한 것을 발견했으나 여전히 받아 들여지지 않은 대답이 있습니다. Google은 결과와 비슷한 질문을하지만 대답은 제공하지 않습니다.
시도해 봐야 할 아이디어 (완벽한 해결책이 아닐지라도)는 대단히 감사하겠습니다.
이미지 배열에 대해 알려주시겠습니까? 생성 및 할당 코드를 게시 할 수 있습니까? BTW 당신은 이것을 C++로 태그를 붙였습니다. 그렇다면 왜 이전 C 스타일의 opencv를 사용하고 있습니까? – Boaz
OpenCv의 C 스타일은 내 코드에서 OpenCV를 사용하는 C 라이브러리를 사용해야했기 때문에 데이터 중 일부는 C 스타일 OpenCV 데이터 구조에 있습니다. 실제로이 코드는 훨씬 더 큰 코드 조각으로, 이미지의 이름에 훨씬 다른 방식으로 액세스합니다. 질문을 위해서, images 배열에는 .name 멤버의 그림에 대한 파일 경로가 포함되어 있습니다. (질문을 업데이트합니다) – penelope
'cvDestroyAllWindows()'를 사용해 보셨습니까? 그렇다면 작동하지 않으며 어딘가에 (어쩌면 위와 같지 않음) 또는 OpenCv에서 이상한 버그가있는 것입니다. 그것이 작동하면 어딘가에 간단한 버그가 있습니다. – Florian