我正在使用Java支持编译OpenCV 3.0.0.我的剧本是:
mkdir /opt/opencv /opt/opencv/opencv-build
cd /opt/opencv
git clone https://github.com/Itseez/opencv.git
cd /opt/opencv/opencv-build
export OPENCV_INSTALL_PATH=/opt/opencv
export FFMPEG_PATH=/opt/ffmpeg/ffmpeg_build/lib
export LD_LIBRARY_PATH=$OPENCV_INSTALL_PATH/lib:$FFMPEG_PATH:/opt/opencv/opencv/3rdparty/lib:$LD_LIBRARY_PATH
export PKG_CONFIG_PATH=/opt/ffmpeg/ffmpeg_build/lib/pkgconfig
cmake28 -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX="/opt/opencv" \
-D OPENCV_EXTRA_C_FLAGS="-DHAVE_CAMV4L -DHAVE_CAMV4L2" \
-D WITH_OPENCL=OFF -D BUILD_SHARED_LIBS=OFF ../opencv
make
make install
Run Code Online (Sandbox Code Playgroud)
正如http://docs.opencv.org/doc/tutorials/introduction/desktop_java/java_dev_intro.html中所述-D BUILD_SHARED_LIBS=OFF.
当我想测试安装时,我发现没有Highgui类,也没有路径.这是我的opencv-300.jar org.opencv文件夹内容:
calib3d
core
features2d
imgcodecs
imgproc
ml
objdetect
photo
utils
video
videoio
Run Code Online (Sandbox Code Playgroud)
我在安装过程中遗漏了什么?
我正在研究增强现实游戏,它需要识别和跟踪快速移动的物体.我尝试过以下图像处理库,
1. Opencv
2. BoofCv
3. FastCv
我已经尝试过TLD算法来跟踪对象,跟踪成功但是性能确实需要提高.如果对象移动得更快,则结果需要时间,因为算法需要处理时间.我也尝试过循环,类似于boofcv的算法.
查看这些演示:
这两个演示中的对象跟踪似乎很好,但计算需要时间.
我可以使用以下方案更快地完成此操作
提取要跟踪的对象的r,g,b矩阵
拍摄相机帧并将其转换为ar,g,b矩阵,并在相机框架中搜索跟踪的对象矩阵.
有没有更好的方法来做到这一点?
android opencv image-processing object-recognition augmented-reality
我正在使用模板匹配创建一个简单的openCV应用程序,我需要比较在大图像中查找小图像并返回结果为true(如果匹配找到)或false(未找到匹配项).
Imgproc.matchTemplate(largeImage, smallImage, result, matchMethod);
Core.normalize(result, result, 0, 1, Core.NORM_MINMAX, -1, new Mat());
MinMaxLocResult mmr = Core.minMaxLoc(result);
double minMaxValue = 1;
if (matchMethod== Imgproc.TM_SQDIFF || matchMethod== Imgproc.TM_SQDIFF_NORMED)
{
minMaxValue = mmr.minVal;
useMinThreshold = true;
}
else
{
minMaxValue = mmr.maxVal;
}
Run Code Online (Sandbox Code Playgroud)
现在的问题是使用这个minMaxValue做出决定(真/假).我知道上面两种方法TM_SQDIFF和TM_SQDIFF_NORMED返回低值,而其他方法返回高值,所以我可以有2个不同的阈值并比较一个阈值(取决于模板方法类型).
因此,如果有人可以解释MinMaxLocResult返回的minVal和maxVal范围是多么好.
它是0到1范围?
如果是,对于Max类型模板方法,值1是否完美匹配?