1. 程式人生 > >openCV 基本繪圖

openCV 基本繪圖

圓心 space blog 繪制矩形 img 描述 input 五個 tro

繪制點和圓

void cvCircle( CvArr* img, CvPoint center, int radius, CvScalar color,int thickness=1, int line_type=8, int shift=0 );

img:圖像。

center:圓心坐標。

radius:圓形的半徑。

color:線條的顏色。

thickness:如果是正數,表示組成圓的線條的粗細程度。否則,表示圓是否被填充。

line_type:線條的類型。

shift:圓心坐標點和半徑值的小數點位數。

畫圓畫點都是使用circle()函數來畫,點就是圓,我們平常所說的圓只不過是半徑大一點而已。

示例:

#pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup")
#include <opencv2\imgproc\imgproc.hpp>
#include<opencv2\highgui\highgui.hpp>

using namespace cv;

int main()
{
    Mat img = imread("temp.jpg");

    //畫空心點
    Point p(20, 20);//初始化點坐標為(20,20)
    circle(img, p, 2
, Scalar(0, 255, 0)); //第三個參數表示點的半徑,第四個參數選擇顏色。這樣子我們就畫出了綠色的空心點 //這種初始化點的方式也可以 Point p2; p2.x = 100; p2.y = 100; //畫實心點 circle(img, p2, 3, Scalar(255, 0, 0), -1); //第五個參數我設為-1,表明這是個實點。 //畫空心圓 Point p3(300, 300); circle(img, p3, 100, Scalar(0, 0, 255), 3);//第五個參數我們調高點,讓線更粗 //畫實心圓
Point p4; p4.x = 600; p4.y = 600; circle(img, p4, 100, Scalar(120, 120, 120), -1); imshow("畫點畫圓", img); waitKey(); return 0; }

繪制橢圓

void ellipse(Mat& img, Point center,Size axes, double angle, double startAngle, double endAngle, const Scalar& color,int thickness=1, int lineType=8, int shift=0)

img:圖像。

center:橢圓圓心坐標。

axes:軸的長度。

angle:偏轉的角度。

start_angle:圓弧起始角的角度。

end_angle:圓弧終結角的角度。

color:線條的顏色。

thickness:線條的粗細程度。

line_type:線條的類型,見CVLINE的描述。

shift:圓心坐標點和數軸的精度。

示例:

#pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup")
#include <opencv2\imgproc\imgproc.hpp>
#include<opencv2\highgui\highgui.hpp>

using namespace cv;

int main()
{
    Mat img = imread("temp.jpg");
    int thickness = 3;
    int lineType = 8;
    double angle = 30;  //橢圓旋轉角度
    //第三個參數Size中的兩個參數分別是橫軸長、縱軸長。
    //同理,thickness若是小於0,表示實心
    ellipse(img, Point(500, 500), Size(90, 60), angle, 0, 360, Scalar(0, 0, 255), thickness, lineType);

    imshow("畫橢圓", img);

    waitKey();
    return 0;
}

繪制矩形

void rectangle(Mat& img,Rect rec, const Scalar&color, intthickness=1, intlineType=8,intshift=0 )

img:圖像。

rec:表征矩形的位置和長寬。

color:線條顏色 (RGB) 或亮度(灰度圖像 )(grayscale image)。

thickness:組成矩形的線條的粗細程度。取負值時(如CV_FILLED)函數繪制填充了色彩的矩形。

line_type:線條的類型。見cvLine的描述

shift:坐標點的小數點位數。

示例:

#pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup")
#include <opencv2\imgproc\imgproc.hpp>
#include<opencv2\highgui\highgui.hpp>

using namespace cv;

int main()
{
    Mat img = imread("temp.jpg");
    Rect r(250, 250, 450, 500);
    rectangle(img, r, Scalar(0, 0, 255), 3);

    imshow("畫矩形", img);

    waitKey();
    return 0;


}

繪制直線

void line(InputOutputArray img, Point pt1, Point pt2, const Scalar& color,int thickness = 1, int lineType = LINE_8, int shift = 0);

img:圖像.

pt1:線條起點.

pt2:線條終點.

color:線條顏色.

thickness:線條寬度.

lineType:線型

示例:

#pragma comment(linker, "/subsystem:windows /ENTRY:mainCRTStartup")
#include <opencv2\imgproc\imgproc.hpp>
#include<opencv2\highgui\highgui.hpp>

using namespace cv;

int main()
{
    Mat img = imread("temp.jpg");
    Point p1(100, 100);
    Point p2(758, 50);
    line(img, p1, p2, Scalar(33, 33, 133), 2);

    //畫第二條線
    line(img, Point(100, 300), Point(800, 300), Scalar(89, 90, 90), 3);

    imshow("畫矩形", img);

    waitKey();
    return 0;
}

openCV 基本繪圖