2013-06-15 2 views
0

다음 코드영리한 : 원치 않는 가장자리의 부지는

#include <iostream> 
#include <opencv2/core/core.hpp> 
#include <opencv2/highgui/highgui.hpp> 
#include <opencv2/imgproc/imgproc.hpp> 

using namespace std; 
using namespace cv; 

int main() 
{ 
    VideoCapture *camera = new VideoCapture(); 

    camera->open(0); 



    if(!camera->isOpened()) 
    { 
     cout << "No Camera" << endl; 
     return -1; 
    } 

    Mat image,blur,canny; 

    namedWindow("Video"); 

    while(true) 
    { 
     *camera>>image; 

     imshow("Video",image); 

     cv::GaussianBlur(image,blur,Size(7,7),1.5,1.5); 
     cv::Canny(blur,canny,0,30,3); 

     imshow("cANNY",canny); 

     if(waitKey(30)>=0) 
     { 

      break; 
     } 

    } 


    return 0; 
} 
에서 참조하시기 바랍니다 감지

2 개 출력

영리한 enter image description here

원래 enter image description here

다음 생성 된이 코드 보시다시피, canny는 e가 아닌 가장자리를 많이 감지했습니다. ven이 존재합니다. 초당 웹 카메라 프레임에 문제가있는 경우 어떤 종류의 웹캠을 사용해야합니까? 초당 프레임 수는 얼마입니까? DELL Inspiron 4030의 기본 웹캠과 다른 USB 2.0 웹캠으로이 기능을 테스트했습니다. 두 결과는 동일합니다.

코드에 문제가있는 경우 어떻게 해결할 수 있습니까?

내 다음 목표는 배경 빼기이며, 이러한 원치 않는 것들이 나를 저주 할 수 있다고 생각합니다. 도와주세요.

+2

임계 값 매개 변수를 사용해보십시오. –

+0

@OliCharlesworth : 그랬어요. 답변 : 아니오 (( –

+0

) 및 흐림 매개 변수 실험 동영상의 노이즈가 문제를 일으키는 것으로 보입니다 – Bull

답변

2

threshold1 == 0입니다. 이 값을 10으로 설정하고 흐림 시그마를 4로 설정하면 이러한 가짜 라인의 대부분이 사라집니다. (적어도 그들은 나를 위해). 웹캠으로

이러한 설정을 얻을 합리적인 출력 : 감지 선이 여전히 조금 시끄러운 그러나

cv::GaussianBlur(image,blur,Size(0,0), 4); 
    cv::Canny(blur,canny,25,30,3); 

.

편집 : 다음은 도움이되지 않습니다. 또 한 가지 할 수있는 것은 평균 2 개의 연속 프레임으로 노이즈를 70 %까지 줄일 수 있습니다.

(또는 살 더 나은 카메라)

+0

카메라의 경우 구입 방법을 알려주세요. 내게 많은 도움이 될 것입니다. 이것이 내 마지막 해의 프로젝트이며, 프리랜서로 벌어 들인 돈으로 물건을 구입해야합니다. –

+0

@fatih_k the 문제가 노이즈가 아니며 먼지가 아닙니다. – Bull

+0

멋집니다. 감사합니다. –

1

귀하의 낮은 임계 값보다 0보다해야한다 :

: 당신은 또한 saurtion 및 대비 등 일부 일부 카메라 매개 변수를 사용하여 재생할 수 있습니다

int low_threshold = 10;//you can try with different values 
cv::Canny(blur,canny,low_threshold,30,3); 

VideoCapture *camera = new VideoCapture(); 
camera->set(CV_CAP_PROP_CONTRAST,contrast_value);//between 0-1 
camera->set(CV_CAP_PROP_SATURATION, saturation_value);//between 0-1 
+0

예, 그렇지만 그 자체로 문제가 해결되지 않을 수 있습니다. 이미지가 너무 시끄럽습니다. – Bull

+0

@ user2151446, 가장자리가 부드럽게 보일 수도 있습니다. –

+0

시도해 보았습니다. 임계 값이 충분하지 않으면 더 많은 흐림이 필요합니다 .BTW, 낮은 임계 값을 변경해도 가장자리가 부드럽게되지는 않습니다. – Bull