我要做的是在二进制图像上生成两行(一行垂直,一行水平)。然后返回所有行/列值以及该行下面的像素值,并将它们放入python列表中。
在matlab中,您可以通过在二进制图像上运行improfile()
来类似地执行此操作,在二进制图像上将二进制图像设置为" 10/255" im2bw(image,10/255)
的像素值。
在Python中使用opencv是否可以实现这一点?
答案 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
获取属于指定线段的像素并存储 他们到缓冲区。