2014-04-28 11 views
16

Próbuję czytać obrazy bezpośrednio jako czarno-białe.Przeczytaj obraz w skali szarości opencv 3.0.0-dev

Niedawno zaktualizowałem moją wersję OpenCv do 3.0.0-dev, a kod, którego użyłem wcześniej, już nie działa.

img = cv2.imread(f, cv2.CV_LOAD_IMAGE_GRAYSCALE) 

działa poprawnie na 2.4, ale nie działa na nowej wersji, ponieważ nie ma pola CV_LOAD_IMAGE_GRAYSCALE.

Wszelkie sugestie?

Uwaga: Wiem, że cv2.imread(f,0) zadziała, ale nie lubię mieć nienazwanych stałych w moim kodzie. Dzięki!

+1

próbowałaś 'cv2.LOAD_IMAGE_GRAYSCALE'? Domyślam się, że wszystkie 'CV_' zostały przemianowane na – Micka

+0

Próbowałem, a nie tam. – elaRosca

Odpowiedz

21

Zmieniono nazwę flagi na cv2.IMREAD_GRAYSCALE. Ogólnie mówiąc, flagi mają teraz nazwy prefiksowane w sposób odnoszący się do funkcji, do której się odnoszą. (Np imread flagi zacząć IMREAD_, cvtColor flagi zacząć COLOR_ itp)

+0

Awesome. Dzięki za wyjaśnienie, prawdopodobnie pomoże również w przyszłości. – elaRosca

+0

Dokumentacja powinna zostać odpowiednio zaktualizowana: http://docs.opencv.org/trunk/modules/imgcodecs/doc/reading_and_writing_images.html?highlight=imread#Mat imread (const String i filename, int flags) –

6

Spróbuj tego, że pracuje dla mnie

import cv2 
im_gray = cv2.imread('gray_image.png', cv2.IMREAD_GRAYSCALE) 
thresh = 127 
im_bw = cv2.threshold(im_gray, thresh, 255, cv2.THRESH_BINARY)[1] 
cv2.imwrite('blackwhite.png', im_bw) 
Powiązane problemy