将图像(png)转换为Matrix,将其标准化,反之亦然

时间:2013-03-17 19:35:48

标签: python opencv image-processing


我开始搞乱图像处理,我想制作一个图像矩阵,矢量(一维数组)并再次反转每个图像,这是代码(取自openCV的例子),此外 - 我将如何规范化1d阵列?在我对这个数组进行规范化之后发生了什么,我可以在规范化之后将它变成图像?

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")

1 个答案:

答案 0 :(得分:1)

def normalize(arr):
    """
    Linear normalization
    http://en.wikipedia.org/wiki/Normalization_%28image_processing%29
    """
    # Do not touch the alpha channel
    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

import numpy as np
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 = Image.open('orig.jpg').convert('RGBA')
a = np.array(img)
b = normalize(a)

im = Image.fromarray(b)
im.save('output.jpg')

orig.jpg

enter image description here

运行脚本会产生output.jpg

enter image description here