0


我开始搞乱图像处理,我想制作一个图像矩阵、向量(一维数组)并将每个图像再次反转为图像,这是代码(取自 openCV 的示例),此外 - 我将如何规范化一维数组?在我规范化这个数组之后会发生什么,我可以在规范化后让它成像吗?

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

1 回答 1

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

在此处输入图像描述

运行脚本产生output.jpg

在此处输入图像描述

于 2013-03-17T19:50:20.750 回答