前言
很多竞赛都涉及到将图片转成程序容易处理的数据结构(比如数学建模),之前一直没有找到很好的方案,都是自己设计坐标点再使用程序一点点画出来,现在发现可以将图片转为简单的位图,其结果相当于一个值为0或255的二维矩阵,方便后续处理。本文以下图为例,将其最终转为Python可以处理的矩阵:
步骤
剪切
题中地图信息是跟题目一起出现的图片,为了方便提取出地图信息,先用windows画图软件或PS将题目文字信息截去,只留地图信息:
去水印
截取后的图片包含了较少噪声(水印),进一步观察后发现图片包含两种主要颜色——代表边界的黑色和背景白色,而水印的颜色的值则与黑白两色相差胜远,使用取色软件得到水印的RGB值在231
左右,故可以使用OpenCV的 threshold 方法将图片中RGB值在231
附近的颜色都改成白色,即删除了水印1:
|
|
结果如下:
二值化
去除水印后图片已经十分纯粹,但在肉眼不可见的多边形黑色边界处还存在一些灰色地带,因此需要OpenCV的 threshold 方法将图片转为二值化的黑白图片:
|
|
结果如下:
总结
经过以上操作,便将一个包含许多噪声的图片转化为了程序可以处理的矩阵元素,可以在此基础上方便使用其他算法完成任务。
参考
-
Allen Jia. 一个简单的去水印小工具. 发表地. [2019-06-06] ↩︎