python - 根据值裁剪图像

标签 python numpy image-processing crop bounding-box

我有多个图像,看起来像这样:enter image description here

橙色代表等于0的值,白色代表等于255的值,蓝色代表字段,其中值从0到255不等。我想去掉橙色区域,这是每张图片都有点不同。最好的方法是什么?

编辑 1

我认为这个答案会有所帮助:bounding box approach . 除了,我想得到一个数组 A_extract 而不是 A_trim:

A = np.array([[0,   0,   0,   0,   0,   0, 0],
              [0, 255,   0,   0,   0,   0, 0],
              [0,   0, 255, 255, 255, 255, 0],
              [0,   0, 255,   0, 255,   0, 0],
              [0,   0, 255, 255, 255,   0, 0],
              [0,   0,   0, 255,   0,   0, 0],
              [0,   0,   0,   0,   0,   0, 0]])

A_trim = np.array([[255,   0,   0,   0,   0],
                   [  0, 255, 255, 255, 255],
                   [  0, 255,   0, 255,   0],
                   [  0, 255, 255, 255,   0],
                   [  0,   0, 255,   0,   0]])

A_extract = np.array([[255, 255, 255],
                      [255,   0, 255],
                      [255, 255, 255])

基本上,代码应该找到一个边界框,其中第一行和最后一行(以及第一列和最后一列)中的所有元素都应该具有相同的值(例如 255)。

编辑 2

真实图像是分类卫星图像,存储为 numpy 数组(形状为 cca.7000x8000),而不是 RGB 图像。这是它的样子:

  • 橙色 = 0
  • 绿色 = 2
  • 粉红色 = 3
  • 白色 = 255

目的是去除边缘上的 0 值。

enter image description here

最佳答案

张贴的图片有一个白色边框,然后在你到达橙色之前在三个边上有一些黑线。

这将删除白色边框,然后将橙色变为白色:

 convert amGCH.png -trim -fill white -draw "color 5,5 floodfill" output.png

关于python - 根据值裁剪图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35038803/

相关文章:

python - 如何执行 fields.property() ?

python - 如何用插值替换 pandas df 中的值

python - 无法加载包含腌制数据的文件 - Python .npy I/O

python - 哪种插值最适合调整图像大小?

python - 映射对角线

python - 从 sklearn 中的高斯混合模型获取 PDF

python - sqlalchemy 中的简单更新

c++ - qt中的图像 Gamma 校正

c++ - 在openCV中显示两个相互重叠的图像

java - 如何使用ImageJ获得绿色 channel ?