<p>您也可以使用<code>cv2.LUT</code>来进行对比度拉伸,方法是使用<code>np.interp</code>创建自定义表。它们文档的链接分别是<a href="https://docs.opencv.org/2.4/modules/core/doc/operations_on_arrays.html#lut" rel="nofollow noreferrer">this</a>和<a href="https://docs.scipy.org/doc/numpy/reference/generated/numpy.interp.html" rel="nofollow noreferrer">this</a>。下面是一个例子。</p>
<pre><code>import cv2
import numpy as np
img = cv2.imread('messi.jpg')
original = img.copy()
xp = [0, 64, 128, 192, 255]
fp = [0, 16, 128, 240, 255]
x = np.arange(256)
table = np.interp(x, xp, fp).astype('uint8')
img = cv2.LUT(img, table)
cv2.imshow("original", original)
cv2.imshow("Output", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
</code></pre>
<p>创建的表</p>
<pre><code>[ 0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3 4 4
4 4 5 5 5 5 6 6 6 6 7 7 7 7 8 8 8 8
9 9 9 9 10 10 10 10 11 11 11 11 12 12 12 12 13 13
13 13 14 14 14 14 15 15 15 15 16 17 19 21 23 24 26 28
30 31 33 35 37 38 40 42 44 45 47 49 51 52 54 56 58 59
61 63 65 66 68 70 72 73 75 77 79 80 82 84 86 87 89 91
93 94 96 98 100 101 103 105 107 108 110 112 114 115 117 119 121 122
124 126 128 129 131 133 135 136 138 140 142 143 145 147 149 150 152 154
156 157 159 161 163 164 166 168 170 171 173 175 177 178 180 182 184 185
187 189 191 192 194 196 198 199 201 203 205 206 208 210 212 213 215 217
219 220 222 224 226 227 229 231 233 234 236 238 240 240 240 240 240 241
241 241 241 242 242 242 242 243 243 243 243 244 244 244 244 245 245 245
245 245 246 246 246 246 247 247 247 247 248 248 248 248 249 249 249 249
250 250 250 250 250 251 251 251 251 252 252 252 252 253 253 253 253 254
254 254 254 255]
</code></pre>
<p>现在<code>cv2.LUT</code>将用表中的值替换原始图像的值。例如,所有值为1的像素将被0替换,所有值为4的像素将被1替换。</p>
<p>原始图像</p>
<p><a href="https://i.stack.imgur.com/MHlpW.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/MHlpW.jpg" alt="Original"/></a></p>
<p>对比度拉伸图像</p>
<p><a href="https://i.stack.imgur.com/aUwpK.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/aUwpK.jpg" alt="enter image description here"/></a></p>
<p>可以根据需要改变<code>xp</code>和<code>fp</code>的值来创建自定义表,即使最小和最大像素分别为0和255,与<a href="https://stackoverflow.com/users/5540305/hashcode55">hashcode55</a>提供的答案不同,它也会拉伸对比度。</p>