Боюсь, что это невозможно, вы можете подумать о том, чтобы предложить изменить код opencv, добавив флаг, который позволил бы это. В данный момент в этом файле:
http://code.opencv.org/projects/opencv/repository/entry/trunk/opencv/modules/imgproc/src/contours.cpp
существует массив icvCodeDeltas, который определяет всех соседей. Вы можете проверить, где он используется и добавить
static const CvPoint icvCodeDeltas4[4] = { {1, 0}, {0, -1}, {-1, 0}, {0, 1} };
, который используется, когда, например, указан CV_NEIGHBOURS_CROSS. Затем попросите opencv-сообщество добавить его, как работает open source. Возможно, быстрое, грязное, вам должно быть стыдно было бы что-то вроде этого:
virtual CvPoint icvCodeDeltas[8];
icvCodeDeltas = { {1, 0}, {0, -1}, {-1, 0}, {0, 1}, {1, 0}, {0, -1}, {-1, 0}, {0, 1} };
Но я не проверял это, и я понятия не имею, удастся ли это избежать «static» и «const», так что будьте осторожны;)