Pour installer le dernier OpenCV 3.1 sur Anaconda à partir de février 2016, téléchargez-le sur le site suivant.
conda install --channel https://conda.anaconda.org/menpo opencv3
Importez et vérifiez la version.
In [1]: import cv2
In [2]: print cv2.__version__
3.1.0
Lisez l'image avec cv2.imread. À ce moment, l'image est BGR. Si vous essayez de l'afficher avec matplotlib tel quel, la couleur sera étrange, alors soyez prudent.
Lorsqu'une image est lue avec sckit kimage ou scipy, elle devient RVB.
Le type de l'image chargée est le tableau numpy.
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]
Si vous souhaitez enregistrer l'image avec opencv, utilisez imwrite.
imwrite(filename, img[, params])
In [26]: cv2.imwrite('output.png', I)
Out[26]: True
Cependant, lors de l'enregistrement avec OpenCV, les couleurs doivent être disposées dans l'ordre BGR au format Interleaved. Si vous l'enregistrez tel quel, ce sera comme suit.
Utilisez imshow pour afficher l'image.
imshow(winname, mat)
import cv2
I = cv2.imread('./data/SIDBA/Lenna.bmp')
cv2.namedWindow('window')
cv2.imshow('window', I)
cv2.waitKey(0)
cv2.destroyAllWindows()
Cependant, si vous faites cela avec ipython interactif, ipython mourra.
Lorsque vous utilisez ipython, startWindowThread doit être exécuté en premier comme indiqué ci-dessous.
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()
Cependant, si vous souhaitez afficher des images, il est plus facile d'utiliser matplotlib sauf si vous avez une raison spécifique.
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()
Si vous lisez l'image avec opencv, l'image est BGR, vous devez donc la convertir en RVB pour l'afficher avec matplotlib. Dans un tel cas, utilisez 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