diff --git a/modules/core/include/opencv2/core.hpp b/modules/core/include/opencv2/core.hpp index 71beb2a1cc..12d11b006d 100644 --- a/modules/core/include/opencv2/core.hpp +++ b/modules/core/include/opencv2/core.hpp @@ -507,11 +507,11 @@ CV_EXPORTS_W void randn(InputOutputArray dst, InputArray mean, InputArray stddev CV_EXPORTS_W void randShuffle(InputOutputArray dst, double iterFactor = 1., RNG* rng = 0); //! draws the line segment (pt1, pt2) in the image -CV_EXPORTS_W void line(CV_IN_OUT InputOutputArray img, Point pt1, Point pt2, const Scalar& color, +CV_EXPORTS_W void line(InputOutputArray img, Point pt1, Point pt2, const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0); //! draws the rectangle outline or a solid rectangle with the opposite corners pt1 and pt2 in the image -CV_EXPORTS_W void rectangle(CV_IN_OUT InputOutputArray img, Point pt1, Point pt2, +CV_EXPORTS_W void rectangle(InputOutputArray img, Point pt1, Point pt2, const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0); @@ -521,18 +521,18 @@ CV_EXPORTS void rectangle(CV_IN_OUT Mat& img, Rect rec, int lineType = LINE_8, int shift = 0); //! draws the circle outline or a solid circle in the image -CV_EXPORTS_W void circle(CV_IN_OUT InputOutputArray img, Point center, int radius, +CV_EXPORTS_W void circle(InputOutputArray img, Point center, int radius, const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0); //! draws an elliptic arc, ellipse sector or a rotated ellipse in the image -CV_EXPORTS_W void ellipse(CV_IN_OUT InputOutputArray img, Point center, Size axes, +CV_EXPORTS_W void ellipse(InputOutputArray img, Point center, Size axes, double angle, double startAngle, double endAngle, const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0); //! draws a rotated ellipse in the image -CV_EXPORTS_W void ellipse(CV_IN_OUT InputOutputArray img, const RotatedRect& box, const Scalar& color, +CV_EXPORTS_W void ellipse(InputOutputArray img, const RotatedRect& box, const Scalar& color, int thickness = 1, int lineType = LINE_8); //! draws a filled convex polygon in the image diff --git a/modules/features2d/src/bagofwords.cpp b/modules/features2d/src/bagofwords.cpp index c57510a111..c7cc5decf2 100644 --- a/modules/features2d/src/bagofwords.cpp +++ b/modules/features2d/src/bagofwords.cpp @@ -187,7 +187,8 @@ void BOWImgDescriptorExtractor::compute( InputArray keypointDescriptors, InputOu pointIdxsOfClusters->resize(clusterCount); } - Mat( 1, clusterCount, descriptorType(), Scalar::all(0.0) ).copyTo(_imgDescriptor); + _imgDescriptor.create(1, clusterCount, descriptorType()); + _imgDescriptor.setTo(Scalar::all(0)); Mat imgDescriptor = _imgDescriptor.getMat(); diff --git a/modules/features2d/src/brief.cpp b/modules/features2d/src/brief.cpp index ebd730b7ed..0226ffb1e5 100644 --- a/modules/features2d/src/brief.cpp +++ b/modules/features2d/src/brief.cpp @@ -176,7 +176,8 @@ void BriefDescriptorExtractor::computeImpl(InputArray image, std::vector& keypoints, InputOutputArray& outImage, +void drawKeypoints( InputArray image, const std::vector& keypoints, InputOutputArray outImage, const Scalar& _color, int flags ) { if( !(flags & DrawMatchesFlags::DRAW_OVER_OUTIMG) ) @@ -143,7 +143,7 @@ static void _prepareImgAndDrawKeypoints( InputArray img1, const std::vector& keypoints, Ou if( !extAll ) { // extract the best comparisons only - Mat(cv::Mat::zeros((int)keypoints.size(), FREAK_NB_PAIRS/8, CV_8U)).copyTo(_descriptors); + _descriptors.create((int)keypoints.size(), FREAK_NB_PAIRS/8, CV_8U); + _descriptors.setTo(Scalar::all(0)); Mat descriptors = _descriptors.getMat(); #if CV_SSE2 __m128i* ptr= (__m128i*) (descriptors.data+(keypoints.size()-1)*descriptors.step[0]); @@ -416,7 +417,8 @@ void FREAK::computeImpl( InputArray _image, std::vector& keypoints, Ou } else // extract all possible comparisons for selection { - Mat(cv::Mat::zeros((int)keypoints.size(), 128, CV_8U)).copyTo(_descriptors); + _descriptors.create((int)keypoints.size(), 128, CV_8U); + _descriptors.setTo(Scalar::all(0)); Mat descriptors = _descriptors.getMat(); std::bitset<1024>* ptr = (std::bitset<1024>*) (descriptors.data+(keypoints.size()-1)*descriptors.step[0]);