OpenCV中createTrackbar函数的回调函数如何传递参数?

想写一个阈值分割的小程序,滑动条控制分割阈值,OpenCV中createTrackbar函数的回调函数如何传递参数?

参考这段代码

struct mydata{
    cv::Mat img;//原图
    cv::Mat dst;//阈值分割后的图
    int th ;//阈值
};

void thresh_callback(int pos, void *p)
{
    mydata cfg = *(mydata *)p;//
    cv::threshold(cfg.img,cfg.dst,pos,255,cv::THRESH_TOZERO);
    cv::namedWindow("winname",0);
    cv::imshow("winname",cfg.dst);
}

int main()
{
    mydata cfg;
    std::string img_path = "C:\\Users\\bxzyz\\Desktop\\book\\opencv-cookbook\\images\\church01.jpg";
    cv::Mat img  = cv::imread(img_path);
    cv::Mat dst = img.clone();
    cfg.img = img;
    cfg.dst = dst;
    //cfg.ksize = cv::Size(5,5);
    int th = 127;//初始默认值
    int th_max = 255;
   
    while (1)
    {
        cv::createTrackbar("th", "winname", &th, th_max, thresh_callback, (void*)(&cfg));
        thresh_callback(th,&cfg);
        //按Esc键退出程序
        if (cv::waitKey(3)==27)
        {
            break;
        }
    }
    cv::destroyAllWindows();
}