Cra sh происходит, когда я запускаю cv::trackerKCF::init()
, включая "torch / torch.h" . Если я запускаю cv :: trackerTLD :: init () или cv :: trackerMIL :: init () или cv :: trackerBoosting :: init () этот кра sh не встречается. Кроме того, этот cra sh происходит даже при использовании opencv3.4.2 или opencv3.4.8 .
cuda=10.1
libtorch=1.3.1
opencv=3.4.6 (even 3.4.2 or 3.4.8, similar problem occurs here)
Исходный код, который работает правильно
#include <opencv2/opencv.hpp>
#include <opencv2/tracking.hpp>
#include <opencv2/core/utility.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/highgui.hpp>
int main()
{
cv::Rect2d roi;
cv::Mat frame;
cv::TrackerKCF::Params param;
// create a tracker object
cv::Ptr<cv::TrackerKCF> tracker = cv::TrackerKCF::create(param);
// set input video
std::string video = "/path/to/video.mp4";
cv::VideoCapture cap(video);
// get bounding box
cap >> frame;
roi = cv::selectROI("tracker", frame);
// quit if ROI was not selected
if (roi.width == 0 || roi.height == 0) return 0;
// initialize the tracker
tracker->init(frame, roi);
...
return 0;
}
Исходный код, вызывающий проблему
#include <opencv2/opencv.hpp>
#include <opencv2/tracking.hpp>
#include <opencv2/core/utility.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/highgui.hpp>
#include <torch/torch.h> // <--- added this!
int main()
{
cv::Rect2d roi;
cv::Mat frame;
cv::TrackerKCF::Params param;
// create a tracker object
cv::Ptr<cv::TrackerKCF> tracker = cv::TrackerKCF::create(param);
// set input video
std::string video = "/path/to/video.mp4";
cv::VideoCapture cap(video);
// get bounding box
cap >> frame;
roi = cv::selectROI("tracker", frame);
// quit if ROI was not selected
if (roi.width == 0 || roi.height == 0) return 0;
// initialize the tracker
tracker->init(frame, roi); // <--- crash here!
...
return 0;
}
CMakeLists.txt is
cmake_minimum_required(VERSION 2.8)
project(MyOpenCVProject)
# Copy resouce
file(COPY ${CMAKE_SOURCE_DIR}/resource/ DESTINATION ${PROJECT_BINARY_DIR}/resource/)
add_definitions(-DRESOURCE_DIR="${PROJECT_BINARY_DIR}/resource/")
# Create Main project
set(SOURCES
main.cpp
)
add_executable(Main
${SOURCES}
${HEADERS}
)
set (OpenCV_DIR /path/to/opencv/dir/)
# For OpenCV
find_package(OpenCV REQUIRED)
if(OpenCV_FOUND)
target_include_directories(Main PUBLIC ${OpenCV_INCLUDE_DIRS})
target_link_libraries(Main ${OpenCV_LIBS})
endif()
message(STATUS "*** dump start cmake variables ***")
get_cmake_property(_variableNames VARIABLES)
foreach(_variableName ${_variableNames})
message(STATUS "${_variableName}=${${_variableName}}")
endforeach()
message(STATUS "*** dump end ***")