0
votes

I was trying to install the package videoplayR from github but failed to do the same. I tried two ways:

1. Using the installation guidance mentioned in README file.It gave the following error:

> install_github("sjmgarnier/videoplayR")

Downloading github repo sjmgarnier/videoplayR@master Error in function (type, msg, asError = TRUE) :

2. Using R CMD SHLIB etc gives the following error while running R CMD check. It is a part of the install.out file:

* installing source package ‘videoplayR’ ...

** libs

g++ -I/usr/share/R/include -DNDEBUG -I"/home/nandy/R/x86_64-pc-linux-gnu-

library/3.1/Rcpp/include" -I"/home/nandy/R/x86_64-pc-linux-gnu-

library/3.1/RcppArmadillo/include" pkg-config --cflags opencv Rscript -e <p>'Rcpp:::CxxFlags()' -fpic -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -

Werror=format-security -D_FORTIFY_SOURCE=2 -g -c RcppExports.cpp -o RcppExports.o

g++ -I/usr/share/R/include -DNDEBUG -I"/home/nandy/R/x86_64-pc-linux-gnu-

library/3.1/Rcpp/include" -I"/home/nandy/R/x86_64-pc-linux-gnu-

library/3.1/RcppArmadillo/include" pkg-config --cflags opencv Rscript -e <p>'Rcpp:::CxxFlags()' -fpic -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -

Werror=format-security -D_FORTIFY_SOURCE=2 -g -c Video.cpp -o Video.o

Video.cpp: In member function ‘double Video::current_frame()’:

Video.cpp:42:25: error: ‘CV_CAP_PROP_POS_FRAMES’ was not declared in this scope

return(inputVideo.get(CV_CAP_PROP_POS_FRAMES)); ^

Video.cpp: In member function ‘void Video::set_current_frame(int)’:

Video.cpp:46:18: error: ‘CV_CAP_PROP_POS_FRAMES’ was not declared in this scope

inputVideo.set(CV_CAP_PROP_POS_FRAMES, n); ^

Video.cpp: In member function ‘void Video::next_frame_cv()’:

Video.cpp:63:22: error: ‘CV_CAP_PROP_POS_FRAMES’ was not declared in this scope

if (inputVideo.get(CV_CAP_PROP_POS_FRAMES) == inputVideo.get(CV_CAP_PROP_FRAME_COUNT)) { ^

Video.cpp:63:64: error: ‘CV_CAP_PROP_FRAME_COUNT’ was not declared in this scope

if (inputVideo.get(CV_CAP_PROP_POS_FRAMES) == inputVideo.get(CV_CAP_PROP_FRAME_COUNT)) { ^

Video.cpp: In member function ‘void Video::get_frame_cv(int)’:

Video.cpp:76:27: error: ‘CV_CAP_PROP_FRAME_COUNT’ was not declared in this scope

if (n > inputVideo.get(CV_CAP_PROP_FRAME_COUNT)) { ^

Video.cpp:80:18: error: ‘CV_CAP_PROP_POS_FRAMES’ was not declared in this scope

inputVideo.set(CV_CAP_PROP_POS_FRAMES, n); ^

Video.cpp: In member function ‘int Video::length()’:

Video.cpp:91:25: error: ‘CV_CAP_PROP_FRAME_COUNT’ was not declared in this scope return(inputVideo.get(CV_CAP_PROP_FRAME_COUNT)); ^

I am guessing problem 2 is occurring due to version problem of OpenCV. Am I right? Is there any way out of this?

1
try a git checkout 2.4 in the opencv dir. you probably compiled the master(3.0) branch, which has different constants there (cv::CAP_PROP_FRAME_COUNT, etc.)berak

1 Answers

1
votes
  1. Looks similar to these 2 reported problems: https://github.com/hadley/devtools/issues/650 and https://github.com/hadley/devtools/issues/467. It seems that you need to update your system (Linux I presume) to the latest version of Curl.

  2. I believe this is my fault. I forgot to exclude the compiled shared object videoplayR.so last time I committed changes to the GitHub repo. If you're using a different OS than mine (OSX Yosemite), it is most certainly the cause of the problem that you encountered. I fixed it and now it should compile nicely on your computer as well.

FYI I compiled and ran the package with both OpenCV 2.4.9 and 2.4.10, but it should work with any 2.4.X version of OpenCV (never tried the latest OpenCV 3.0 beta).