From: Alexander Alekhin Date: Fri, 29 Oct 2021 16:08:57 +0000 (+0000) Subject: python: properly handle step for multichannel case X-Git-Tag: accepted/tizen/unified/20230127.161057~1^2~542^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=40c748a2aeca327c11c5daac2fa0f387e24b7676;p=platform%2Fupstream%2Fopencv.git python: properly handle step for multichannel case --- diff --git a/modules/core/src/matrix.cpp b/modules/core/src/matrix.cpp index 4642d3b..1729862 100644 --- a/modules/core/src/matrix.cpp +++ b/modules/core/src/matrix.cpp @@ -463,7 +463,7 @@ Mat::Mat(Size _sz, int _type, void* _data, size_t _step) } else { - CV_Assert(_step >= minstep); + CV_CheckGE(_step, minstep, ""); if (_step % esz1 != 0) { diff --git a/modules/python/src2/cv2.cpp b/modules/python/src2/cv2.cpp index 6231fde..58b1357 100644 --- a/modules/python/src2/cv2.cpp +++ b/modules/python/src2/cv2.cpp @@ -788,6 +788,8 @@ static bool pyopencv_to(PyObject* o, Mat& m, const ArgInfo& info) if (ndims >= 1 && _strides[ndims - 1] != (npy_intp)elemsize*_sizes[ndims]) needcopy = true; + + elemsize = CV_ELEM_SIZE(type); } if (needcopy) diff --git a/modules/python/test/test_misc.py b/modules/python/test/test_misc.py index 7680399..fe48408 100644 --- a/modules/python/test/test_misc.py +++ b/modules/python/test/test_misc.py @@ -187,6 +187,10 @@ class Arguments(NewOpenCVTests): #res6 = cv.utils.dumpInputArray([a, b]) #self.assertEqual(res6, "InputArrayOfArrays: empty()=false kind=0x00050000 flags=0x01050000 total(-1)=2 dims(-1)=1 size(-1)=2x1 type(0)=CV_32FC1 dims(0)=4 size(0)=[2 3 4 5]") + def test_20968(self): + pixel = np.uint8([[[40, 50, 200]]]) + _ = cv.cvtColor(pixel, cv.COLOR_RGB2BGR) # should not raise exception + def test_parse_to_bool_convertible(self): try_to_convert = partial(self._try_to_convert, cv.utils.dumpBool) for convertible_true in (True, 1, 64, np.bool(1), np.int8(123), np.int16(11), np.int32(2),