Преобразование изображения 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()

-121--663344-

Получение n наименьших чисел в последовательности Что было бы наиболее эффективным способом взять n наименьших чисел из последовательности, [[1 2 3] [9 2 1] [2 3 4] [5 6 7]]] Я хотел бы взять 2 наименьших из последовательности на основе первого элемента

Какой самый эффективный способ взять n наименьших чисел из последовательности,

[ [1 2 3] [9 2 1] [2 3 4] [5 6 7] ]

Я хотел бы взять 2 наименьших из последовательности на основе первого пункта,

[1 2 3] [2 3 4]

В настоящее время я сортирую весь список, а затем беру первые n предметов, но это, вероятно, не самый эффективный способ, это большой список, и мне нужно делать это часто.

8
задан Hamza Yerlikaya 2 October 2011 в 05:24
поделиться