Detección de Canny Edge de OpenCV en C ++

Quiero extraer los bordes de la mano pero obtengo el siguiente resultado. He intentado ajustar los umbrales alto y bajo, pero aún no puedo obtener la salida deseada. He incluido a continuación el código y su salida. ¿Cuál parece ser el problema?

Este es elimagen de salida generado por el código de abajo.

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

int main(){

    cv::Mat image= cv::imread("open_1a.jpg");
    cv::Mat contours;
    cv::Mat gray_image;

    cvtColor( image, gray_image, CV_RGB2GRAY );

    cv::Canny(image,contours,10,350);

    cv::namedWindow("Image");
    cv::imshow("Image",image);

    cv::namedWindow("Gray");
    cv::imshow("Gray",gray_image);

    cv::namedWindow("Canny");
    cv::imshow("Canny",contours);
    cv::waitKey(0);
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta