1. 程式人生 > >opencv3.2.0之繪圖

opencv3.2.0之繪圖

文件 主函數 繪制 poi image double 編寫 cor roo

//描述:包含程序所使用的頭文件和命名空間
#include <opencv2/opencv.hpp>
#include "opencv2/core/core.hpp"
#include "highgui.h"
#include "opencv2/imgproc/imgproc.hpp"


using namespace cv;
using namespace std;
//宏定義部分
#define WINDOW_NAME1 "[繪制圖1]"
#define WINDOW_NAME2 "[繪制圖2]"
#define WINDOW_WIDTH 600

//繪制橢圓,代碼分析:把圖畫在img上,在橢圓中心為(WINDOW_WIDTH / 2, WINDOW_WIDTH / 2),並且大小位於矩形(WINDOW_WIDTH / 4, WINDOW_WIDTH / 16)內。旋轉角度為angle,擴展的弧度為0到360度。默認染色是藍色,線寬為2,線性為9
void DrawEllipse(Mat img, double angle) {
int thickness = 2;
int lineType = 8;
ellipse(img,
Point(WINDOW_WIDTH / 2, WINDOW_WIDTH / 2),
Size(WINDOW_WIDTH / 4, WINDOW_WIDTH / 16),
angle,
0,
360,
Scalar(255, 129, 0),
thickness,
lineType);
}

//繪制實心圓,把圖畫在img上,圓中心為WINDOW_WIDTH / 32,Scalar(0, 0, 255)顏色為紅色,線寬為2,線性為9
void DrawFilledCircle(Mat img, Point center) {
int thickness = -1;
int lineType = 8;
circle(img,
center,
WINDOW_WIDTH / 32,
Scalar(0, 0, 255),
thickness,
lineType);
}
//主函數
int main(void) {
//創建空白的MAT圖像
Mat atomImage = Mat::zeros(WINDOW_WIDTH,WINDOW_WIDTH,CV_8UC3);
Mat rookImage = Mat::zeros(WINDOW_WIDTH, WINDOW_WIDTH, CV_8UC3);
//先繪制出橢圓
DrawEllipse( atomImage,90);
DrawEllipse(atomImage, 0);
DrawEllipse(atomImage, 45);
DrawEllipse(atomImage, -45);
//再繪制圓心
DrawFilledCircle(atomImage,Point(WINDOW_WIDTH/2,WINDOW_WIDTH/2));
//顯示圖像
imshow(WINDOW_NAME1,atomImage);
cvMoveWindow(WINDOW_NAME1,0,200);
/*imshow(WINDOW_NAME2, rookImage);
cvMoveWindow(WINDOW_NAME2, WINDOW_WIDTH, 200);*/
waitKey(0);
return 0;
}

註意:在編寫函數時必須註意把函數寫在主函數上,才能正確調用。

opencv3.2.0之繪圖