我是C++的新手,嘗試在閾值上實現下面的OpenCV教程。 教程:http://docs.opencv.org/2.4/doc/tutorials/imgproc/threshold/threshold.html#basic-threshold什麼C++ OpenCV庫支持`threshold`函數?
代碼幾乎編譯除2個功能:
threshold()
cvtColor()
如果這些功能被移除然後我可以編譯和運行,但是kindof擊敗本教程的目的。
錯誤:
Undefined symbols for architecture x86_64:
"cv::cvtColor(cv::_InputArray const&, cv::_OutputArray const&, int, int)", referenced from:
_main in HelloWorld.o
"cv::threshold(cv::_InputArray const&, cv::_OutputArray const&, double, double, int)", referenced from:
Threshold_Demo(int, void*) in HelloWorld.o
我的圖書館通過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_nonfree -lopencv_objdetect -lopencv_ocl -lopencv_photo -lopencv_stitching -lopencv_superres -lopencv_ts -lopencv_video -lopencv_videostab
教程代碼:
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <stdlib.h>
#include <stdio.h>
using namespace cv;
/// Global variables
int threshold_value = 0;
int threshold_type = 3;;
int const max_value = 255;
int const max_type = 4;
int const max_BINARY_value = 255;
Mat src, src_gray, dst;
char* window_name = "Threshold Demo";
char* trackbar_type = "Type: \n 0: Binary \n 1: Binary Inverted \n 2: Truncate \n 3: To Zero \n 4: To Zero Inverted";
char* trackbar_value = "Value";
/// Function headers
void Threshold_Demo(int, void*);
/**
* @function main
*/
int main(int argc, char** argv)
{
/// Load an image
src = imread(argv[1], 1);
/// Convert the image to Gray
cvtColor(src, src_gray, CV_BGR2GRAY);
/// Create a window to display results
namedWindow(window_name, CV_WINDOW_AUTOSIZE);
/// Create Trackbar to choose type of Threshold
createTrackbar(trackbar_type,
window_name, &threshold_type,
max_type, Threshold_Demo);
createTrackbar(trackbar_value,
window_name, &threshold_value,
max_value, Threshold_Demo);
/// Call the function to initialize
Threshold_Demo(0, 0);
/// Wait until user finishes program
while(true)
{
int c;
c = waitKey(20);
if((char)c == 27)
{ break; }
}
}
/**
* @function Threshold_Demo
*/
void Threshold_Demo(int, void*)
{
/* 0: Binary
1: Binary Inverted
2: Threshold Truncated
3: Threshold to Zero
4: Threshold to Zero Inverted
*/
threshold(src_gray, dst, threshold_value, max_BINARY_value,threshold_type);
imshow(window_name, dst);
}
我從一個Ruby的背景哪裏來圖書館管理要簡單得多。任何幫助調試這一點都將非常感激。
編輯:我在Mac上使用Eclipse編輯器。