我开始搞乱图像处理,我想制作一个图像矩阵,向量(一维数组)并将每个图像反转为图像,这是代码(取自openCV的示例),另外 - 我将如何标准化1d数组?以及我是否正常化这个数组后,会发生什么,我可以使它正常化后的图像?
将图像(PNG)转换为矩阵,对其进行规格化,反之亦然
import cv2.cv as cv
import numpy
img=cv.LoadImage("test3.JPG")
mat=cv.GetMat(img)
a = numpy.asarray(mat)
print a
输出为:
[[[150 150 150]
[171 171 171]
[242 242 242]
...,
[252 252 252]
[252 252 252]
[252 252 252]]
[[151 151 151]
[170 170 170]
[244 244 244]
...,
[252 252 252]
[252 252 252]
[252 252 252]]
[[159 159 159]
[172 172 172]
[248 248 248]
...,
[252 252 252]
[252 252 252]
[252 252 252]]
...,
[[251 251 251]
[251 251 251]
[251 251 251]
...,
[249 249 249]
[248 248 248]
[248 248 248]]
什么是三个点,它不是打印所有值的含义?这个具体的图像是125X150
谢谢。
编辑
import cv2.cv as cv
import numpy
import Image
def normalize(arr):
for i in range(3):
minval = arr[...,i].min()
maxval = arr[...,i].max()
if minval != maxval:
arr[...,i] -= minval
arr[...,i] *= (255.0/(maxval-minval))
return arr
img=cv.LoadImage("test3.JPG")
mat=cv.GetMat(img)
a = numpy.asarray(mat)
b = normalize(a)
print b
with open('1.txt.',"w") as f:
f.write("\n".join(" ".join(map(str, x)) for x in (b)))
im = Image.fromarray(b)
im.save("12.jpeg")
这三个点通知您,它不会打印所有值(因为结果太长)。如果你想看到所有的值你可以a)输出到一个文件或b)“刷新”输出(看看这个链接:http://stackoverflow.com/questions/230751/how-to-flush -output-of-python-print) – david 2013-03-17 19:44:53