bonanza-ruby-opencv 0.0.13.20160621111908 → 0.0.13.20200923185241

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 9db0b94905f6087fa029acc9c129281308832420
4
- data.tar.gz: 0a14b2216cfe58ca0eac122a4771fec9c5ef667d
2
+ SHA256:
3
+ metadata.gz: b1e5119a7a5d2271845769949eddcaccd0a519c3afd373f967b4b7c6a19880a6
4
+ data.tar.gz: 05c6480bfdc0f25d07fdc6e4e1d79ee6be8a1ddf94f2d9aabcc7654bd3f6598e
5
5
  SHA512:
6
- metadata.gz: 6c792de42ba8042d613b1821bf12f437bf7354736eb4347f458946eb8957f19cda09f3f642d26ed8e27b08d9bb229aa84b3a4c25603f3714b96b509db7fa0683
7
- data.tar.gz: 62157065d7794ce7f3ec08ad8bd4fe94d7b17632621d7bc239bc7f79ffb7d8be81f10e5ba93d8afb38b018d2fe14f6411a965959965ee4eb0f8dc40964a14a16
6
+ metadata.gz: 645336822d5bed3ce63d416646bfa96fe040d4f868af99546e0247abdbc1103be5fac7009340a759271bb2c2be16a7ec4d5e74328e50a9f7fe055c641906da6d
7
+ data.tar.gz: 9ecc114298d4f79d2d57f30bb8630125c089104d9a7aee0c14dd3b95826f6cc19c590e64b5eae380a56397e7143f81749c7e0227e4a9f2ffd92d4a5180e4d25d
@@ -62,7 +62,11 @@ rb_initialize(int argc, VALUE *argv, VALUE self)
62
62
  raise_cverror(e);
63
63
  }
64
64
  CvSeq* self_ptr = CVSEQ(self);
65
+ #ifdef RUBY_INTEGER_UNIFICATION
66
+ cCvSeq::register_elem_class(self, rb_cInteger);
67
+ #else
65
68
  cCvSeq::register_elem_class(self, rb_cFixnum);
69
+ #endif
66
70
  register_root_object(self_ptr, storage_value);
67
71
 
68
72
  return self;
@@ -95,19 +95,19 @@ rb_initialize(int argc, VALUE *argv, VALUE self)
95
95
 
96
96
  rb_scan_args(argc, argv, "32", &_dims, &_sizes, &_type, &_ranges, &_uniform);
97
97
  int sizes_len = RARRAY_LEN(_sizes);
98
- sizes = ALLOCA_N(int, sizes_len);
98
+ sizes = RB_ALLOC_N(int, sizes_len);
99
99
 
100
100
  if (NIL_P(_ranges)) {
101
101
  sizes = ary2intptr(_sizes, sizes);
102
102
  ranges = NULL;
103
103
  }
104
104
  else {
105
- ranges = ALLOCA_N(float*, sizes_len);
105
+ ranges = RB_ALLOC_N(float*, sizes_len);
106
106
  VALUE* range_ptr = RARRAY_PTR(_ranges);
107
107
  int i;
108
108
  for (i = 0; i < sizes_len; i++) {
109
109
  sizes[i] = NUM2INT(RARRAY_PTR(_sizes)[i]);
110
- ranges[i] = ary2fltptr(range_ptr[i], ALLOCA_N(float, 2));
110
+ ranges[i] = ary2fltptr(range_ptr[i], RB_ALLOC_N(float, 2));
111
111
  }
112
112
  }
113
113
  uniform = TRUE_OR_FALSE(_uniform, 1);
@@ -193,7 +193,7 @@ rb_calc_hist_bang(int argc, VALUE* argv, VALUE self)
193
193
  rb_scan_args(argc, argv, "12", &images, &accumulate, &mask);
194
194
  Check_Type(images, T_ARRAY);
195
195
  int num_images = RARRAY_LEN(images);
