蒐集

鮮やかな憧憬

homebrew+OpenCV+mac+eclipsの環境を準備する

OpenCVを使う用事があったので適当に環境構築してみました。

まずOpenCVを入れる。homebrewが入ってるなら
$ brew tap homebrew/science
でタップした後、
$brew install opencv
これでOK。なんだかすごく呆気ない。
まあ実は、homebrewの方にちょっと問題があってエラーが出て随分ハマったんだけど、関係ないから割愛。

 

次はeclipsに環境構築するほう。
CDTは持ってるからそこは飛ばす。

あとはなんか適当にこう↓設定してやったら動いた。
この設定画面へは、プロジェクトを選択した状態でproject→propertiesから入れる。
f:id:roboneco:20130809091001p:image
f:id:roboneco:20130809091103p:image

たぶん、OpenCVの方はインクルードしなくていい。(Cだし)

以上!

 

以下にとりあえず、cookbookから持って来たハフ変換のプログラムでも載せとく。

 

#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>

int
main(int argc, char *argv[])
{
//読み込み
cv::Mat src_img = cv::imread("画像のパス", 1);
if(src_img.empty()) return -1;

//matの準備
cv::Mat dst_img, work_img,dst_img1,dst_img2;
dst_img = src_img.clone();
cv::cvtColor(src_img, work_img, CV_BGR2GRAY);

//キャニーかけてる
cv::Canny(work_img, work_img, 10, 50, 3);

// Hough変換
std::vector lines;

// 入力画像,出力,距離分解能,角度分解能,閾値,*,*
cv::HoughLines(work_img, lines, 1, CV_PI/180, 200, 0, 0);

std::vector::iterator it = lines.begin();
for(; it!=lines.end(); ++it) {
float rho = (*it)[0], theta = (*it)[1];
cv::Point pt1, pt2;
double a = cos(theta), b = sin(theta);
double x0 = a*rho, y0 = b*rho;
pt1.x = cv::saturate_cast(x0 + 10000*(-b));
pt1.y = cv::saturate_cast(y0 + 10000*(a));
pt2.x = cv::saturate_cast(x0 - 10000*(-b));
pt2.y = cv::saturate_cast(y0 - 10000*(a));
cv::line(dst_img, pt1, pt2, cv::Scalar(0,0,255), 3, CV_AA);
}

//画像縮小
cv::resize(dst_img, dst_img1, cv::Size(), 0.5, 0.5);
cv::resize(work_img, dst_img2, cv::Size(), 0.5, 0.5);

cv::imshow("cvtest", dst_img1);
cv::imshow("cannytest", dst_img2);
cv::waitKey(0);
}