It is hard to be sure with C++ being as unsafe as it is, but it looks like the two calls to cv::Sobel() take one too few arguments. They look like:
Sobel(blurred, dx, dx.type(), 1, 0, 7, 1, BORDER_REPLICATE);
Sobel(blurred, dy, dy.type(), 0, 1, 7, 1, BORDER_REPLICATE);
but the interface to cv::Sobel() is:
Sobel( InputArray src, OutputArray dst, int ddepth,
int dx, int dy, int ksize = 3,
double scale = 1, double delta = 0,
int borderType = BORDER_DEFAULT );
Note that the borderType parameter is in the 8th position, but the calls in PuRe.cpp put it at the 7th position. I'm guessing that there is a missing delta parameter. In OpenCV (3.4.2 at least), BORDER_DEFAULT is 1 (which means the value of delta being used here is 1), and the borderType being used is BORDER_DEFAULT, not BORDER_REPLICATE.
It is hard to be sure with C++ being as unsafe as it is, but it looks like the two calls to cv::Sobel() take one too few arguments. They look like:
but the interface to cv::Sobel() is:
Note that the
borderTypeparameter is in the 8th position, but the calls in PuRe.cpp put it at the 7th position. I'm guessing that there is a missingdeltaparameter. In OpenCV (3.4.2 at least),BORDER_DEFAULTis 1 (which means the value ofdeltabeing used here is 1), and theborderTypebeing used isBORDER_DEFAULT, notBORDER_REPLICATE.