jab*_*edo 176
cv2numpy用于处理图像,因此正确使用获得图像大小的最佳方法numpy.shape.假设您正在使用BGR图像,这是一个示例:
>>> import numpy as np
>>> import cv2
>>> img = cv2.imread('foo.jpg')
>>> height, width, channels = img.shape
>>> print height, width, channels
600 800 3
Run Code Online (Sandbox Code Playgroud)
如果您使用的是二进制图像,img则会有两个维度,因此您必须将代码更改为:height, width = img.shape
Tom*_*dor 18
我担心没有"更好"的方法来获得这个尺寸,但这并不是那么大的痛苦.
当然,对于二进制/单声道图像以及多声道图像,您的代码应该是安全的,但是图像的主要尺寸总是首先出现在numpy数组的形状中.如果你选择了可读性,或者不想打扰这个,你可以将它包装在一个函数中,并给它一个你喜欢的名字,例如cv_size:
import numpy as np
import cv2
# ...
def cv_size(img):
return tuple(img.shape[1::-1])
Run Code Online (Sandbox Code Playgroud)
如果你在终端/ ipython上,你也可以用lambda表达它:
>>> cv_size = lambda img: tuple(img.shape[1::-1])
>>> cv_size(img)
(640, 480)
Run Code Online (Sandbox Code Playgroud)
def在交互式工作时,编写函数并不好玩.
编辑
最初我认为使用[:2]是可以的,但是numpy形状是(height, width[, depth]),我们需要(width, height),例如cv2.resize期望,所以 - 我们必须使用[1::-1].更难忘的是[:2].谁还记得反向切片?
| 归档时间: |
|
| 查看次数: |
189684 次 |
| 最近记录: |