原文: OpenCV4.X - DNN模块 Python APIs - AIUAI
OpenCV 4.X 版本集成了很多直接利用 DNN 模块的 Python API 接口.
安装:
sudo pip install opencv-python
使用:
from cv2 import dnn
# Variables with simple values
DNN_BACKEND_DEFAULT = 0
DNN_BACKEND_HALIDE = 1
DNN_BACKEND_INFERENCE_ENGINE = 2
DNN_BACKEND_OPENCV = 3
DNN_BACKEND_VKCOM = 4
DNN_TARGET_CPU = 0
DNN_TARGET_MYRIAD = 3
DNN_TARGET_OPENCL = 1
DNN_TARGET_OPENCL_FP16 = 2
DNN_TARGET_VULKAN = 4
__loader__ = None
__spec__ = None
1. dnn.blobFromImage
定义:
def blobFromImage(image,
scalefactor=None,
size=None,
mean=None,
swapRB=None,
crop=None,
ddepth=None):
pass
作用:
根据输入图像,创建 NCHW 次序的 4-dim blobs.
参数:
[1] - image: cv2.imread 读取的图片数据;
[2] - scalefactor: 缩放像素值,如 [0, 255] - [0, 1].
[3] - size: 输出图像的尺寸,如 (netInWidth, netInHeight).
[4] - mean: 从各通道减均值. 如果输入 image 为 BGR 次序,且swapRB=True,则通道次序为 (mean-R, mean-G, mean-B).
[5] - swapRB: 交换 3 通道图片的第一个和最后一个通道,如 BGR - RGB.
[6] - crop: 图像尺寸 resize 后是否裁剪. 如果crop=True
,则,输入图片的尺寸调整resize后,一个边对应与 size 的一个维度,而另一个边的值大于等于 size 的另一个维度;然后从 resize 后的图片中心进行 crop. 如果crop=False
,则无需 crop,只需保持图片的长宽比.
[7] - ddepth: 输出 blob 的 Depth. 可选: CV_32F 或 CV_8U.
示例:
import cv2
from cv2 import dnn
import numpy as np
import matplotlib.pyplot as plt
img_cv2 = cv2.imread("test.jpg")
print("[INFO]Image shape: ", img_cv2.shape)
inWidth = 256
inHeight = 256
outBlob1 = cv2.dnn.blobFromImage(img_cv2,
scalefactor=1.0 / 255,
size=(inWidth, inHeight),
mean=(0, 0, 0),