Из того, что я могу извлечь из вашего вопроса, может быть проблема с преобразованием вашего изображения в оттенки серого.
Приведенный ниже код ошибки относится к типу глубины вашего изображения, т. Е. Сколько значения цвета могут вписываться в каждый отдельный пиксель вашего изображения. В вашем случае с изображениями в оттенках серого, поскольку вы храните значения только от черного до белого с различными вариантами серого между ними, тип глубины изображения будет меньше.
_src.depth()==CV_8U
Если вы просто хотите передать изображение в функцию Canny, вы должны сначала преобразовать его в оттенки серого.
//Read in the image from a file path
Mat img = CvInvoke.Imread(filePath, ImreadModes.AnyColor);
//Convert the image to gray scale
Image<Gray, byte> gray = img.ToImage<Gray, byte>();
//Threshold the image
CvInvoke.Threshold(gray, gray, 0, 100, ThresholdType.Binary);
//Canny the thresholded image
gray = gray.Canny(50, 200);
Если вы просто хотите передать изображение в функцию Canny, не пропуская его через порог, то вы можете использовать код ниже.
//Read in the image from a file path
Mat img = CvInvoke.Imread(filePath, ImreadModes.AnyColor);
//Convert the image to gray scale
Image<Gray, byte> gray = img.ToImage<Gray, byte>();
//Canny the thresholded image
gray = gray.Canny(50, 200);