Как вы преобразовываете изображение с открытым окном в оттенки серого в черно-белое? Я вижу аналогичный вопрос уже задан, но я использую OpenCV 2.3, и предлагаемое решение больше не работает.
Я пытаюсь преобразовать изображение в оттенках серого в черно-белое, так что все, что не совсем черное, белое, и используйте это как маску для surf.detect(), чтобы игнорировать ключевые точки, найденные на краю области черной маски.
Следующий Python получает меня почти там, но пороговое значение, отправленное в Threshold(), похоже, не имеет никакого эффекта. Если я установил его на 0 или 16 или 128 или 255, результат будет таким же: все пиксели со значением > 128 станут белыми, а все остальное станет черным.
Что я делаю неправильно?
import cv, cv2
fn = 'myfile.jpg'
im_gray = cv2.imread(fn, cv.CV_LOAD_IMAGE_GRAYSCALE)
im_gray_mat = cv.fromarray(im_gray)
im_bw = cv.CreateImage(cv.GetSize(im_gray_mat), cv.IPL_DEPTH_8U, 1);
im_bw_mat = cv.GetMat(im_bw)
threshold = 0 # 128#255# HAS NO EFFECT!?!?
cv.Threshold(im_gray_mat, im_bw_mat, threshold, 255, cv.CV_THRESH_BINARY | cv.CV_THRESH_OTSU);
cv2.imshow('', np.asarray(im_bw_mat))
cv2.waitKey()