Sha*_*han 85 python opencv numpy image
我有一个RGB图像.我想将它转换为numpy数组.我做了以下
im = cv.LoadImage("abc.tiff")
a = numpy.asarray(im)
Run Code Online (Sandbox Code Playgroud)
它创建一个没有形状的数组.我假设它是一个iplimage对象.
And*_*aev 112
你可以使用更新的OpenCV python接口(如果我没弄错,它可以从OpenCV 2.2开始使用).它原生使用numpy数组:
import cv2
im = cv2.imread("abc.tiff",mode='RGB')
print type(im)
Run Code Online (Sandbox Code Playgroud)
结果:
<type 'numpy.ndarray'>
Run Code Online (Sandbox Code Playgroud)
Dav*_*ole 59
PIL(Python Imaging Library)和Numpy很好地协同工作.
我使用以下功能.
from PIL import Image
import numpy as np
def load_image( infilename ) :
img = Image.open( infilename )
img.load()
data = np.asarray( img, dtype="int32" )
return data
def save_image( npdata, outfilename ) :
img = Image.fromarray( np.asarray( np.clip(npdata,0,255), dtype="uint8"), "L" )
img.save( outfilename )
Run Code Online (Sandbox Code Playgroud)
'Image.fromarray'有点难看,因为我将输入数据剪辑为[0,255],转换为字节,然后创建灰度图像.我大多是灰色的.
RGB图像类似于:
outimg = Image.fromarray( ycc_uint8, "RGB" )
outimg.save( "ycc.tif" )
Run Code Online (Sandbox Code Playgroud)
Ris*_*ari 41
您也可以使用matplotlib.
from matplotlib.image import imread
img = imread('abc.tiff')
print(type(img))
Run Code Online (Sandbox Code Playgroud)
输出:
<class 'numpy.ndarray'>
sli*_*izb 11
迟到的答案,但我更喜欢imageio
模块到其他替代品
import imageio
im = imageio.imread('abc.tiff')
Run Code Online (Sandbox Code Playgroud)
cv2.imread()
与之类似,它默认生成一个numpy数组,但是以RGB形式生成.
截至今天,您最好的选择是使用:
img = cv2.imread(image_path) # reads an image in the BGR format
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # BGR -> RGB
Run Code Online (Sandbox Code Playgroud)
您将看到img
一个类型为numpy的数组:
<class 'numpy.ndarray'>
Run Code Online (Sandbox Code Playgroud)
您需要使用cv.LoadImageM而不是cv.LoadImage:
In [1]: import cv
In [2]: import numpy as np
In [3]: x = cv.LoadImageM('im.tif')
In [4]: im = np.asarray(x)
In [5]: im.shape
Out[5]: (487, 650, 3)
Run Code Online (Sandbox Code Playgroud)
小智 6
使用以下语法加载图像:-
from keras.preprocessing import image
X_test=image.load_img('four.png',target_size=(28,28),color_mode="grayscale"); #loading image and then convert it into grayscale and with it's target size
X_test=image.img_to_array(X_test); #convert image into array
Run Code Online (Sandbox Code Playgroud)
当使用 David Poole 的答案时,我收到一个带有灰度 PNG 和其他文件的 SystemError。我的解决办法是:
import numpy as np
from PIL import Image
img = Image.open( filename )
try:
data = np.asarray( img, dtype='uint8' )
except SystemError:
data = np.asarray( img.getdata(), dtype='uint8' )
Run Code Online (Sandbox Code Playgroud)
实际上 img.getdata() 可用于所有文件,但速度较慢,因此我仅在其他方法失败时才使用它。
您可以通过使用numpy
和轻松获得 rgb 图像的 numpy 数组Image from PIL
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
im = Image.open('*image_name*') #These two lines
im_arr = np.array(im) #are all you need
plt.imshow(im_arr) #Just to verify that image array has been constructed properly
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
253432 次 |
最近记录: |