用python opencv 编写一个调用onnx的代码
时间: 2023-09-13 22:13:44 浏览: 190
基于python的opencv实战代码
首先,需要安装 `onnxruntime` 库,这个库是用于加载和运行 ONNX 模型的。可以通过以下命令来安装:
```
pip install onnxruntime
```
然后,可以按照以下步骤编写代码:
1. 导入必要的库
```python
import cv2
import numpy as np
import onnxruntime as ort
```
2. 加载 ONNX 模型
```python
model_path = "path/to/your/onnx/model.onnx"
sess = ort.InferenceSession(model_path)
input_name = sess.get_inputs()[0].name
output_name = sess.get_outputs()[0].name
```
3. 加载图片并做预处理
```python
img_path = "path/to/your/image.jpg"
img = cv2.imread(img_path)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 转换颜色空间
img = cv2.resize(img, (224, 224)) # 调整尺寸
img = img.astype(np.float32) / 255.0 # 归一化
img = np.transpose(img, (2, 0, 1)) # 调整维度顺序
img = np.expand_dims(img, axis=0) # 增加批次维度
```
4. 进行推理
```python
pred = sess.run([output_name], {input_name: img})[0]
```
5. 处理输出
```python
pred = np.argmax(pred, axis=1) # 取最大值的下标作为预测结果
```
完整代码如下:
```python
import cv2
import numpy as np
import onnxruntime as ort
# 加载 ONNX 模型
model_path = "path/to/your/onnx/model.onnx"
sess = ort.InferenceSession(model_path)
input_name = sess.get_inputs()[0].name
output_name = sess.get_outputs()[0].name
# 加载图片并做预处理
img_path = "path/to/your/image.jpg"
img = cv2.imread(img_path)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 转换颜色空间
img = cv2.resize(img, (224, 224)) # 调整尺寸
img = img.astype(np.float32) / 255.0 # 归一化
img = np.transpose(img, (2, 0, 1)) # 调整维度顺序
img = np.expand_dims(img, axis=0) # 增加批次维度
# 进行推理
pred = sess.run([output_name], {input_name: img})[0]
# 处理输出
pred = np.argmax(pred, axis=1) # 取最大值的下标作为预测结果
print(pred)
```
阅读全文