#include int main(int argc, char** argv) { std::string imagename = ""; int threshold = 25; std::string save_path = "."; if (argc > 3) { imagename = argv[1]; threshold = atoi(argv[2]); save_path = argv[3]; } else { std::cout << "Invalid number of arguments: test-descripteurs []" << std::endl; return 0; } cv::namedWindow("Image", CV_WINDOW_AUTOSIZE); cv::namedWindow("Contour", CV_WINDOW_AUTOSIZE); cv::Mat image = cv::imread(imagename, CV_LOAD_IMAGE_COLOR); cv::Mat binary(image.rows, image.cols, CV_8UC1); cv::Mat contour(image.rows, image.cols, CV_8UC1); cv::GaussianBlur(image, image, cv::Size(7,7), 1.5, 1.5); math::filter(image, binary, threshold); std::vector> contours; std::vector hierarchy; cv::findContours(binary, contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE); if (contours.size() != 0) { int id = math::max_cont(contours); cv::drawContours(contour, contours, id, 255, 4); } cv::imshow("Image", image); cv::imshow("Contour", contour); cv::imwrite(save_path+"/raw_image.png", image); cv::imwrite(save_path+"/contour_"+std::to_string(threshold)+".png", contour); cv::waitKey(0); return 0; }