@@ -285,23 +285,20 @@ PHP_METHOD(opencv_mat, data)
285285 zval shape_zval;
286286 array_init (&shape_zval);
287287
288- if (obj->mat ->isContinuous ()) {
289- for (int channel = 0 ; channel < obj->mat ->channels (); channel++)
290- {
291- for (int i = 0 ; i < obj->mat ->total (); i++)
292- {
293- switch (obj->mat ->depth ()){
294- case CV_8U: add_next_index_long (&shape_zval, obj->mat ->at <uchar>(i + channel * obj->mat ->total ())); break ;
295- case CV_8S: add_next_index_long (&shape_zval, obj->mat ->at <schar>(i + channel * obj->mat ->total ())); break ;
296- case CV_16U: add_next_index_long (&shape_zval, obj->mat ->at <ushort>(i + channel * obj->mat ->total ())); break ;
297- case CV_16S: add_next_index_long (&shape_zval, obj->mat ->at <short >(i + channel * obj->mat ->total ())); break ;
298- case CV_32S: add_next_index_long (&shape_zval, obj->mat ->at <int >(i + channel * obj->mat ->total ())); break ;
299- case CV_32F: add_next_index_double (&shape_zval, obj->mat ->at <float >(i + channel * obj->mat ->total ())); break ;
300- case CV_64F: add_next_index_double (&shape_zval, obj->mat ->at <double >(i + channel * obj->mat ->total ()));break ;
301-
302- default : opencv_throw_exception (" Wrong Mat type" ); break ;
303- }
304- }
288+ long data_len = obj->mat ->total ();
289+ int depth = obj->mat ->depth ();
290+ uchar *data = obj->mat ->data ;
291+
292+ for (int i = 0 ; i < data_len; i++)
293+ {
294+ switch (depth) {
295+ case CV_8U: add_next_index_long (&shape_zval, ((uchar*)data)[i]); break ;
296+ case CV_8S: add_next_index_long (&shape_zval, ((schar*)data)[i]); break ;
297+ case CV_16U: add_next_index_long (&shape_zval, ((ushort*)data)[i]); break ;
298+ case CV_16S: add_next_index_long (&shape_zval, ((short *)data)[i]); break ;
299+ case CV_32S: add_next_index_long (&shape_zval, ((int *)data)[i]); break ;
300+ case CV_32F: add_next_index_double (&shape_zval, ((float *)data)[i]); break ;
301+ case CV_64F: add_next_index_double (&shape_zval, ((double *)data)[i]); break ;
305302 }
306303 }
307304
0 commit comments