《学习opencv》笔记——关于一些绘图的函数

绘图函数

(1)直线cvLine函数

其结构

void cvLine(//画直线
	CvArr* array,//画布图像
	CvPoint pt1,//起始点
	CvPoint pt2,//终点
	CvScalar color,//颜色
	int thickness = 1,//宽度
	int connectivity = 8//反走样
);

实例代码

#include <cv.h>
#include <highgui.h>
#include <stdio.h>

int main(int argc, char** argv)
{
	IplImage *src1;
	src1 = cvLoadImage("10.jpg");

	cvLine(src1,cvPoint(20,20),cvPoint(250,250),CV_RGB(255,0,0),8);

	cvShowImage( "原图", src1);
	cvWaitKey();
	return 0;
}

输出结果

(2)矩形cvRectangle函数

其结构

void cvRectangle(//画矩形
	CvArr* array,//画布图形
	CvPoint pt1,//起始点
	CvPoint pt2,//终点
	CvScalar color,//颜色
	int thickness = 1,//宽度
);

实例代码

#include <cv.h>
#include <highgui.h>
#include <stdio.h>

int main(int argc, char** argv)
{
	IplImage *src1;
	src1 = cvLoadImage("10.jpg");

	cvRectangle(src1,cvPoint(20,20),cvPoint(200,200),CV_RGB(0,255,0),8);

	cvShowImage( "原图", src1);
	cvWaitKey();
	return 0;
}

输出结果

(3)圆形cvCircle函数

其结构

void cvCircle(//画圆
	CvArr* array,//画布图像
	CvPoint cevter,//圆心
	int radius,//半径
	CvScalar color,//颜色
	int thickness = 1,//宽度
	int connectivity = 8//反走样
);

实例代码

#include <cv.h>
#include <highgui.h>
#include <stdio.h>

int main(int argc, char** argv)
{
	IplImage *src1;
	src1 = cvLoadImage("10.jpg");

	cvCircle(src1,cvPoint(150,150),100,CV_RGB(0,0,255),5);

	cvShowImage( "原图", src1);
	cvWaitKey();
	return 0;
}

输出结果

(4)椭圆cvEllipse函数

其结构

void cvEllipse(//画椭圆
	CvArr* img,//画布图像
	CvPoint center,//中心点
	CvSize axes,//长短轴
	double angle,//偏离主轴角度
	double start_angle,//弧线开始位置
	double end_angle,//弧线结束位置
	CvScalar color,//颜色
	int thickness = 1,//宽度
	int line_type = 8//
);

实例代码

#include <cv.h>
#include <highgui.h>
#include <stdio.h>

int main(int argc, char** argv)
{
	IplImage *src1;
	src1 = cvLoadImage("10.jpg");

	cvEllipse(src1,cvPoint(150,150),cvSize(150,50),45,0,360,CV_RGB(255,0,0),3);

	cvShowImage( "原图", src1);
	cvWaitKey();
	return 0;
}

输出结果

(5)多边形函数

1.cvFillPoly函数

其结构

void cvFillPoly(//画多个实心多边形
	CvArr* img,//画布图像
	CvPoint** pts,//点序列
	int* npt,//计数点数组
	int contours,//显示几个多边形
	CvScalar color,//颜色
	int line_type = 8
);

2.cvFillConvexPoly函数

其结构

void cvFillConvexPoly(//画一个实心多边形
	CvArr* img,//画布图像
	CvPoint* pts,//点序列
	int npt,//计数点数组
	CvScalar color,//颜色
	int line_type = 8
);

3.cvPolyLine函数

void cvFillPoly(//画多个空心多边形
	CvArr* img,//画布图像
	CvPoint** pts,//点序列
	int* npt,//计数点数组
	int contours,//显示几个多边形
	int is_closed,//是否从上个多边形尾点开始
	CvScalar color,//颜色
	int thickness = 1,//宽度
	int line_type = 8
);

实例代码

#include <cv.h>
#include <highgui.h>
#include <stdio.h>

int main(int argc, char** argv)
{
	IplImage *src1,*src2,*src3;
	src1 = cvLoadImage("7.jpg");
	src2 = cvLoadImage("8.jpg");
	src3 = cvLoadImage("9.jpg");

	int arr[3]= {4,4,4};   

	CvPoint ** pt =new CvPoint*[3];

	pt[0] = new CvPoint[4];
	pt[0][0] = cvPoint(10,10);
	pt[0][1] = cvPoint(210,10);
	pt[0][2] = cvPoint(210,210);
	pt[0][3] = cvPoint(10,210);
	pt[1] = new CvPoint[4];
	pt[1][0] = cvPoint(10,310);
	pt[1][1] = cvPoint(210,310);
	pt[1][2] = cvPoint(210,510);
	pt[1][3] = cvPoint(10,510);
	pt[2] = new CvPoint[4];
	pt[2][0] = cvPoint(310,10);
	pt[2][1] = cvPoint(410,10);
	pt[2][2] = cvPoint(410,210);
	pt[2][3] = cvPoint(310,210);  

	cvPolyLine(src1, pt, arr, 3, 1, CV_RGB(0,255,0),5);  

	cvFillPoly(src2, pt,arr,3,CV_RGB(250,0,0));  

	cvFillConvexPoly(src3,pt[0],4,CV_RGB(0,0,255));

	cvShowImage( "原图1", src1);
	cvShowImage( "原图2", src2);
	cvShowImage( "原图3", src3);
	cvWaitKey();
	return 0;
}

输出结果

(6)绘制文字cvPutText函数

其结构

void cvPutText(//绘制文字
	CvArr* img,//绘图图像
	const char* text,//文字内容
	CvPoint origin,//文字起始位置
	const CvFont* font,//文字字体设置
	CvScalar color//颜色
);

