轮廓计算画图(二)画根据json绘画数据集绘画

21 阅读1分钟

原本应该在第一张写的,但是我着实不善表达,写博客的主要目的也是要求自己能说清楚而不是只有脑子清楚

思路概述

  1. 设计json格式
  2. 设计绘画接口
    • json解析
    • 绘图

json解析

载入json构建drawing模块能利用的python数据对象*


## API设计
```python
def deal_json(path: pathlib.Path) \  
        -> tuple[list[tuple[int, int]], int, int]:  
    """  
    解析json文件  
    :param path: json文件路径  
    :return: 路径列表,原图片长宽高  
    """

画图模块

利用来自json解析模块或者ContourAnalysis模块的二维列表,包含轮廓,以及图片的长宽绘画

有一个问题需要解决,绘图库turtle的单例 原因是因为在要适配在一个进程中连续画图,来个单例比较好

API设计

class _TurtleManager:  
    """内部单例,自动管理 turtle 生命周期"""  
    _screen = None  
    _turtle = None  
    is_first_run = True  # 标记是否是第一次运行
    
	@classmethod  
	def get_instance(cls):
		"""程序结束时手动关闭"""
		...
	@classmethod  
	def reset(cls):
		"""重置画布和海龟状态(不关闭窗口)"""
		...
	@classmethod  
	def close(cls):  
	    """程序结束时手动关闭"""
	    ...
def draw(  
        paths: list[list[tuple[int, int]]],  
        img_h,  
        img_w,  
        delay_time: int = 10) -> None:  
    """  
    利用paths绘制  
    :param paths: 轮廓列表  
    :param img_h: 原图片高  
    :param img_w: 原图片宽  
    :param delay_time:    :return: None  
    """
    
def close_turtle():  
    """程序结束时调用,关闭窗口"""  
    _TurtleManager.close()

Pasted image 20251227161809.png