@@ -20,30 +20,36 @@ cv::Moments moments(InputArray _src, bool binary)
20
20
Mat src = _src.getMat ();
21
21
22
22
cv::Moments m;
23
- fcvMoments mFCV ;
23
+ if ( size.width == 0 || size.height == 0 )
24
+ return m;
25
+
26
+ fcvMoments* mFCV = new fcvMoments ();
24
27
fcvStatus status = FASTCV_SUCCESS;
25
28
if (binary)
26
29
{
27
- cv::Mat src_binary (size, CV_8UC1);
28
- cv::compare ( src, 0 , src_binary, cv::CMP_NE );
29
- fcvImageMomentsu8 (src_binary.data , src_binary.cols ,
30
- src_binary.rows , src_binary.step , &mFCV , binary);
31
- }
32
- else
33
- {
34
- switch (type)
35
- {
36
- case CV_8UC1:
37
- fcvImageMomentsu8 (src.data , src.cols , src.rows , src.step [0 ], &mFCV , binary);
38
- break ;
39
- case CV_32SC1:
40
- fcvImageMomentss32 (src.ptr <int >(), src.cols , src.rows , src.step [0 ], &mFCV , binary);
41
- break ;
42
- case CV_32FC1:
43
- fcvImageMomentsf32 (src.ptr <float >(), src.cols , src.rows , src.step [0 ], &mFCV , binary);
44
- break ;
45
- }
30
+ cv::Mat src_binary (size, CV_8UC1);
31
+ cv::compare ( src, 0 , src_binary, cv::CMP_NE );
32
+ fcvImageMomentsu8 (src_binary.data , src_binary.cols ,
33
+ src_binary.rows , src_binary.step , mFCV , binary);
46
34
}
35
+ else
36
+ {
37
+ switch (type)
38
+ {
39
+ case CV_8UC1:
40
+ fcvImageMomentsu8 (src.data , src.cols , src.rows ,
41
+ src.step , mFCV , binary);
42
+ break ;
43
+ case CV_32SC1:
44
+ fcvImageMomentss32 ((const int *)src.data , src.cols , src.rows ,
45
+ src.step , mFCV , binary);
46
+ break ;
47
+ case CV_32FC1:
48
+ fcvImageMomentsf32 ((const float *)src.data , src.cols , src.rows ,
49
+ src.step , mFCV , binary);
50
+ break ;
51
+ }
52
+ }
47
53
48
54
if (status != FASTCV_SUCCESS)
49
55
{
0 commit comments