2017-05-08 1 views
2

나는 canny 가장자리 샘플에 큰 문제가 있습니다. 며칠 전 작동했지만 최근에 왜 작동하지 않는 웹캠을 읽는 프로그램을 사용할 지 모르겠습니다. C++/CannyEdgeDetection.exe가 작동을 멈췄습니다. Codeblocks/OpenCV 오류 : 어설 션이 실패했습니다.

Here's the problem

내 샘플입니다 :

using namespace cv; 
using namespace std; 



int main() 
{ 
    VideoCapture cap(0); // open the default camera 
    if(!cap.isOpened()) // check if we succeeded 
    return -1; 


    Mat edges; 
    namedWindow("edges",1); 
    for(;;) 
    { 
     Mat frame; 
     cap >> frame; // get a new frame from camera 
     cvtColor(frame, edges, CV_BGR2GRAY); 
     GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5); 
     Canny(edges, edges, 0, 30, 3); 
     imshow("edges", edges); 
     if(waitKey(30) >= 0) break; 
    } 
    return 0; 
} 

나도 같은 샘플을 사용하기 때문에 정말, 무슨 일이 일어나고 있는지 모르겠지만, 작동이 중지하기로 결정.

답변

0

어설 션은 cvtColor에 입력 한 내용이 3 개 또는 4 개의 채널을 포함하는지 확인합니다. 어느 카메라에서든지 데이터를 복구하지 못했습니다.이 경우 cout << frame.size();[0 x 0]을 콘솔에 인쇄하거나 카메라가 BGR 이미지를 생성하지 않아야합니다. frame.channels()에 전화하여 채널 수를 확인할 수 있습니다.

frame.size()[0 x 0] 인 경우 다른 카메라에서 사용하는 OS에 의해 카메라가 사용 중지되거나 OpenCV와 호환되지 않습니다. 다른 프로그램과 함께 작동하는지 확인해야합니다.

그렇지 않으면 채널 수가 1이면 카메라가 이미 회색 이미지를 얻고 있으므로 전환을 생략해야 함을 의미합니다. 나는 OpenCV가 다른 채널 수를 가진 방법을 붙잡는 것을 지원한다고 생각하지 않지만, 틀릴 수도있다.

관련 문제