@@ -894,7 +894,6 @@ cvHoughLines2( CvArr* src_image, void* lineStorage, int method,
894
894
cv::Mat image = cv::cvarrToMat (src_image);
895
895
std::vector<cv::Vec2f> l2;
896
896
std::vector<cv::Vec4i> l4;
897
- CvSeq* result = 0 ;
898
897
899
898
CvMat* mat = 0 ;
900
899
CvSeq* lines = 0 ;
@@ -921,11 +920,13 @@ cvHoughLines2( CvArr* src_image, void* lineStorage, int method,
921
920
elemSize = sizeof (int )*4 ;
922
921
}
923
922
924
- if ( CV_IS_STORAGE ( lineStorage ))
923
+ bool isStorage = isStorageOrMat (lineStorage);
924
+
925
+ if ( isStorage )
925
926
{
926
927
lines = cvCreateSeq ( lineType, sizeof (CvSeq), elemSize, (CvMemStorage*)lineStorage );
927
928
}
928
- else if ( CV_IS_MAT ( lineStorage ))
929
+ else
929
930
{
930
931
mat = (CvMat*)lineStorage;
931
932
@@ -942,8 +943,6 @@ cvHoughLines2( CvArr* src_image, void* lineStorage, int method,
942
943
linesMax = lines->total ;
943
944
cvClearSeq ( lines );
944
945
}
945
- else
946
- CV_Error ( CV_StsBadArg, " Destination is not CvMemStorage* nor CvMat*" );
947
946
948
947
iparam1 = cvRound (param1);
949
948
iparam2 = cvRound (param2);
@@ -968,7 +967,7 @@ cvHoughLines2( CvArr* src_image, void* lineStorage, int method,
968
967
969
968
int nlines = (int )(l2.size () + l4.size ());
970
969
971
- if ( mat )
970
+ if ( !isStorage )
972
971
{
973
972
if ( mat->cols > mat->rows )
974
973
mat->cols = nlines;
@@ -981,20 +980,20 @@ cvHoughLines2( CvArr* src_image, void* lineStorage, int method,
981
980
cv::Mat lx = method == CV_HOUGH_STANDARD || method == CV_HOUGH_MULTI_SCALE ?
982
981
cv::Mat (nlines, 1 , CV_32FC2, &l2[0 ]) : cv::Mat (nlines, 1 , CV_32SC4, &l4[0 ]);
983
982
984
- if ( mat )
983
+ if (isStorage )
985
984
{
986
- cv::Mat dst (nlines, 1 , lx.type (), mat->data .ptr );
987
- lx.copyTo (dst);
985
+ cvSeqPushMulti (lines, lx.ptr (), nlines);
988
986
}
989
987
else
990
988
{
991
- cvSeqPushMulti (lines, lx.ptr (), nlines);
989
+ cv::Mat dst (nlines, 1 , lx.type (), mat->data .ptr );
990
+ lx.copyTo (dst);
992
991
}
993
992
}
994
993
995
- if ( !mat )
996
- result = lines;
997
- return result ;
994
+ if ( isStorage )
995
+ return lines;
996
+ return 0 ;
998
997
}
999
998
1000
999
@@ -1227,8 +1226,6 @@ cvHoughCircles( CvArr* src_image, void* circle_storage,
1227
1226
double param1, double param2,
1228
1227
int min_radius, int max_radius )
1229
1228
{
1230
- CvSeq* result = 0 ;
1231
-
1232
1229
CvMat stub, *img = (CvMat*)src_image;
1233
1230
CvMat* mat = 0 ;
1234
1231
CvSeq* circles = 0 ;
@@ -1255,12 +1252,14 @@ cvHoughCircles( CvArr* src_image, void* circle_storage,
1255
1252
else if ( max_radius <= min_radius )
1256
1253
max_radius = min_radius + 2 ;
1257
1254
1258
- if ( CV_IS_STORAGE ( circle_storage ))
1255
+ bool isStorage = isStorageOrMat (circle_storage);
1256
+
1257
+ if (isStorage)
1259
1258
{
1260
1259
circles = cvCreateSeq ( CV_32FC3, sizeof (CvSeq),
1261
1260
sizeof (float )*3 , (CvMemStorage*)circle_storage );
1262
1261
}
1263
- else if ( CV_IS_MAT ( circle_storage ))
1262
+ else
1264
1263
{
1265
1264
mat = (CvMat*)circle_storage;
1266
1265
@@ -1274,8 +1273,6 @@ cvHoughCircles( CvArr* src_image, void* circle_storage,
1274
1273
circles_max = circles->total ;
1275
1274
cvClearSeq ( circles );
1276
1275
}
1277
- else
1278
- CV_Error ( CV_StsBadArg, " Destination is not CvMemStorage* nor CvMat*" );
1279
1276
1280
1277
switch ( method )
1281
1278
{
@@ -1288,17 +1285,17 @@ cvHoughCircles( CvArr* src_image, void* circle_storage,
1288
1285
CV_Error ( CV_StsBadArg, " Unrecognized method id" );
1289
1286
}
1290
1287
1291
- if ( mat )
1288
+ if (isStorage)
1289
+ return circles;
1290
+ else
1292
1291
{
1293
1292
if ( mat->cols > mat->rows )
1294
1293
mat->cols = circles->total ;
1295
1294
else
1296
1295
mat->rows = circles->total ;
1297
1296
}
1298
- else
1299
- result = circles;
1300
1297
1301
- return result ;
1298
+ return 0 ;
1302
1299
}
1303
1300
1304
1301
0 commit comments