用python将jpg文件转为eps格式

29 篇文章 0 订阅
15 篇文章 0 订阅

背景:

由于latex要使用eps格式来插入图片,所以想找一个eps转换器,发现在AppStore上一个转换器要68元,决定使用python来做这件事情。

解决方案:

使用Python Imaging Library (简称PIL)地址: http://www.pythonware.com/products/pil/


import Image
img=Image.open("专利附图-模块图.jpg")
img.save("专利附图-模块图.eps","EPS"

用这个脚本只要3行就能处理图片文件格式转换,但是需要说明的是其他格式的图片转成eps很方便;但是由于eps格式是只写(write-only)的,也就是说程序不能读取eps,将它转成流格式,自然也就不能转成其他格式的图片,如果有这方面的需求可以参考:EPS to JPEG or PNG by python 

使用CV库,可以通过以下步骤进行轮廓近似的Python代码实现: 1. 首先,使用函数cv2.arcLength计算轮廓的周长,将其保存为peri变量。 2. 接下来,使用函数cv2.approxPolyDP进行轮廓的近似计算。其中,eps * peri充当近似精度,通过遍历不同的eps值来进行轮廓近似。 3. 创建一个输出图像的副本,使用cv2.drawContours函数在该图像上绘制近似的轮廓形状。 4. 使用cv2.putText函数在图像上添加文本信息,显示eps值和近似轮廓的点数。 5. 最后,使用cv2.imshow函数显示输出图像,等待用户按下任意键。 下面是一个示例代码: ```python import cv2 import numpy as np # 读取图像并转为灰度图 image = cv2.imread('image.jpg') gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # 对灰度图进行阈值处理 _, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) # 找到最大的轮廓 contours, _ = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) c = max(contours, key=cv2.contourArea) # 进行轮廓近似 eps_values = np.linspace(0.001, 0.05, 10) for eps in eps_values: peri = cv2.arcLength(c, True) approx = cv2.approxPolyDP(c, eps * peri, True) # 创建输出图像的副本并绘制近似轮廓形状 output = image.copy() cv2.drawContours(output, [approx], -1, (0, 255, 0), 3) # 添加文本信息 text = "eps={:.4f}, num_pts={}".format(eps, len(approx)) cv2.putText(output, text, (x, y - 5), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 1) print("[INFO] {}".format(text)) # 显示输出图像 cv2.imshow("Approximated Contour", output) cv2.waitKey(0) cv2.destroyAllWindows() ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值