Cant get output result using cvCornerHarris()

前端 未结 1 534
星月不相逢
星月不相逢 2020-12-21 06:49

I just want to try the openCV function -- cvCornerHarris. Here is my c++ code:

//image file
    char imagePath[256] = \"./images/lena512color.tiff\";
    pri         


        
相关标签:
1条回答
  • 2020-12-21 07:25

    It's all about parameters! People tend to believe that there are magical parameters that will work for all types of images and scenarios. Unfortunately, this doesn't happen in the real world.

    The parameters used to process one image may not produce the same level of results when applied to other type of image. Now, consider the following code:

    IplImage* colored = cvLoadImage("house.jpg", CV_LOAD_IMAGE_UNCHANGED);
    if (!colored)
    {
        printf("Can not open image file(s).\n");
        return -1;
    }
    
    IplImage* gray = cvCreateImage(cvGetSize(colored), IPL_DEPTH_8U, 1);
    cvCvtColor(colored, gray, CV_RGB2GRAY);
    
    IplImage* harris = cvCreateImage(cvGetSize(colored), IPL_DEPTH_32F, 1);
    cvCornerHarris(gray, harris, 3, 11, 0.07);
    
    cvNamedWindow("Harris", CV_WINDOW_AUTOSIZE);
    cvShowImage ("Harris", harris);
    

    As you can see below, these parameters produced a decent result (to my point of view). However, keep in mind that they won't probably work for you. Bad parameters will produce a black image (i.e. will detect nothing) as you have observed on your tests.

    The answer is: take a look at the docs to see what those parameters mean and how they influence the result. Most importantly, play with them until they produce images that satisfy your needs.

    Input image:


    (source: 123desenhosparacolorir.com)

    Output:

    harry's_house

    0 讨论(0)
提交回复
热议问题