Преобразование изображения OpenCV в черно-белое

Как преобразовать изображение OpenCV в оттенках серого в черно-белое? Я вижу, что аналогичный вопрос уже задавался, но я использую 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()

45
задан Community 23 May 2017 в 11:54
поделиться