Jetson TX1 remote development openCV


I’ve followed some guides and searched the internet far and wide. Finally I’m setup with a linux Host 14.04 and compiling/profiling code via the host and running code on the Jetson TX1 via Nsight and all the CUDA functionality is fine.

I want to use Nsight to develop CUDA samples and augment them with the openCV4Tegra sdk/api, how can I do this? I tried to simply follow the Nvidia openCV tutorials.

I use the boxfilter sample and include at the top of the .cpp file:
#include <opencv2/highgui/highgui.hpp>

Then I just try to create this in main:
cv::Mat img(512, 512, CV_8UC3, cv::Scalar(0));

and Nsight picks up the paths, I can use F2 to get further information and it finds the mat.hpp code when I build. but I get some errors and I suspect I need to configure library paths or something. . .

The above test was inspired from the code found on the Youtube video:
NVIDIA Jetson OpenCV Tutorials - Episode 0

After this step I aim to also incorporate the ZED SDK, snap some pictures and perform image processing on them.

But right now I am very confused, most guides/tuts I’ve found simply develop openCV code in a text editor on the Jetson TX1 device . . .

./src/boxFilter.o: In function cv::Mat::Mat(int, int, int, cv::Scalar_<double> const&)': /usr/include/opencv2/core/mat.hpp:82: undefined reference to cv::Mat::operator=(cv::Scalar_ const&)’
./src/boxFilter.o: In function cv::Mat::~Mat()': /usr/include/opencv2/core/mat.hpp:278: undefined reference to cv::fastFree(void*)’
./src/boxFilter.o: In function cv::Mat::create(int, int, int)': /usr/include/opencv2/core/mat.hpp:353: undefined reference to cv::Mat::create(int, int const*, int)’
./src/boxFilter.o: In function cv::Mat::release()': /usr/include/opencv2/core/mat.hpp:367: undefined reference to cv::Mat::deallocate()’
collect2: error: ld returned 1 exit status
make: *** [boxfilter-arm] Error 1

This is kind of general, but if I’m doing work on two machines and it seems to work, but then the linker can’t find something, it could be that the library being linked exists on only one platform. Perhaps the opencv libraries are on one machine but not the other.

A complication is when doing remote display (I don’t know if you are doing remote display or not). Normally the machine running the program is where all libraries must be found. When running the program on a remote Jetson, but displaying on the local host (I don’t know if that is your setup for this case or not), then the libraries and support structure for display are offloaded onto the local host and do not run on the Jetson.