Hi, I’m trying to run this tutorial but im getting this error:
“error: ‘OrbFeatureDetector’ is not a member of ‘cv’
cv::OrbFeatureDetector detector;”
I’m using OpenCV 3.3 and I don’t know if this library is just for Opencv4tegra, can someone confirm? or how can I use it correctly.
Greetings
This changed from opencv2 (opencv4tegra is 2.4) to opencv3.
You may change to something like:
cv::Ptr<ORB> detect = cv::ORB::create();
detect->doSomething();
I tryied didnt work,can you provide an example on this code?
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/features2d/features2d.hpp>
#include <opencv2/video/video.hpp>
int main()
{
cv::VideoCapture input(1);
cv::Mat img;
cv::orbFeatureDetector detector;
std::vector<cv::KeyPoint> keypoints;
for (;;)
{
if (!input.read(img))
break;
detector(img, cv::Mat(), keypoints);
for (size_t i = 0; i < keypoints.size(); i++)
cv::circle(img, keypoints[i].pt, 2,
cv::Scalar(0, 0, 255), 1);
cv::imshow("img", img);
char c = cv::waitKey();
if (c == 27) // 27 is ESC
break;
}
}
This example successfully runs on my TX2 with L4T R28.1 and opencv-3.3.0. I have adapted for testing with onboard camera :
#include <opencv2/features2d.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/opencv.hpp>
#include <vector>
#include <iostream>
int main()
{
const char* gst = "nvcamerasrc ! video/x-raw(memory:NVMM), format=(string)I420, width=(int)640, height=(int)480, framerate=(fraction)30/1 ! \
nvvidconv ! video/x-raw, format=(string)BGRx, width=(int)640, height=(int)480 ! \
videoconvert ! video/x-raw, format=(string)BGR ! \
appsink";
cv::VideoCapture input(gst);
if(!input.isOpened()) {
std::cout<<"Failed to open camera."<<std::endl;
return -1;
}
cv::Mat img;
cv::Mat desc;
std::vector<cv::KeyPoint> keypoints;
cv::Ptr<cv::ORB> detector = cv::ORB::create();
for (;;)
{
if (!input.read(img))
break;
detector->detect(img, keypoints, desc);
for (size_t i = 0; i < keypoints.size(); i++)
cv::circle(img, keypoints[i].pt, 2, cv::Scalar(0, 0, 255), 1);
cv::imshow("img", img);
char c = cv::waitKey(1);
if (c == 27) // 27 is ESC
break;
}
}
I see!, Thank you very much for your time!