python - opencv TypeError:“插值”是此函数的无效关键字参数
问题描述
当我尝试使用“interpolation=cv2.INTER_CUBIC”调整图像大小时发生错误。我不知道发生了什么。我只是按照https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_geometric_transformations/py_geometric_transformations.html?highlight=resize上的指南进行操作
# from PIL import Image
import cv2
def read_img(frompath):
# return Image.open(frompath)
return cv2.imread(frompath)
def resize_one(img, size, outpath):
# out = img.resize(size)
# out.save(outpath)
out = cv2.resize(img, size)
cv2.imwrite(outpath, out, interpolation=cv2.INTER_CUBIC)
def resize_all(img, tasks):
for (size, outpath) in tasks:
resize_one(img, size, outpath)
def build_tasks(prefix, sizes):
t = []
for (x, y) in sizes:
t.append(((x, y), prefix + '_' + str(x) + '_' + str(y) + '.png'))
return t
def square_tasks(widths):
t = []
for w in widths:
t.append((w, w))
return t
def main():
s = [72, 48, 96, 144, 192]
p = 'logo'
i = './logo_1280.png'
t = build_tasks(p, square_tasks(s))
img = read_img(i)
resize_all(img, t)
if __name__ == '__main__':
main()
libpng warning: iCCP: known incorrect sRGB profile
Traceback (most recent call last):
File ".\main.py", line 39, in <module>
main()
File ".\main.py", line 36, in main
resize_all(img, t)
File ".\main.py", line 16, in resize_all
resize_one(img, size, outpath)
File ".\main.py", line 12, in resize_one
cv2.imwrite(outpath, out, interpolation=cv2.INTER_CUBIC)
TypeError: 'interpolation' is an invalid keyword argument for this function
我正在使用 opencv-contrib-python 4.2.0.34
解决方案
你必须做插值resize
而不是你的imwrite
.
def resize_one(img, size, outpath):
# out = img.resize(size)
# out.save(outpath)
out = cv2.resize(img, size, interpolation=cv2.INTER_CUBIC )
cv2.imwrite(outpath, out)
推荐阅读
- angular - 当我输入超过 3 个字符时如何过滤数据
- xml - What happens when I declare beans and component-scan both in applicationContext.xml?
- php - 服务器返回了意外的 HTTP 状态代码
- podio - 如何在 Podio 字段中计算“下一个生日”
- scala - 将数组(行)的RDD转换为行的RDD?
- react-native - 带图像的可重复使用按钮
- javascript - 如何在考勤管理系统的数据库中保存在校生、缺勤学生名单?
- python - 如何将第二个代码块中的布尔值分配给python中的第一个缩进块?
- javascript - 当通过 Ajax POST 调用 servlet 时,RequestDispatcher.forward() 不转发
- python - n 个字符后的 String.split()