Um das neueste OpenCV 3.1 ab Februar 2016 auf Anaconda zu installieren, laden Sie es von der folgenden Website herunter.
conda install --channel https://conda.anaconda.org/menpo opencv3
Importieren und überprüfen Sie die Version.
In [1]: import cv2
In [2]: print cv2.__version__
3.1.0
Lesen Sie das Bild mit cv2.imread. Zu diesem Zeitpunkt ist das Bild BGR. Wenn Sie versuchen, es mit matplotlib so anzuzeigen, wie es ist, ist die Farbe seltsam. Seien Sie also vorsichtig.
Wenn ein Bild mit sckit kimage oder scipy gelesen wird, wird es zu RGB.
Der Typ des geladenen Bildes ist Numpy Array.
In [5]: I = cv2.imread('Lenna.bmp')
In [6]: I = cv2.imread('lena512color.tiff')
In [7]: type(I)
Out[7]: numpy.ndarray
In [8]: from PIL import Image
In [9]: I = Image.open('Lenna.bmp')
In [10]: type(I)
Out[10]: PIL.BmpImagePlugin.BmpImageFile
In [11]: from skimage import io
In [12]: I = io.imread('Lenna.bmp')
In [13]: type(I)
Out[13]: numpy.ndarray
In [14]: Icv = cv2.imread('Lenna.bmp')
In [15]: print Icv[0,0,:]
[125 137 226]
In [16]: print I[0,0,:]
[226 137 125]
In [17]: from scipy import misc
In [18]: I = misc.imread('Lenna.bmp')
In [19]: type(I)
Out[19]: numpy.ndarray
In [20]: print I[0,0,:]
[226 137 125]
In [21]: from matplotlib import image
In [22]: I = image.imread('Lenna.bmp')
In [23]: type(I)
Out[23]: numpy.ndarray
In [24]: print I[0,0,:]
[226 137 125]
Wenn Sie das Bild mit opencv speichern möchten, verwenden Sie imwrite.
imwrite(filename, img[, params])
In [26]: cv2.imwrite('output.png', I)
Out[26]: True
Beim Speichern mit OpenCV müssen die Farben jedoch in der Reihenfolge BGR im Interleaved-Format angeordnet werden. Wenn Sie es so speichern, wie es ist, wird es wie folgt aussehen.
Verwenden Sie imshow, um das Bild anzuzeigen.
imshow(winname, mat)
import cv2
I = cv2.imread('./data/SIDBA/Lenna.bmp')
cv2.namedWindow('window')
cv2.imshow('window', I)
cv2.waitKey(0)
cv2.destroyAllWindows()
Wenn Sie dies jedoch mit interaktivem Ipython tun, stirbt Ipython.
Bei Verwendung von ipython sollte startWindowThread zuerst ausgeführt werden, wie unten gezeigt.
In [7]: I = cv2.imread('./data/SIDBA/Lenna.bmp')
In [8]: cv2.startWindowThread()
Out[8]: 1
In [9]: cv2.namedWindow('window')
In [10]: cv2.imshow('window', I)
In [11]: cv2.waitKey(0)
Out[11]: 10
In [12]: cv2.destroyAllWindows()
Wenn Sie jedoch Bilder anzeigen möchten, ist es einfacher, matplotlib zu verwenden, es sei denn, Sie haben einen bestimmten Grund.
In [12]: import matplotlib.pyplot as plt
...: import cv2
...:
...: I = cv2.imread('./data/SIDBA/Lenna.bmp')
...:
...: plt.imshow(cv2.cvtColor(I, cv2.COLOR_BGR2RGB))
...: plt.show()
Wenn Sie das Bild mit opencv lesen, ist das Bild BGR. Sie müssen es daher in RGB konvertieren, um es mit matplotlib anzuzeigen. Verwenden Sie in diesem Fall cvtColor.
import numpy as np
import cv2
import matplotlib.pyplot as plt
I = cv2.imread('./data/SIDBA/Lenna.bmp')
J = cv2.cvtColor(I, cv2.COLOR_BGR2RGB)
plt.imshow(J)
plt.show()
Recommended Posts