您的位置:首页 > 运维架构

OpenCV--绘图操作

2013-04-09 15:02 197 查看
一、绘图操作---画抛物线

void parabola(IplImage *image, CvPoint pL, CvPoint pM, CvPoint pR, const CvScalar &color, int thickness)
{
double x1, y1, x2, y2, x3, y3, a, b, c;
x1 = (double)pL.x;
y1 = (double)pL.y;
x2 = (double)pM.x;
y2 = (double)pM.y;
x3 = (double)pR.x;
y3 = (double)pR.y;
a = ((y1-y2)/(x1-x2)-(y1-y3)/(x1-x3)) / (x2-x3);
b = (y1-y2)/(x1-x2)-a*(x1+x2);
c = y1-a*x1*x1-b*x1;
//x的变化范围是[x1, x3],三像素画一个点
int x = 0;
double y = 0;
vector<CvPoint> pt;
for (x = int(x1); x <= int(x3); x = x+3)
{
y = a * double(x) * double(x) + b * double(x) + c;
pt.push_back(cvPoint(x, int(y)));
}
pt.push_back(cvPoint(int(x3), int(y3)));
for (size_t i = 0; i < pt.size()-1; ++ i)
{
cvLine(image, pt[i], pt[i+1], color);
}
}



二.绘图操作-画圆

#include "cv.h"
#include "highgui.h"
#include <stdio.h>
#include <../opencv2/core/core.hpp>

using namespace std;
using namespace cv;

int main(int argc,char **argv)
{
//圆心
Point center = Point(255,255);
//半径
int r = 100;
//承载图像
Mat picture(500,500,CV_8UC3,Scalar(255,255,255));
//参数为:承载的图像、圆心、半径、颜色、粗细、线型
circle(picture,center,r,Scalar(0,0,0),-1);
imshow("底板",picture);
waitKey(0);

}


效果如图所示:



其中可以通过把线的粗细设置为-1来画实心的图形

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  opencv 绘图 抛物线