首页 > 编程知识 正文

python获取片某像素点位置,python读取片像素值

时间:2023-05-04 22:50:59 阅读:232232 作者:3114

背景

    因为最近在做交互式图像分割方面的东西,当用户去点击图片上的某一点时,即标注点,要计算该图像上所有的像素点到这个点的距离,作为后续步骤的预处理。

 

用到的函数

scipy.ndimage.distance_transform_edt

 

代码

一、导入所需的库和读取图片,并生成和图片同样大小的1矩阵:

import osimport numpy as npimport cv2from scipy import ndimagesrc_pic_path = '/home/wanwanvv/workspace/osvos/car-shadow/JPEGImages/00000.jpg'input_image = cv2.imread(src_pic_path, -1) #-1表示加载彩色图片包括alpha通道iH, iW, _ = input_image.shapeint_pos = np.uint8(255*np.ones([iH,iW]))

二、将整个矩阵值赋值为0,中心点的值设为1,这里假设中心点是[0,0]:

clk_pos = (int_pos==0)clk_pos[0,0] = 1

此时的矩阵变为:

[[ True False False ... False False False]
 [False False False ... False False False]
 [False False False ... False False False]
 ...
 [False False False ... False False False]
 [False False False ... False False False]
 [False False False ... False False False]]

三、运用函数ndimage.distance_transform_edt:

int_pos = ndimage.distance_transform_edt(1-clk_pos)

结果为:

[[  0.           1.           2.         ... 851.         852.     853.        ]
 [  1.           1.41421356   2.23606798 ... 851.00058754 852.00058685  853.00058617]
 [  2.           2.23606798   2.82842712 ... 851.00235017 852.00234741  853.00234466]
 ...
 [477.         477.00104822 477.00419285 ... 975.56650209 976.43893818  977.31161868]
 [478.         478.00104602 478.00418408 ... 976.05583857 976.92783766  977.80008182]
 [479.         479.00104384 479.00417535 ... 976.54595386 977.4175157  978.28932326]]

 

四、将值的范围控制到[0,255]:

int_pos = np.uint8(np.minimum(np.maximum(int_pos, 0.0), 255.0))

结果:

[[  0   1   2 ... 255 255 255]
 [  1   1   2 ... 255 255 255]
 [  2   2   2 ... 255 255 255]
 ...
 [255 255 255 ... 255 255 255]
 [255 255 255 ... 255 255 255]
 [255 255 255 ... 255 255 255]]
 

五、可视化距离并保存为图片查看:

cv2.imwrite('xx.png' % (xx), int_pos)

结果:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。