蜂芒 2022-12-02 10:33 采纳率: 0%
浏览 48
已结题

如何用python检测下载不完整有空白的图片(文件本身正常可打开)?

我正在网上下载一些图片,但由于网络问题,可能存在部分图片渲染不完整,存在空白,但图片文件本身不是损坏的,可以正常打开,如何通过python对下载的图片进行检测,删除存在空白的图片?

img

img

img

存在少量正常图片也有空白,如积雪和冰原,但这些空白形状是不规则的:

img

代码是用软件QGIS提供的python API(https://docs.qgis.org/3.22/en/docs/pyqgis_developer_cookbook/index.html)写的,QGIS是QT框架,先导入网络图片渲染,然后保存。
# 将待裁剪影像的坐标范围转为QGIS格式
rect = QgsRectangle(block_ext[0], block_ext[1], block_ext[2], block_ext[3])

# 图片保存设置
settings = iface.mapCanvas().mapSettings()
# 设置坐标范围
settings.setExtent(rect)
# 设置像素尺寸
settings.setOutputSize(QSize(block_size[0], block_size[1]))

job = QgsMapRendererSequentialJob(settings)
job.start()
job.waitForFinished()
image = job.renderedImage()
image.save(block_img_path)

我自己尝试了很多方法,目前觉得最靠谱的思路是,检测图像中是否存在完全水平或垂直的分界线,但是使用opencv的直线检测效果很差,如果可以提取达到一定长度的,一侧全是255像素的完全水平或垂直的分界线,感觉就可以解决这个问题。

  • 写回答

2条回答 默认 最新

  • Cleansely 2022-12-02 16:02
    关注

    下载保存的代码看看

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 12月3日
  • 修改了问题 12月2日
  • 修改了问题 12月2日
  • 赞助了问题酬金15元 12月2日
  • 展开全部