发布时间:2022-12-17 08:00
cv2.remap(img,map1,map2,interpolation)
函数作用 | 重映射,即把一幅图像内的像素点放置到另外一幅图像内的指定位置 |
img | 输入图像 |
map1 | 1.表示(x,y)的一个映射 2.或者表示CV_16SC2 , CV_32FC1, CV_32FC2 类型(x,y)点的 x 值 |
map2 | 1.若map1表示(x,y),该值为空 2.若map1表示(x,y)的x值,该值为CV_16SC2 , CV_32FC1类型(x,y)的y值 |
可以看到,输出的图像像素值均来自于第4列第2行,即坐标(x,y)为(4,2)
import numpy as np
import cv2
a = np.random.randint(0,256,(10,10),dtype='uint8')
mapx = np.ones(a.shape,dtype=np.float32)*4
mapy = np.ones(a.shape,dtype=np.float32)*2
b = cv2.remap(a,mapx,mapy,interpolation=cv2.INTER_LINEAR)
print(a)
print(mapx)
print(mapy)
print(b)
>>>[[211 3 213 228 171 11 146 27 87 94]
[177 254 86 169 42 191 103 58 220 193]
[105 246 236 141 226 171 55 138 198 253]
[ 93 163 74 119 133 170 192 10 54 189]
[ 44 171 252 139 117 152 115 216 131 118]
[ 7 166 170 211 182 7 214 84 26 33]
[159 84 205 111 48 34 41 26 215 91]
[109 85 193 187 72 169 251 4 130 105]
[ 94 139 88 177 162 14 61 220 55 254]
[234 243 201 211 42 104 226 119 132 51]]
[[4. 4. 4. 4. 4. 4. 4. 4. 4. 4.]
[4. 4. 4. 4. 4. 4. 4. 4. 4. 4.]
[4. 4. 4. 4. 4. 4. 4. 4. 4. 4.]
[4. 4. 4. 4. 4. 4. 4. 4. 4. 4.]
[4. 4. 4. 4. 4. 4. 4. 4. 4. 4.]
[4. 4. 4. 4. 4. 4. 4. 4. 4. 4.]
[4. 4. 4. 4. 4. 4. 4. 4. 4. 4.]
[4. 4. 4. 4. 4. 4. 4. 4. 4. 4.]
[4. 4. 4. 4. 4. 4. 4. 4. 4. 4.]
[4. 4. 4. 4. 4. 4. 4. 4. 4. 4.]]
[[2. 2. 2. 2. 2. 2. 2. 2. 2. 2.]
[2. 2. 2. 2. 2. 2. 2. 2. 2. 2.]
[2. 2. 2. 2. 2. 2. 2. 2. 2. 2.]
[2. 2. 2. 2. 2. 2. 2. 2. 2. 2.]
[2. 2. 2. 2. 2. 2. 2. 2. 2. 2.]
[2. 2. 2. 2. 2. 2. 2. 2. 2. 2.]
[2. 2. 2. 2. 2. 2. 2. 2. 2. 2.]
[2. 2. 2. 2. 2. 2. 2. 2. 2. 2.]
[2. 2. 2. 2. 2. 2. 2. 2. 2. 2.]
[2. 2. 2. 2. 2. 2. 2. 2. 2. 2.]]
[[226 226 226 226 226 226 226 226 226 226]
[226 226 226 226 226 226 226 226 226 226]
[226 226 226 226 226 226 226 226 226 226]
[226 226 226 226 226 226 226 226 226 226]
[226 226 226 226 226 226 226 226 226 226]
[226 226 226 226 226 226 226 226 226 226]
[226 226 226 226 226 226 226 226 226 226]
[226 226 226 226 226 226 226 226 226 226]
[226 226 226 226 226 226 226 226 226 226]
[226 226 226 226 226 226 226 226 226 226]]