Я использую человечность 13.10, и я пытаюсь установить opencv на затмении. Я перехожу по этой учебной ССЫЛКЕ
Я не знаю, где моя библиотека. Это, что я получаю, когда я пытаюсь найти файлы.
donbeo@donbeo-HP-EliteBook-Folio-9470m:~$ pkg-config --libs opencv
-lopencv_calib3d -lopencv_contrib -lopencv_core -lopencv_features2d -lopencv_flann
-lopencv_gpu -lopencv_highgui -lopencv_imgproc -lopencv_legacy -lopencv_ml
-lopencv_objdetect -lopencv_ocl -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab
donbeo@donbeo-HP-EliteBook-Folio-9470m:~$
Это не сообщает о пути к файлу. Я попробовал различные пути, но меня получающий всегда компиляцию ошибки
22:26:06 **** Incremental Build of configuration Debug for project machine_learning ****
make all
Building target: machine_learning
Invoking: Cross G++ Linker
g++ -L/usr/local/lib -o "machine_learning" ./src/prova.o -lopencv_core -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -l\ opencv_features2d
/usr/bin/ld: cannot find -l opencv_features2d
collect2: error: ld returned 1 exit status
make: *** [machine_learning] Error 1
22:26:06 Build Finished (took 114ms)
Ошибка могла быть в пути lib. Как я могу решить это?
Править:
У меня были различные проблемы после установки. В особенности после перезагрузки и входа в систему я получил черный экран.
Как выражено по этой Ошибке сообщения Ubuntu 13.10 blackscreen
Я смог восстановить свою систему с помощью информации в этом блоге
http://www.anickle.com/2014/01/19/ubuntu-13-10-intel-graphics-killed-by-opencv/
Теперь кажется, что это частично работает.
Я могу выполнить этот пример кода:
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/ml/ml.hpp>
using namespace cv;
int main()
{
// Data for visual representation
int width = 512, height = 512;
Mat image = Mat::zeros(height, width, CV_8UC3);
// Set up training data
float labels[4] = {1.0, -1.0, -1.0, -1.0};
Mat labelsMat(4, 1, CV_32FC1, labels);
float trainingData[4][2] = { {501, 10}, {255, 10}, {501, 255}, {10, 501} };
Mat trainingDataMat(4, 2, CV_32FC1, trainingData);
// Set up SVM's parameters
CvSVMParams params;
params.svm_type = CvSVM::C_SVC;
params.kernel_type = CvSVM::LINEAR;
params.term_crit = cvTermCriteria(CV_TERMCRIT_ITER, 100, 1e-6);
// Train the SVM
CvSVM SVM;
SVM.train(trainingDataMat, labelsMat, Mat(), Mat(), params);
Vec3b green(0,255,0), blue (255,0,0);
// Show the decision regions given by the SVM
for (int i = 0; i < image.rows; ++i)
for (int j = 0; j < image.cols; ++j)
{
Mat sampleMat = (Mat_<float>(1,2) << j,i);
float response = SVM.predict(sampleMat);
if (response == 1)
image.at<Vec3b>(i,j) = green;
else if (response == -1)
image.at<Vec3b>(i,j) = blue;
}
// Show the training data
int thickness = -1;
int lineType = 8;
circle( image, Point(501, 10), 5, Scalar( 0, 0, 0), thickness, lineType);
circle( image, Point(255, 10), 5, Scalar(255, 255, 255), thickness, lineType);
circle( image, Point(501, 255), 5, Scalar(255, 255, 255), thickness, lineType);
circle( image, Point( 10, 501), 5, Scalar(255, 255, 255), thickness, lineType);
// Show support vectors
thickness = 2;
lineType = 8;
int c = SVM.get_support_vector_count();
for (int i = 0; i < c; ++i)
{
const float* v = SVM.get_support_vector(i);
circle( image, Point( (int) v[0], (int) v[1]), 6, Scalar(128, 128, 128), thickness, lineType);
}
imwrite("result.png", image); // save the image
imshow("SVM Simple Example", image); // show it to the user
waitKey(0);
}
Но я получаю и ошибка, когда я пытаюсь работать
#include <cv.h>
#include <highgui.h>
using namespace cv;
int main( int argc, char** argv )
{
Mat image;
image = imread( argv[1], 1 );
if( argc != 2 || !image.data )
{
printf( "No image data \n" );
return -1;
}
namedWindow( "Display Image", CV_WINDOW_AUTOSIZE );
imshow( "Display Image", image );
waitKey(0);
return 0;
}
Invoking: Cross G++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/prova.d" -MT"src/prova.d" -o "src/prova.o" "../src/prova.cpp"
../src/prova.cpp:1:16: fatal error: cv.h: No such file or directory
#include <cv.h>
Так как все предыдущие библиотеки в той же команде, кажется, были расположены успешно, я не думаю, что существует проблема с путем к библиотеке - более вероятно Ваша проблема - то, что Ваша командная строка имеет неуместное обратная косая черта в ней
... -lopencv_video -l\ opencv_features2d ...
Это должно работать при изменении этого на
... -lopencv_video -lopencv_features2d ...
Это должно также работать с пространством после -l
... -lopencv_video -l opencv_features2d ...
хотя страница справочника не рекомендует это:
-llibrary
-l library
Search the library named library when linking. (The second
alternative with the library as a separate argument is only for
POSIX compliance and is not recommended.)
AFAIK обратная косая черта только законен в этом контексте как символ продолжения строки т.е.
... -lopencv_video -l\
opencv_features2d ...
(с новой строкой), также работал бы, я думаю, хотя было бы более естественно повредиться перед -l
по-моему.