Ouvrez-CV - qui ne se chargent Pas correctement

Je suis sous Ubuntu 14.04 et je suis en train de compiler ce code, mais j'obtiens ces erreurs n'importe quoi, je crois qu'il a quelque chose à faire avec, y compris la bibliothèque OpenCV, mais je ne suis pas sûr. Quelqu'un pourrait-il m'aider?
Erreurs:

principal.cc:66:37: erreur: ‘CV_RETR_EXTERNAL " n'a pas été déclarée dans le champ d'application

principal.cc:66:55: erreur: ‘CV_CHAIN_APPROX_NONE " n'a pas été déclarée dans le champ d'application

principal.cc:81:28: erreur: ‘CV_BGR2GRAY " n'a pas été déclarée dans le champ d'application

Le Code(désolé pour la mise en forme, j'ai juste ne peut pas obtenir ce droit):

#include <opencv2/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <tesseract/baseapi.h>
#include <iostream>
void rgb2cmyk(cv::Mat& src, std::vector<cv::Mat>& cmyk)
{
CV_Assert(src.type() == CV_8UC3);
cmyk.clear();
for (int i = 0; i < 4; ++i)
cmyk.push_back(cv::Mat(src.size(), CV_32F));
for (int i = 0; i < src.rows; ++i)
{
for (int j = 0; j < src.cols; ++j)
{
cv::Vec3b p = src.at<cv::Vec3b>(i,j);
float r = p[2] / 255.;
float g = p[1] / 255.;
float b = p[0] / 255.;
float k = (1 - std::max(std::max(r,g),b));
cmyk[0].at<float>(i,j) = (1 - r - k) / (1 - k); 
cmyk[1].at<float>(i,j) = (1 - g - k) / (1 - k);
cmyk[2].at<float>(i,j) = (1 - b - k) / (1 - k);
cmyk[3].at<float>(i,j) = k;
}
}
}
int main()
{
cv::Mat im0 = cv::imread("scratchcard.png");
if (!im0.data)
return -1;
std::vector<cv::Mat> cmyk;
rgb2cmyk(im0, cmyk);
cv::Mat im1;
im1 = cmyk[3].mul(1 - cmyk[1]) > 0.25;
cv::Mat im2;
im1.convertTo(im2, CV_8U);
std::vector<std::vector<cv::Point> > contours;
cv::findContours(im2, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);
double max_area = 0;
int max_idx = 0;
for (int i = 0; i < contours.size(); i++)
{
double area = cv::contourArea(contours[i]);
max_idx  = area > max_area ? i : max_idx;
max_area = area > max_area ? area : max_area;
}
im2.setTo(cv::Scalar(0));
cv::drawContours(im2, contours, max_idx, cv::Scalar(255), -1);
cv::Mat im3;
cv::cvtColor(im0, im3, CV_BGR2GRAY);
im3 = ((255 - im3) & im2) > 200;
cv::Mat dst = im3.clone();
cv::findContours(dst.clone(), contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);
for (int i = 0; i < contours.size(); i++)
{
if (cv::contourArea(contours[i]) < 100)
cv::drawContours(dst, contours, i, cv::Scalar(0), -1);
}
tesseract::TessBaseAPI tess;
tess.Init(NULL, "eng", tesseract::OEM_DEFAULT);
tess.SetVariable("tessedit_char_whitelist", "0123456789");
tess.SetPageSegMode(tesseract::PSM_SINGLE_BLOCK);
tess.SetImage((uchar*)dst.data, dst.cols, dst.rows, 1, dst.cols);
char* out = tess.GetUTF8Text();
std::cout << out << std::endl;
cv::imshow("src", im0);
cv::imshow("dst", dst);
cv::waitKey();
return 0;
}

Mise à JOUR: CV_RETR_EXTERNAL et CV_CHAIN_APPROX_NONE erreurs ont été corrigées à l'aide des cv::"quel que soit".
Cependant, CV_BGR2GRAY erreur persiste, en cas de changement de cv::COLOR_BGR2GRAY l'ensemble du code est mis en évidence comme buggy. Quelqu'un a une idée?

  • Avez-vous essayé ::CV_RETR_EXTERNAL au lieu de CV_RETR_EXTERNAL?
  • Quelle est la version d'OpenCV utilisez-vous? CV_RETR_EXTERNAL est à partir de l'API C, il pourrait ne pas exister. Essayez de cv::RETR_EXTERNAL à la place -- il devrait exister si votre installation est correcte.
  • Arelius et ypnos, je' l'aide de la dernière version d'OpenCV (2.4.9 si je ne me trompe pas). Je vais tester vos solutions comme c'est bientôt je reçois à mon pc sous Ubuntu.
  • À l'aide de cv::RETR_EXTERNAL partie fixe de cela, je reçois toujours main.cc:82:27: error: ‘BGR2GRAY’ is not a member of ‘cv’