gpt4 book ai didi

Python 类返回

转载 作者:行者123 更新时间:2023-12-01 05:21:16 27 4
gpt4 key购买 nike

我正在自学 Python,并且想要一个辅助类来从 shell 脚本或其他类加载图像。

这是我到目前为止所拥有的:

import cv2 as cv
import os, sys


class LoadImage:

def __init__(self, inputfile, outputfile=None):
self.inputfile = inputfile
self.outputfile = outputfile
self.img = None

if os.path.isfile(self.inputfile):
self.load()
else:
print "Path provided is not to a file"
sys.exit(1)

def load(self):
self.img = cv.imread(self.inputfile)

if self.img is not None:
return self.img
else:
print "Error with loading image"
sys.exit(1)

我的问题是如何使用它。假设我将其复制到/home/jason/python_project ,其目录结构如下

python_project
|--- LoadImage.py
|
|--- images
|
|--- test1.jpg
|--- test2.jpg

我想要发生的是在使用有效路径名实例化 LoadImage 时,type(img) 返回numpy.ndarray

假设我在 python_project 中打开一个 ipython shell 并输入

from LoadImage import LoadImage
img = LoadImage("images/test1.jpg")

这里,img 返回

In [21]: img
Out[21]: <LoadImage.LoadImage instance

但是img.img返回在cv.imread()上创建的numpy ndarray的矩阵数组。

如何修改此设置以便可以从 shell 执行此操作:

import LoadImage

img = LoadImage("images/test1.jpg")
img.shape() #returns a 3 item tuple
type(img) # returns numpy.ndarray

最佳答案

当您调用LoadImage("images/test1.jpg")时,它会调用“构造函数”,并且它将始终返回该类的实例。您应该做的是在创建实例后调用load函数,并更改代码,使其不在init中调用load。

更新您的代码以反射(reflect)上述更改;

import cv2 as cv
import os, sys


class LoadImage:

def __init__(self, inputfile, outputfile=None):
self.inputfile = inputfile
self.outputfile = outputfile
self.img = None

def load(self):
if not os.path.isfile(self.inputfile):
print "Path provided is not to a file"
sys.exit(1)

self.img = cv.imread(self.inputfile)

if self.img is not None:
return self.img
else:
print "Error with loading image"
sys.exit(1)

你会这样调用它;

导入LoadImage

img = LoadImage("images/test1.jpg").load()
img.shape()

或者,如果您实际上不需要这里的类,您可以编写一个函数来为您完成所有这些工作;

import cv2 as cv
import os, sys

def load_image(input_file):
if not os.path.isfile(self.inputfile):
print "Path provided is not to a file"
sys.exit(1)
img = cv.imread(self.inputfile)
if self.img:
return self.img
else:
print "Error with loading image"
sys.exit(1)

关于Python 类返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22272815/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com