对于图像处理类,我在单色图像上进行点操作.像素是uint8 [0,255].
numpy uint8将换行.例如,235 + 30 = 9.我需要像素饱和(max = 255)或截断(min = 0)而不是包裹.
我的解决方案使用int32像素作为点数学,然后转换为uint8以保存图像.
这是最好的方法吗?或者有更快的方法吗?
#!/usr/bin/python
import sys
import numpy as np
import Image
def to_uint8( data ) :
# maximum pixel
latch = np.zeros_like( data )
latch[:] = 255
# minimum pixel
zeros = np.zeros_like( data )
# unrolled to illustrate steps
d = np.maximum( zeros, data )
d = np.minimum( latch, d )
# cast to uint8
return np.asarray( d, dtype="uint8" )
infilename=sys.argv[1]
img = Image.open(infilename)
data32 = np.asarray( …Run Code Online (Sandbox Code Playgroud)