Все дело в параметрах! Люди склонны полагать, что существуют магические параметры, которые будут работать для всех типов изображений и сценариев. К сожалению, этого не происходит в реальном мире.
Параметры, используемые для обработки одного изображения, могут не давать такой же уровень результатов при применении к другому типу изображения. Теперь рассмотрим следующий код:
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);
Как вы можете видеть ниже, эти параметры дали достойный результат (на мой взгляд). Однако имейте в виду, что они, вероятно, не будут работать на вас. Плохие параметры приведут к черному изображению (то есть ничего не обнаружат), как вы наблюдали в своих тестах.
Ответ: посмотрите на документы, чтобы понять, что означают эти параметры и как они влияют на результат. Самое главное, играть с ними, пока они не производят изображения, которые удовлетворяют вашим потребностям.
Исходное изображение:
a_house http://www.123desenhosparacolorir.com/images/house-coloring-pages-2/house-coloring-pages-2.jpg
выход