存在少量正常图片也有空白,如积雪和冰原,但这些空白形状是不规则的:
# 将待裁剪影像的坐标范围转为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像素的完全水平或垂直的分界线,感觉就可以解决这个问题。
下载保存的代码看看
提供个思路~下载后的图片通过多次随机截取20×20的矩形,判断是不是纯白或白色面积超过85%