获取图像的尺寸大小(size/shape)

两种不同的方式


python 处理图像一般用pillow和opencv两种方式,两种方式返回的图像尺寸宽和高顺序略有不同

OpenCV


OpenCV返回的是H,W,C

img = cv2.imread('./temp.jpg')
h,w,c = img.shape

Pillow


pillow返回的是W,H

img = Image.open('./temp.jpg')
w,h = img.size

参考:
Get image size (width, height) with Python, OpenCV, Pillow (PIL)

在使用C++和OpenCV的DNN模块加载ONNX模型时,获取输入图像尺寸大小通常涉及到两个步骤:首先,你需要知道模型输入层的名称以及输入层的尺寸信息;其次,你需要根据输入层的尺寸要求对要输入的图像进行预处理,比如缩放和裁剪。 具体步骤如下: 1. 加载模型:首先,你需要加载ONNX模型文件到DNN模块中。 ```cpp cv::dnn::Net net = cv::dnn::readNetFromONNX("model.onnx"); ``` 2. 获取模型输入层信息:通过`net.getLayerNames()`方法可以获得所有层的名称,然后你可以找到输入层的名称。 ```cpp std::vector<String> layerNames = net.getLayerNames(); std::vector<int> blobIdx = net.getBlobNames(); ``` 3. 获取输入层尺寸:在OpenCV 4.5.0及以后的版本中,`cv::dnn::Net::getInputShape()`方法可以用来获取输入层的尺寸信息。 ```cpp int inputBlobIndex = -1; cv::Mat inputBlob; for (int i = 0; i < blobIdx.size(); ++i) { if (std::find(layerNames.begin(), layerNames.end(), blobIdx[i]) != layerNames.end()) { inputBlobIndex = i; break; } } if (inputBlobIndex >= 0) { auto inputShape = net.getInputShape(inputBlobIndex); int height = inputShape[2]; int width = inputShape[3]; } ``` 4. 图像预处理:在将图像输入模型之前,你需要根据获取到的输入层尺寸信息对图像进行相应的预处理,比如缩放到合适的尺寸、进行归一化等操作。 请注意,这里提供的代码示例是一个基本的框架,你可能需要根据你的具体模型和需求进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值