仅针对图像的特定点计算相邻像素的平均像素强度并存储在 n 维数组中

我正在处理人脸识别任务,我想提取人脸特征,但只是从人脸图像中的特定关键位置提取人脸特征。但是对于这样的任务,我需要计算该特定部分相邻区域的平均像素值。由于没有算法,我是手工这样做的。这是一个详尽的过程。这就是我的做法:


img = plt.imread(path)

img[25, 40] = 0

img[25, 41] = 0

img[25, 39] = 0

img[26, 40] = 0

img[26, 39] = 0

img[26, 41] = 0

img[24, 39] = 0

img[24, 40] = 0

img[24, 41] = 0

img[25, 110] = 0

img[25, 111] = 0

img[25, 109] = 0

img[24, 109] = 0

img[24, 110] = 0

img[24, 111] = 0

img[26, 109] = 0

img[26, 110] = 0

img[26, 111] = 0

img[25, 170] = 0

img[25, 171] = 0

img[25, 169] = 0

img[24, 170] = 0

img[24, 171] = 0

img[24, 169] = 0

img[26, 170] = 0

img[26, 169] = 0

img[26, 171] = 0

img[40, 40] = 0

img[40, 41] = 0

img[40, 39] = 0

img[41, 40] = 0

img[41, 41] = 0

img[41, 39] = 0

img[39, 40] = 0

img[39, 39] = 0

img[39, 41] = 0

img[50, 110] = 0

img[50, 111] = 0

img[50, 109] = 0

img[51, 110] = 0

img[51, 111] = 0

img[51, 109] = 0

img[49, 110] = 0

img[40, 170] = 0

img[40, 171] = 0

img[40, 169] = 0

img[39, 170] = 0

img[39, 171] = 0

img[39, 169] = 0

img[41, 170] = 0

img[41, 171] = 0

img[41, 169] = 0


plt.imshow(img)

我想做的基本上是有一种更好的方法来计算图像中 20 个坐标的中心周围相邻 3x3 像素的平均值,并将其存储在 n 维向量中。或者为了更清楚:对于选择的关键点 1 计算 3x3 邻域中的平均值,存储该值。关键点 2 计算 3x3 邻域中的平均值,存储该值。对于对应于图像中坐标 x 和 y 的任何给定关键点。

http://img4.mukewang.com/6407f11f00013dcc04700487.jpg

每个关键点都是具有 3x3 像素的网格的平均值,我需要获取平均值并将其存储在 20d 数组中。最好的方法是什么?



智慧大石
浏览 186回答 1
1回答

撒科打诨

在 Python/OpenCv 中,只需使用 cv2.blur() 对整个图像进行 3x3 块平均。然后只需在您想要的点处获取模糊图像中的像素值。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python