旅行好きなソフトエンジニアの備忘録

プログラミングや技術関連のメモを始めました

【OpenCV】 画像に傾いた四角形を書き込む

RotatedRectは直線を利用して描くしかないようです。。。

// 画像を読み込む
Mat source;
imread("lenna.jpg").copyTo(source);
if (source.empty())
{
    throw runtime_error("Failed to open image");
}

// RotatedRectを描画する
Mat destination;
source.copyTo(destination);
RotatedRect rect = RotatedRect(Point2f(40.0, 40.0), Size2f(60.0, 20.0), 20.0);
Scalar color = Scalar(0, 0, 0);
int thickness = 2;
Point2f vertices[4];
rect.points(vertices);
for (int i = 0; i < 4; ++i)
{
    line(destination, vertices[i], vertices[(i + 1)%4], color, thickness);
}

f:id:ni4muraano:20170420211718j:plain:w200 f:id:ni4muraano:20170420212828j:plain:w200