OpenCV中的Matlab函数(improfile) - Python 2.7

时间:2014-06-30 19:51:44

标签: python matlab python-2.7 opencv

我要做的是在二进制图像上生成两行(一行垂直,一行水平)。然后返回所有行/列值以及该行下面的像素值,并将它们放入python列表中。

在matlab中,您可以通过在二进制图像上运行improfile()来类似地执行此操作,在二进制图像上将二进制图像设置为" 10/255" im2bw(image,10/255)的像素值。

在Python中使用opencv是否可以实现这一点?

2 个答案:

答案 0 :(得分:1)

OpenCV(模块cv2)图像可以作为numpy.array来处理。

因此,如果您首先想要将图像转换为黑白图像:

bwimg = image > 10

这将创建一个True / False值数组,具体取决于bwimg中的相应元素是否超过10。如果您已从文件中读取图像,则强度缩放通常在0..255之间。 (也可能是其他值。)

如果你想在像素(23,57)到(86,57)的水平线上得到值,你只需从数组中选择相应的值:

pixels = bwimg[57, 23:87]

现在你有一个True / False值数组。如果您想要数字,请将其乘以1:

pixels = 1 * bwimg[57, 23:87]

垂直线也类似:

pixels = bwimg[2:65, 47]

在第47列选择像素2..64(注意排除范围的结尾)。

对于Matlab用户来说只是一个问题:Python数组索引从0开始。

答案 1 :(得分:1)

OpenCV的C接口有cvSampleLine function

  

获取属于指定线段的像素并存储   他们到缓冲区。