एक छवि प्रसंस्करण कक्षा के लिए, मैं मोनोक्रोम छवियों पर बिंदु संचालन कर रहा हूं। पिक्सेल यूंट 8 [0,255] हैं।numpy uint8 पिक्सेल रैपिंग समाधान
numpy uint8 लपेट जाएगा। उदाहरण के लिए, 235 + 30 = 9। मुझे पिक्सल को संतृप्त करने के लिए (अधिकतम = 255) या छंटनी के बजाय truncate (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(img, dtype="int32")
data32 += 30
data_u8 = to_uint8(data32)
outimg = Image.fromarray(data_u8, "L")
outimg.save("out.png")
इनपुट छवि:
आउटपुट छवि:
np.clip() वास्तव में क्या है मैं की जरूरत है धन्यवाद! मैं ImageEnhance पर भी पढ़ूंगा। होमवर्क खुद को पॉइंट ऑप्स करने के बारे में था लेकिन अन्य तरीकों से सीखना अच्छा होगा। –