196
- IplImage** img = ALLOCA_N(IplImage*, num_images);
196
+ IplImage** img = RB_ALLOC_N(IplImage*, num_images);
197
197
  VALUE* images_ptr = RARRAY_PTR(images);
198
198
  for (int i = 0; i < num_images; i++) {
199
199
  img[i] = IPLIMAGE_WITH_CHECK(images_ptr[i]);
@@ -226,7 +226,7 @@ VALUE
226
226
  rb_aref(VALUE self, VALUE args)
227
227
  {
228
228
  int num_idx = RARRAY_LEN(args);
229
- int* idx = ALLOCA_N(int, num_idx);
229
+ int* idx = RB_ALLOC_N(int, num_idx);
230
230
  VALUE* args_ptr = RARRAY_PTR(args);
231
231
  for (int i = 0; i < num_idx; i++) {
232
232
  idx[i] = NUM2INT(args_ptr[i]);
@@ -257,6 +257,36 @@ rb_aref(VALUE self, VALUE args)
257
257
  return rb_float_new((double)value);
258
258
  }
259
259
 
260
+ VALUE
261
+ rb_at(VALUE self, VALUE x)
262
+ {
263
+ float value = 0.0;
264
+ CvHistogram* self_ptr = CVHISTOGRAM(self);
265
+ try {
266
+ value = cvQueryHistValue_1D(self_ptr, NUM2INT(x));
267
+ }
268
+ catch (cv::Exception& e) {
269
+ raise_cverror(e);
270
+ }
271
+
272
+ return rb_float_new((double)value);
273
+ }
274
+
275
+ VALUE
276
+ rb_at_3d(VALUE self, VALUE x, VALUE y, VALUE z)
277
+ {
278
+ float value = 0.0;
279
+ CvHistogram* self_ptr = CVHISTOGRAM(self);
280
+ try {
281
+ value = cvQueryHistValue_3D(self_ptr, NUM2INT(x), NUM2INT(y), NUM2INT(z));
282
+ }
283
+ catch (cv::Exception& e) {
284
+ raise_cverror(e);
285
+ }
286
+
287
+ return rb_float_new((double)value);
288
+ }
289
+
260
290
  /*
261
291
  * Finds the minimum and maximum histogram bins.
262
292
  * @overload min_max_value
@@ -279,8 +309,8 @@ rb_min_max_value(VALUE self)
279
309
  int *max_idx = NULL;
280
310
  try {
281
311
  dims = cvGetDims(self_ptr->bins, NULL);
282
- min_idx = ALLOCA_N(int, dims);
283
- max_idx = ALLOCA_N(int, dims);
312
+ min_idx = RB_ALLOC_N(int, dims);
313
+ max_idx = RB_ALLOC_N(int, dims);
284
314
  cvGetMinMaxHistValue(CVHISTOGRAM(self), &min_value, &max_value, min_idx, max_idx);
285
315
  }
286
316
  catch (cv::Exception& e) {
@@ -493,10 +523,10 @@ rb_set_hist_bin_ranges_bang(int argc, VALUE* argv, VALUE self)
493
523
  Check_Type(_ranges, T_ARRAY);
494
524
 
495
525
  int ranges_size = RARRAY_LEN(_ranges);
496
- float** ranges = ALLOCA_N(float*, ranges_size);
526
+ float** ranges = RB_ALLOC_N(float*, ranges_size);
497
527
  VALUE* range_ptr = RARRAY_PTR(_ranges);
498
528
  for (int i = 0; i < ranges_size; ++i) {
499
- ranges[i] = ary2fltptr(range_ptr[i], ALLOCA_N(float, 2));
529
+ ranges[i] = ary2fltptr(range_ptr[i], RB_ALLOC_N(float, 2));
500
530
  }
501
531
  int uniform = TRUE_OR_FALSE(_uniform, 1);
502
532
 
@@ -530,7 +560,7 @@ rb_calc_back_project(VALUE self, VALUE image)
530
560
  return Qnil;
531
561
  }
532
562
 
533
- IplImage** img = ALLOCA_N(IplImage*, num_images);
563
+ IplImage** img = RB_ALLOC_N(IplImage*, num_images);
534
564
  VALUE* image_ptr = RARRAY_PTR(image);
535
565
  for (int i = 0; i < num_images; ++i) {
536
566
  img[i] = IPLIMAGE_WITH_CHECK(image_ptr[i]);
@@ -577,7 +607,7 @@ rb_calc_back_project_patch(VALUE self, VALUE image, VALUE patch_size, VALUE meth
577
607
  return Qnil;
578
608
  }
579
609
 
580
- IplImage** img = ALLOCA_N(IplImage*, num_images);
610
+ IplImage** img = RB_ALLOC_N(IplImage*, num_images);
581
611
  VALUE* image_ptr = RARRAY_PTR(image);
582
612
  for (int i = 0; i < num_images; ++i) {
583
613
  img[i] = IPLIMAGE_WITH_CHECK(image_ptr[i]);
@@ -682,6 +712,8 @@ init_ruby_class()
682
712
  rb_define_method(rb_klass, "calc_hist", RUBY_METHOD_FUNC(rb_calc_hist), -1);
683
713
  rb_define_method(rb_klass, "calc_hist!", RUBY_METHOD_FUNC(rb_calc_hist_bang), -1);
684
714
  rb_define_method(rb_klass, "[]", RUBY_METHOD_FUNC(rb_aref), -2);
715
+ rb_define_method(rb_klass, "at", RUBY_METHOD_FUNC(rb_at), 1);
716
+ rb_define_method(rb_klass, "at_3d", RUBY_METHOD_FUNC(rb_at_3d), 3);
685
717
  rb_define_alias(rb_klass, "query_hist_value", "[]");
686
718
  rb_define_method(rb_klass, "min_max_value", RUBY_METHOD_FUNC(rb_min_max_value), 0);
687
719
  rb_define_method(rb_klass, "copy_hist", RUBY_METHOD_FUNC(rb_copy_hist), 0);
@@ -1137,14 +1137,11 @@ rb_set_data(VALUE self, VALUE data)
1137
1137
  int depth = CV_MAT_DEPTH(self_ptr->type);
1138
1138
 
1139
1139
  if (TYPE(data) == T_STRING) {
1140
- if (depth != CV_8U)
1141
- rb_raise(rb_eArgError, "Invalid CvMat depth");
1142
-
1143
1140
  if (!CV_IS_MAT_CONT(self_ptr->type))
1144
1141
  rb_raise(rb_eArgError, "CvMat must be continuous");
1145
1142
 
1146
1143
  const int dataLength = RSTRING_LEN(data);
1147
- if (dataLength != self_ptr->width * self_ptr->height * CV_MAT_CN(self_ptr->type))
1144
+ if (dataLength != self_ptr->width * self_ptr->height * CV_ELEM_SIZE(self_ptr->type))
1148
1145
  rb_raise(rb_eArgError, "Invalid data string length");
1149
1146
 
1150
1147
  memcpy(self_ptr->data.ptr, RSTRING_PTR(data), dataLength);
@@ -2101,12 +2098,21 @@ VALUE
2101
2098
  rb_cmp_internal(VALUE self, VALUE val, VALUE dest, int operand)
2102
2099
  {
2103
2100
  CvArr* self_ptr = CVARR(self);
2101
+
2102
+ if (CV_MAT_CN(cvGetElemType(self_ptr)) != 1) {
2103
+ rb_raise(rb_eArgError, "self should be a single-channel CvMat.");
2104
+ }
2105
+
2104
2106
  try {
2105
- if (rb_obj_is_kind_of(val, rb_klass))
2106
- cvCmp(self_ptr, CVARR(val), CVARR(dest), operand);
2107
- else if (CV_MAT_CN(cvGetElemType(self_ptr)) == 1 && rb_obj_is_kind_of(val, rb_cNumeric))
2107
+ if (rb_obj_is_kind_of(val, rb_klass)) {
2108
+ CvArr* val_ptr = CVARR(val);
2109
+ if (CV_MAT_CN(cvGetElemType(val_ptr)) != 1) {
2110
+ rb_raise(rb_eArgError, "val should be a single-channel CvMat.");
2111
+ }
2112
+ cvCmp(self_ptr, val_ptr, CVARR(dest), operand);
2113
+ } else if (rb_obj_is_kind_of(val, rb_cNumeric)) {
2108
2114
  cvCmpS(self_ptr, NUM2DBL(val), CVARR(dest), operand);
2109
- else {
2115
+ } else {
2110
2116
  VALUE mat = new_mat_kind_object(cvGetSize(CVARR(self)), self);
2111
2117
  cvSet(CVARR(mat), VALUE_TO_CVSCALAR(val));
2112
2118
  cvCmp(self_ptr, CVARR(mat), CVARR(dest), operand);
@@ -3415,14 +3421,14 @@ rb_fill_poly_bang(int argc, VALUE *argv, VALUE self)
3415
3421
  Check_Type(polygons, T_ARRAY);
3416
3422
  drawing_option = DRAWING_OPTION(drawing_option);
3417
3423
  num_polygons = RARRAY_LEN(polygons);
3418
- num_points = ALLOCA_N(int, num_polygons);
3424
+ num_points = RB_ALLOC_N(int, num_polygons);
3419
3425
 
3420
- p = ALLOCA_N(CvPoint*, num_polygons);
3426
+ p = RB_ALLOC_N(CvPoint*, num_polygons);
3421
3427
  for (j = 0; j < num_polygons; ++j) {
3422
3428
  points = rb_ary_entry(polygons, j);
3423
3429
  Check_Type(points, T_ARRAY);
3424
3430
  num_points[j] = RARRAY_LEN(points);
3425
- p[j] = ALLOCA_N(CvPoint, num_points[j]);
3431
+ p[j] = RB_ALLOC_N(CvPoint, num_points[j]);
3426
3432
  for (i = 0; i < num_points[j]; ++i) {
3427
3433
  p[j][i] = VALUE_TO_CVPOINT(rb_ary_entry(points, i));
3428
3434
  }
@@ -3488,7 +3494,7 @@ rb_fill_convex_poly_bang(int argc, VALUE *argv, VALUE self)
3488
3494
  Check_Type(points, T_ARRAY);
3489
3495
  drawing_option = DRAWING_OPTION(drawing_option);
3490
3496
  num_points = RARRAY_LEN(points);
3491
- p = ALLOCA_N(CvPoint, num_points);
3497
+ p = RB_ALLOC_N(CvPoint, num_points);
3492
3498
  for (i = 0; i < num_points; ++i)
3493
3499
  p[i] = VALUE_TO_CVPOINT(rb_ary_entry(points, i));
3494
3500
 
@@ -3564,14 +3570,14 @@ rb_poly_line_bang(int argc, VALUE *argv, VALUE self)
3564
3570
  Check_Type(polygons, T_ARRAY);
3565
3571
  drawing_option = DRAWING_OPTION(drawing_option);
3566
3572
  num_polygons = RARRAY_LEN(polygons);
3567
- num_points = ALLOCA_N(int, num_polygons);
3568
- p = ALLOCA_N(CvPoint*, num_polygons);
3573
+ num_points = RB_ALLOC_N(int, num_polygons);
3574
+ p = RB_ALLOC_N(CvPoint*, num_polygons);
3569
3575
 
3570
3576
  for (j = 0; j < num_polygons; ++j) {
3571
3577
  points = rb_ary_entry(polygons, j);
3572
3578
  Check_Type(points, T_ARRAY);
3573
3579
  num_points[j] = RARRAY_LEN(points);
3574
- p[j] = ALLOCA_N(CvPoint, num_points[j]);
3580
+ p[j] = RB_ALLOC_N(CvPoint, num_points[j]);
3575
3581
  for (i = 0; i < num_points[j]; ++i) {
3576
3582
  p[j][i] = VALUE_TO_CVPOINT(rb_ary_entry(points, i));
3577
3583
  }
@@ -3980,7 +3986,7 @@ rb_find_chessboard_corners(int argc, VALUE *argv, VALUE self)
3980
3986
 
3981
3987
  int flag = NIL_P(flag_val) ? CV_CALIB_CB_ADAPTIVE_THRESH : NUM2INT(flag_val);
3982
3988
  CvSize pattern_size = VALUE_TO_CVSIZE(pattern_size_val);
3983
- CvPoint2D32f* corners = ALLOCA_N(CvPoint2D32f, pattern_size.width * pattern_size.height);
3989
+ CvPoint2D32f* corners = RB_ALLOC_N(CvPoint2D32f, pattern_size.width * pattern_size.height);
3984
3990
  int num_found_corners = 0;
3985
3991
  int pattern_was_found = 0;
3986
3992
  try {
@@ -4016,7 +4022,7 @@ rb_find_corner_sub_pix(VALUE self, VALUE corners, VALUE win_size, VALUE zero_zon
4016
4022
  {
4017
4023
  Check_Type(corners, T_ARRAY);
4018
4024
  int count = RARRAY_LEN(corners);
4019
- CvPoint2D32f* corners_buff = ALLOCA_N(CvPoint2D32f, count);
4025
+ CvPoint2D32f* corners_buff = RB_ALLOC_N(CvPoint2D32f, count);
4020
4026
  VALUE* corners_ptr = RARRAY_PTR(corners);
4021
4027
 
4022
4028
  for (int i = 0; i < count; i++) {
@@ -4325,8 +4331,8 @@ rb_get_perspective_transform(VALUE self, VALUE source, VALUE dest)
4325
4331
 
4326
4332
  int count = RARRAY_LEN(source);
4327
4333
 
4328
- CvPoint2D32f* source_buff = ALLOCA_N(CvPoint2D32f, count);
4329
- CvPoint2D32f* dest_buff = ALLOCA_N(CvPoint2D32f, count);
4334
+ CvPoint2D32f* source_buff = RB_ALLOC_N(CvPoint2D32f, count);
4335
+ CvPoint2D32f* dest_buff = RB_ALLOC_N(CvPoint2D32f, count);
4330
4336
 
4331
4337
  for (int i = 0; i < count; i++) {
4332
4338
  source_buff[i] = *(CVPOINT2D32F(RARRAY_PTR(source)[i]));
@@ -5192,6 +5198,35 @@ rb_flood_fill_bang(int argc, VALUE *argv, VALUE self)
5192
5198
  return rb_ary_new3(3, self, cCvRect::new_object(cvRect(rect.x, rect.y, rect.width, rect.height)), mask);
5193
5199
  }
5194
5200
 
5201
+ VALUE
5202
+ rb_flood_fill_mask(VALUE self, VALUE seed_point, VALUE mask, VALUE lo_diff, VALUE up_diff, VALUE connectivity, VALUE fixed_range)
5203
+ {
5204
+ int flags = NUM2INT(connectivity);
5205
+ if (RTEST(fixed_range)) {
5206
+ flags |= CV_FLOODFILL_FIXED_RANGE;
5207
+ }
5208
+ flags |= CV_FLOODFILL_MASK_ONLY;
5209
+ cv::Rect rect;
5210
+ try {
5211
+ cv::Mat selfMat(CVMAT(self));
5212
+ cv::Mat maskMat(CVMAT(mask));
5213
+
5214
+ cv::floodFill(
5215
+ selfMat,
5216
+ maskMat,
5217
+ cv::Point(VALUE_TO_CVPOINT(seed_point)),
5218
+ cv::Scalar(cvScalar(0)),
5219
+ &rect,
5220
+ cv::Scalar(NIL_P(lo_diff) ? cvScalar(0) : VALUE_TO_CVSCALAR(lo_diff)),
5221
+ cv::Scalar(NIL_P(up_diff) ? cvScalar(0) : VALUE_TO_CVSCALAR(up_diff)),
5222
+ flags);
5223
+ }
5224
+ catch (cv::Exception& e) {
5225
+ raise_cverror(e);
5226
+ }
5227
+ return cCvRect::new_object(cvRect(rect.x, rect.y, rect.width, rect.height));
5228
+ }
5229
+
5195
5230
  /*
5196
5231
  * Finds contours in binary image.
5197
5232
  *
@@ -5340,7 +5375,7 @@ rb_draw_chessboard_corners_bang(VALUE self, VALUE pattern_size, VALUE corners, V
5340
5375
  {
5341
5376
  Check_Type(corners, T_ARRAY);
5342
5377
  int count = RARRAY_LEN(corners);
5343
- CvPoint2D32f* corners_buff = ALLOCA_N(CvPoint2D32f, count);
5378
+ CvPoint2D32f* corners_buff = RB_ALLOC_N(CvPoint2D32f, count);
5344
5379
  VALUE* corners_ptr = RARRAY_PTR(corners);
5345
5380
  for (int i = 0; i < count; i++) {
5346
5381
  corners_buff[i] = *(CVPOINT2D32F(corners_ptr[i]));
@@ -5432,6 +5467,19 @@ rb_watershed(VALUE self, VALUE markers)
5432
5467
  return markers;
5433
5468
  }
5434
5469
 
5470
+ VALUE
5471
+ rb_kmeans(VALUE self, VALUE k, VALUE termcrit)
5472
+ {
5473
+ VALUE labels = new_object(CVMAT(self)->height, 1, CV_32SC1);
5474
+ try {
5475
+ cvKMeans2(CVARR(self), NUM2INT(k), CVARR(labels), *CVTERMCRITERIA(termcrit));
5476
+ }
5477
+ catch (cv::Exception& e) {
5478
+ raise_cverror(e);
5479
+ }
5480
+ return labels;
5481
+ }
5482
+
5435
5483
  /*
5436
5484
  * call-seq:
5437
5485
  * grab_cut -> cvmat(mask:cv8uc1)
@@ -6018,9 +6066,9 @@ rb_snake_image(int argc, VALUE *argv, VALUE self)
6018
6066
  (RARRAY_LEN(beta) != length) ||
6019
6067
  (RARRAY_LEN(gamma) != length))
6020
6068
  rb_raise(rb_eArgError, "alpha, beta, gamma should be same size of points");
6021
- a = ALLOCA_N(float, length);
6022
- b = ALLOCA_N(float, length);
6023
- c = ALLOCA_N(float, length);
6069
+ a = RB_ALLOC_N(float, length);
6070
+ b = RB_ALLOC_N(float, length);
6071
+ c = RB_ALLOC_N(float, length);
6024
6072
  for (i = 0; i < length; ++i) {
6025
6073
  a[i] = (float)NUM2DBL(RARRAY_PTR(alpha)[i]);
6026
6074
  b[i] = (float)NUM2DBL(RARRAY_PTR(beta)[i]);
@@ -6696,7 +6744,7 @@ init_ruby_class()
6696
6744
  rb_define_method(rb_klass, "range", RUBY_METHOD_FUNC(rb_range), 2);
6697
6745
  rb_define_method(rb_klass, "range!", RUBY_METHOD_FUNC(rb_range_bang), 2);
6698
6746
 
6699
- rb_define_method(rb_klass, "reshape", RUBY_METHOD_FUNC(rb_reshape), -1);
6747
+ rb_define_method(rb_klass, "reshape", RUBY_METHOD_FUNC(rb_reshape), 1);
6700
6748
  rb_define_method(rb_klass, "repeat", RUBY_METHOD_FUNC(rb_repeat), 1);
6701
6749
  rb_define_method(rb_klass, "flip", RUBY_METHOD_FUNC(rb_flip), -1);
6702
6750
  rb_define_method(rb_klass, "flip!", RUBY_METHOD_FUNC(rb_flip_bang), -1);
@@ -6832,6 +6880,7 @@ init_ruby_class()
6832
6880
 
6833
6881
  rb_define_method(rb_klass, "flood_fill", RUBY_METHOD_FUNC(rb_flood_fill), -1);
6834
6882
  rb_define_method(rb_klass, "flood_fill!", RUBY_METHOD_FUNC(rb_flood_fill_bang), -1);
6883
+ rb_define_method(rb_klass, "flood_fill_mask", RUBY_METHOD_FUNC(rb_flood_fill_mask), 6);
6835
6884
  rb_define_method(rb_klass, "find_contours", RUBY_METHOD_FUNC(rb_find_contours), -1);
6836
6885
  rb_define_method(rb_klass, "find_contours!", RUBY_METHOD_FUNC(rb_find_contours_bang), -1);
6837
6886
  rb_define_method(rb_klass, "draw_contours", RUBY_METHOD_FUNC(rb_draw_contours), -1);
@@ -6840,6 +6889,7 @@ init_ruby_class()
6840
6889
  rb_define_method(rb_klass, "draw_chessboard_corners!", RUBY_METHOD_FUNC(rb_draw_chessboard_corners_bang), 3);
6841
6890
  rb_define_method(rb_klass, "pyr_mean_shift_filtering", RUBY_METHOD_FUNC(rb_pyr_mean_shift_filtering), -1);
6842
6891
  rb_define_method(rb_klass, "watershed", RUBY_METHOD_FUNC(rb_watershed), 1);
6892
+ rb_define_method(rb_klass, "kmeans", RUBY_METHOD_FUNC(rb_kmeans), 2);
6843
6893
  rb_define_method(rb_klass, "grab_cut", RUBY_METHOD_FUNC(rb_grab_cut), 6);
6844
6894
  rb_define_method(rb_klass, "grab_cut2", RUBY_METHOD_FUNC(rb_grab_cut2), 10);
6845
6895
 
@@ -88,7 +88,11 @@ rb_initialize(int argc, VALUE *argv, VALUE self)
88
88
  raise_typeerror(klass, rb_cClass);
89
89
 
90
90
  int type = 0, size = 0;
91
+ #ifdef RUBY_INTEGER_UNIFICATION
92
+ if (klass == rb_cInteger) {
93
+ #else
91
94
  if (klass == rb_cFixnum) {
95
+ #endif
92
96
  type = CV_SEQ_ELTYPE_INDEX;
93
97
  size = sizeof(int);
94
98
  }
@@ -170,7 +174,11 @@ rb_aref(VALUE self, VALUE index)
170
174
 
171
175
  VALUE result = Qnil;
172
176
  try {
177
+ #ifdef RUBY_INTEGER_UNIFICATION
178
+ if (seqblock_class(self) == rb_cInteger)
179
+ #else
173
180
  if (seqblock_class(self) == rb_cFixnum)
181
+ #endif
174
182
  result = INT2NUM(*CV_GET_SEQ_ELEM(int, seq, idx));
175
183
  else
176
184
  result = REFER_OBJECT(seqblock_class(self), cvGetSeqElem(seq, idx), self);
@@ -352,7 +360,11 @@ rb_pop(VALUE self)
352
360
  VALUE object = Qnil;
353
361
  VALUE klass = seqblock_class(self);
354
362
  try {
363
+ #ifdef RUBY_INTEGER_UNIFICATION
364
+ if (klass == rb_cInteger) {
365
+ #else
355
366
  if (klass == rb_cFixnum) {
367
+ #endif
356
368
  int n = 0;
357
369
  cvSeqPop(seq, &n);
358
370
  object = INT2FIX(n);
@@ -420,7 +432,11 @@ rb_shift(VALUE self)
420
432
 
421
433
  VALUE object = Qnil;
422
434
  try {
435
+ #ifdef RUBY_INTEGER_UNIFICATION
436
+ if (seqblock_class(self) == rb_cInteger) {
437
+ #else
423
438
  if (seqblock_class(self) == rb_cFixnum) {
439
+ #endif
424
440
  int n = 0;
425
441
  cvSeqPopFront(seq, &n);
426
442
  object = INT2NUM(n);
@@ -456,7 +472,11 @@ rb_each(VALUE self)
456
472
  if (seq->total > 0) {
457
473
  VALUE klass = seqblock_class(self);
458
474
  try {
475
+ #ifdef RUBY_INTEGER_UNIFICATION
476
+ if (klass == rb_cInteger)
477
+ #else
459
478
  if (klass == rb_cFixnum)
479
+ #endif
460
480
  for (int i = 0; i < seq->total; ++i)
461
481
  rb_yield(INT2NUM(*CV_GET_SEQ_ELEM(int, seq, i)));
462
482
  else
@@ -501,7 +521,11 @@ rb_insert(VALUE self, VALUE index, VALUE object)
501
521
  if (CLASS_OF(object) != klass)
502
522
  rb_raise(rb_eTypeError, "arguments should be %s.", rb_class2name(klass));
503
523
  try {
524
+ #ifdef RUBY_INTEGER_UNIFICATION
525
+ if (klass == rb_cInteger) {
526
+ #else
504
527
  if (klass == rb_cFixnum) {
528
+ #endif
505
529
  int n = NUM2INT(object);
506
530
  cvSeqInsert(seq, NUM2INT(index), &n);
507
531
  }
@@ -75,7 +75,7 @@ rb_initialize(int argc, VALUE *argv, VALUE self)
75
75
  if (NIL_P(values))
76
76
  rb_raise(rb_eArgError, "argument 6 (values) should not be nil when the shape is :custom.");
77
77
  num_values = RARRAY_LEN(values);
78
- _values = ALLOCA_N(int, num_values);
78
+ _values = RB_ALLOC_N(int, num_values);
79
79
  VALUE *values_ptr = RARRAY_PTR(values);
80
80
  for (int i = 0; i < num_values; ++i)
81
81
  _values[i] = NUM2INT(values_ptr[i]);
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bonanza-ruby-opencv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13.20160621111908
4
+ version: 0.0.13.20200923185241
5
5
  platform: ruby
6
6
  authors:
7
7
  - lsxi
8
8
  - ser1zw
9
9
  - pcting
10
- autorequire:
10
+ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-06-21 00:00:00.000000000 Z
13
+ date: 2020-09-23 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rdoc
@@ -328,7 +328,7 @@ homepage: https://github.com/ruby-opencv/ruby-opencv/
328
328
  licenses:
329
329
  - The BSD License
330
330
  metadata: {}
331
- post_install_message:
331
+ post_install_message:
332
332
  rdoc_options:
333
333
  - "--main"
334
334
  - README.md
@@ -345,9 +345,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
345
345
  - !ruby/object:Gem::Version
346
346
  version: '0'
347
347
  requirements: []
348
- rubyforge_project:
349
- rubygems_version: 2.4.5.1
350
- signing_key:
348
+ rubygems_version: 3.0.8
349
+ signing_key:
351
350
  specification_version: 4
352
351
  summary: OpenCV wrapper for Ruby
353
352
  test_files: