Mọi người cho em hỏi em đang muốn chạy đoạn code này có vẻ viết bằng OpenCv 3.4 nhưng em đang cài OpenCv 4.5.Có vẻ nó báo lỗi trong file opencv2\imgproc.hpp.Mọi người cho em hỏi là có đúng là nó lỗi vậy là do khác phiên bản không ạ và mình sửa sao ạ.
Code
#include <opencv2/opencv.hpp>
#include <opencv2/tracking.hpp>
#include <opencv2/core/ocl.hpp>
using namespace cv;
using namespace std;
// Convert to string
#define SSTR( x ) static_cast< std::ostringstream & >( \
( std::ostringstream() << std::dec << x ) ).str()
int main(int argc, char **argv)
{
// List of tracker types in OpenCV 3.4.1
string trackerTypes[7] = {"BOOSTING", "MIL", "KCF", "TLD","MEDIANFLOW", "GOTURN", "MOSSE"};
// vector <string> trackerTypes(types, std::end(types));
// Create a tracker
string trackerType = trackerTypes[2];
Ptr<Tracker> tracker;
#if (CV_MINOR_VERSION < 3)
{
tracker = Tracker::create(trackerType);
}
#else
{
if (trackerType == "BOOSTING")
tracker = TrackerBoosting::create();
if (trackerType == "MIL")
tracker = TrackerMIL::create();
if (trackerType == "KCF")
tracker = TrackerKCF::create();
if (trackerType == "TLD")
tracker = TrackerTLD::create();
if (trackerType == "MEDIANFLOW")
tracker = TrackerMedianFlow::create();
if (trackerType == "GOTURN")
tracker = TrackerGOTURN::create();
if (trackerType == "MOSSE")
tracker = TrackerMOSSE::create();
}
#endif
// Read video
VideoCapture video("videos/chaplin.mp4");
// Exit if video is not opened
if(!video.isOpened())
{
cout << "Could not read video file" << endl;
return 1;
}
// Read first frame
Mat frame;
bool ok = video.read(frame);
// Define initial bounding box
Rect2d bbox(287, 23, 86, 320);
// Uncomment the line below to select a different bounding box
// bbox = selectROI(frame, false);
// Display bounding box.
rectangle(frame, bbox, Scalar( 255, 0, 0 ), 2, 1 );
imshow("Tracking", frame);
tracker->init(frame, bbox);
while(video.read(frame))
{
// Start timer
double timer = (double)getTickCount();
// Update the tracking result
bool ok = tracker->update(frame, bbox);
// Calculate Frames per second (FPS)
float fps = getTickFrequency() / ((double)getTickCount() - timer);
if (ok)
{
// Tracking success : Draw the tracked object
rectangle(frame, bbox, Scalar( 255, 0, 0 ), 2, 1 );
}
else
{
// Tracking failure detected.
putText(frame, "Tracking failure detected", Point(100,80), FONT_HERSHEY_SIMPLEX, 0.75, Scalar(0,0,255),2);
}
// Display tracker type on frame
putText(frame, trackerType + " Tracker", Point(100,20), FONT_HERSHEY_SIMPLEX, 0.75, Scalar(50,170,50),2);
// Display FPS on frame
putText(frame, "FPS : " + SSTR(int(fps)), Point(100,50), FONT_HERSHEY_SIMPLEX, 0.75, Scalar(50,170,50), 2);
// Display frame.
imshow("Tracking", frame);
// Exit if ESC pressed.
int k = waitKey(1);
if(k == 27)
{
break;
}
}
}
Debug
Build started...
1>------ Build started: Project: Project Germany, Configuration: Debug x64 ------
1>Header1.h
1>D:\opencv\build\include\opencv2\flann\miniflann.hpp(76,12): error C3646: 'getString': unknown override specifier
1>D:\opencv\build\include\opencv2\flann\miniflann.hpp(76,21): error C2059: syntax error: '('
1>D:\opencv\build\include\opencv2\flann\miniflann.hpp(76,81): error C2238: unexpected token(s) preceding ';'
1>D:\opencv\build\include\opencv2\flann\miniflann.hpp(77,28): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>D:\opencv\build\include\opencv2\flann\miniflann.hpp(77,28): error C2143: syntax error: missing ',' before '&'
1>D:\opencv\build\include\opencv2\flann\miniflann.hpp(78,34): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>D:\opencv\build\include\opencv2\flann\miniflann.hpp(78,34): error C2143: syntax error: missing ',' before '&'
1>D:\opencv\build\include\opencv2\flann\miniflann.hpp(80,32): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>D:\opencv\build\include\opencv2\flann\miniflann.hpp(80,32): error C2143: syntax error: missing ',' before '&'
1>D:\opencv\build\include\opencv2\flann\miniflann.hpp(81,29): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>D:\opencv\build\include\opencv2\flann\miniflann.hpp(81,29): error C2143: syntax error: missing ',' before '&'
1>D:\opencv\build\include\opencv2\flann\miniflann.hpp(82,32): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>D:\opencv\build\include\opencv2\flann\miniflann.hpp(82,32): error C2143: syntax error: missing ',' before '&'
1>D:\opencv\build\include\opencv2\flann\miniflann.hpp(83,31): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>D:\opencv\build\include\opencv2\flann\miniflann.hpp(83,31): error C2143: syntax error: missing ',' before '&'
1>D:\opencv\build\include\opencv2\flann\miniflann.hpp(84,30): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>D:\opencv\build\include\opencv2\flann\miniflann.hpp(84,30): error C2143: syntax error: missing ',' before '&'