[英]Why cv2.resize() does not work for integer array?
[~] python3
Python 3.6.8 (default, Jan 14 2019, 11:02:34)
[GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np, cv2
>>> a=np.arange(10,250,10).reshape((6,4))
>>> a
array([[ 10, 20, 30, 40],
[ 50, 60, 70, 80],
[ 90, 100, 110, 120],
[130, 140, 150, 160],
[170, 180, 190, 200],
[210, 220, 230, 240]])
>>> cv2.resize(a,(3,2))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
cv2.error: OpenCV(4.1.0) /io/opencv/modules/imgproc/src/resize.cpp:3596: error: (-215:Assertion failed) func != 0 in function 'resize'
在Linux下的Python 3.6和Windows 10下的Python 3.7中,該問題仍然存在。Windows10下的錯誤消息是:
OpenCV(3.4.1) Error: Assertion failed (func != 0) in cv::hal::resize, file C:\Miniconda3\conda-bld\opencv-suite_1533128839831\work\modules\imgproc\src\resize.cpp, line 3922
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
cv2.error: OpenCV(3.4.1) C:\Miniconda3\conda-bld\opencv-suite_1533128839831\work\modules\imgproc\src\resize.cpp:3922: error: (-215) func != 0 in function cv::hal::resize
如果我將類型更改為float64或float32,例如
a=np.arange(10,250,10).reshape((6,4)).astype(np.float64)
然后cv2.resize
突然起作用。
我相信cv2.resize
的基礎C ++函數不處理int64
或int32
,僅處理uint8
,因此您可以嘗試:
cv2.resize(np.uint8(a),(3,2))
輸出:
array([[ 52, 65, 78],
[172, 185, 198]], dtype=uint8)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.