实例代码

#include <cv.h>
#include <highgui.h>
#include <stdio.h>

int main(int argc, char** argv)
{
	IplImage *src1,*src2,*src3;
	src1 = cvLoadImage("10.jpg");

	char* str = "I am a student!";

	CvFont* cf = new CvFont();

	cvInitFont(cf,CV_FONT_HERSHEY_SIMPLEX,1.0,0.5);

	cvPutText(src1,str,cvPoint(50,100),cf,CV_RGB(255,0,0));

	cvShowImage( "原图1", src1);
	cvWaitKey();
	return 0;
}

输出结果

to be continued

《学习opencv》笔记——关于一些绘图的函数

时间: 2024-11-07 04:13:47

《学习opencv》笔记——关于一些绘图的函数的相关文章

《学习opencv》笔记——矩阵和图像操作——cvGEMM,cvGetCol,cvGetCols and cvGetDiag

矩阵和图像的操作 (1)cvGEMM函数 其结构 double cvGEMM(//矩阵的广义乘法运算 const CvArr* src1,//乘数矩阵 const CvArr* src2,//乘数矩阵 double alpha,//1号矩阵系数 const CvArr* src3,//加权矩阵 double beta,//2号矩阵系数 CvArr* dst,//结果矩阵 int tABC = 0//变换标记 ); tABC变换标记及其对应的含义 CV_GEMM_A_T 转置 src1 CV_GE

《学习opencv》笔记——矩阵和图像操作——cvDet,cvDit,cvDotProduct,cvEigenVV and cvFlip

矩阵和图像的操作 (1)cvDet函数 其结构 double cvDet(//计算矩阵的行列式 const CvArr* mat ); 实例代码 #include <cv.h> #include <highgui.h> #include <stdio.h> #include <iostream> using namespace std; int main() { double va[] = {1,0,0,0,2,0,0,0,3}; CvMat Va=cvMa

《学习opencv》笔记——矩阵和图像操作——cvAdd、cvAddS and cvAddWeighted

矩阵和图像的操作 (1)cvAdd函数 其结构 void cvAdd(//图像加和 const CvArr* src1,//第一个原矩阵 const CvArr* src2,//第二个原矩阵 CvArr* dst, //存放矩阵 const CvArr* mask = NULL: //控制点 ); 就是单纯的将两个图像加和,mask变量控制加和的元素点,相当于"开关的作用"; 程序实例 #include <cv.h> #include <highgui.h> #

《学习opencv》笔记——矩阵和图像操作——cvCrossProduct and cvCvtColor

矩阵和图像的操作 (1)cvCrossProduct函数 其结构 void cvCrossProdust(//计算两个三维向量的叉积 const CvArr* src1, const CvArr* src2, CvArr* dst ); 实例代码 #include <cv.h> #include <highgui.h> #include <stdio.h> #include <iostream> using namespace std; int main()

《学习opencv》笔记——矩阵和图像操作——cvCalcCovarMatrix,cvCmp and cvCmpS

矩阵和图像的操作 (1)cvCalcCovarMatrix函数 其结构 void cvCalcCovarMatrix(计算给定点的均值和协方差矩阵 const CvArr** vects,//给定向量 int count,//给定向量的组数 CvArr* cov_mat,//结果矩阵 CvArr* avg,//根据flag得到结果 int flags//标记位 ); 标记位参数值极其意义 标志参数的具体标志值 意义 CV_COVAR_NORMAL 计算均值和协方差 CV_COVAR__SCRAM

《学习opencv》笔记——矩阵和图像操作——cvSum,cvSVD,cvSVBkSb,cvTrace,cvTranspose,cvXor,cvXorS and cvZero

矩阵和图像的操作 (1)cvSum函数 其结构 CvScalar cvSum(//计算arr各通道所有像素总和 CvArr* arr//目标矩阵 ); 实例代码 #include <cv.h> #include <highgui.h> #include <stdio.h> #include <iostream> using namespace std; int main() { IplImage *src1,*dst1,*dst2,*dst3,*dst4;

《学习opencv》笔记——矩阵和图像操作——cvOr,cvOrS,cvrReduce,cvRepeat,cvScale,cvSet and cvSetZero

矩阵和图像的操作 (1)cvOr函数 其结构 void cvOr(//两个矩阵对应元素做或运行 const CvArr* src1,//矩阵1 const CvArr* src2,//矩阵2 CvArr* dst,//结果矩阵 const CvArr* mask = NULL//矩阵"开关" ); 实例代码 #include <cv.h> #include <highgui.h> #include <stdio.h> int main(int arg

《学习opencv》笔记——矩阵和图像操作——cvAnd、cvAndS、cvAvg and cvAvgSdv

矩阵和图像的操作 (1)cvAnd函数 其结构 void cvAnd( //将src1和src2按像素点取"位与运算" const CvArr* src1,//第一个矩阵 const CvArr* src2,//第二个矩阵 CvArr* dst,//结果矩阵 const CvArr* mask = NULL;//矩阵经行像素点与的"开关" ); 程序实例 #include <cv.h> #include <highgui.h> #includ

《学习opencv》笔记——矩阵和图像操作——cvMinManLoc,cvMul,cvNot,cvNorm and cvNormalize

矩阵和图像的操作 (1)cvMinManLoc函数 其结构 void cvMinMaxLoc(//取出矩阵中最大最小值 const CvArr* arr,//目标矩阵 double* min_val,//最小值 double* max_val,//最大值 CvPoint* min_loc = NULL,//最小值位置 CvPoint* max_loc = NULL,//最大值位置 const CvArr* mask = NULL//矩阵"开关" ); 实例代码 #include <