void operator()(const GpuMat& image, const GpuMat& mask, GpuMat& keypoints, GpuMat& descriptors);\r
\r
//! download keypoints from device to host memory\r
- static void downloadKeyPoints(GpuMat& d_keypoints, std::vector<KeyPoint>& keypoints);\r
+ static void downloadKeyPoints(const GpuMat& d_keypoints, std::vector<KeyPoint>& keypoints);\r
//! convert keypoints to KeyPoint vector\r
- static void convertKeyPoints(Mat& d_keypoints, std::vector<KeyPoint>& keypoints);\r
+ static void convertKeyPoints(const Mat& d_keypoints, std::vector<KeyPoint>& keypoints);\r
\r
//! returns the descriptor size in bytes\r
inline int descriptorSize() const { return kBytes; }\r
void cv::gpu::ORB_GPU::operator()(const GpuMat&, const GpuMat&, GpuMat&) { throw_nogpu(); }\r
void cv::gpu::ORB_GPU::operator()(const GpuMat&, const GpuMat&, std::vector<KeyPoint>&, GpuMat&) { throw_nogpu(); }\r
void cv::gpu::ORB_GPU::operator()(const GpuMat&, const GpuMat&, GpuMat&, GpuMat&) { throw_nogpu(); }\r
-void cv::gpu::ORB_GPU::downloadKeyPoints(GpuMat&, std::vector<KeyPoint>&) { throw_nogpu(); }\r
-void cv::gpu::ORB_GPU::convertKeyPoints(Mat&, std::vector<KeyPoint>&) { throw_nogpu(); }\r
+void cv::gpu::ORB_GPU::downloadKeyPoints(const GpuMat&, std::vector<KeyPoint>&) { throw_nogpu(); }\r
+void cv::gpu::ORB_GPU::convertKeyPoints(const Mat&, std::vector<KeyPoint>&) { throw_nogpu(); }\r
void cv::gpu::ORB_GPU::release() { throw_nogpu(); }\r
void cv::gpu::ORB_GPU::buildScalePyramids(const GpuMat&, const GpuMat&) { throw_nogpu(); }\r
void cv::gpu::ORB_GPU::computeKeyPointsPyramid() { throw_nogpu(); }\r
}\r
}\r
\r
-void cv::gpu::ORB_GPU::downloadKeyPoints(GpuMat& d_keypoints, std::vector<KeyPoint>& keypoints)\r
+void cv::gpu::ORB_GPU::downloadKeyPoints(const GpuMat &d_keypoints, std::vector<KeyPoint>& keypoints)\r
{\r
if (d_keypoints.empty())\r
{\r
convertKeyPoints(h_keypoints, keypoints);\r
}\r
\r
-void cv::gpu::ORB_GPU::convertKeyPoints(Mat& d_keypoints, std::vector<KeyPoint>& keypoints)\r
+void cv::gpu::ORB_GPU::convertKeyPoints(const Mat &d_keypoints, std::vector<KeyPoint>& keypoints)\r
{\r
if (d_keypoints.empty())\r
{\r
\r
CV_Assert(d_keypoints.type() == CV_32FC1 && d_keypoints.rows == ROWS_COUNT);\r
\r
- float* x_ptr = d_keypoints.ptr<float>(X_ROW);\r
- float* y_ptr = d_keypoints.ptr<float>(Y_ROW);\r
- float* response_ptr = d_keypoints.ptr<float>(RESPONSE_ROW);\r
- float* angle_ptr = d_keypoints.ptr<float>(ANGLE_ROW);\r
- float* octave_ptr = d_keypoints.ptr<float>(OCTAVE_ROW);\r
- float* size_ptr = d_keypoints.ptr<float>(SIZE_ROW);\r
+ const float* x_ptr = d_keypoints.ptr<float>(X_ROW);\r
+ const float* y_ptr = d_keypoints.ptr<float>(Y_ROW);\r
+ const float* response_ptr = d_keypoints.ptr<float>(RESPONSE_ROW);\r
+ const float* angle_ptr = d_keypoints.ptr<float>(ANGLE_ROW);\r
+ const float* octave_ptr = d_keypoints.ptr<float>(OCTAVE_ROW);\r
+ const float* size_ptr = d_keypoints.ptr<float>(SIZE_ROW);\r
\r
keypoints.resize(d_keypoints.cols);\r
\r