OpenCV(五)绘制图形与文本
?
目錄
一、繪制直線
1、函數line()
2、代碼
3、效果
二、繪制矩形
?1、函數rectangle()
1-1、左上角頂點+右下角頂點
?1-2、矩形位置和長寬
?2、代碼
3、效果
三、繪制橢圓
1、函數ellipse()
2、代碼
3、效果
四、繪制圓形
1、circle()函數
2、代碼
3、效果
五、添加文本
1、putText()函數?
2、代碼
3、效果
總代碼
參考資料:
注:OpenCV中RGB排列是按照BGR排的(即相反順序?)
一、繪制直線
1、函數line()
line(Mat& img, Point pt1, Point pt2, const Scalar& color, int thickness=1, int lineType=8, int shift=0);
line(img, Point(0, 0), Point(200, 200), Scalar(0, 0, 255), 2);
// 圖像 起點 終點 顏色(紅) 線粗細
參數:
img: 要繪制線段的圖像。
pt1: 線段的起點。
pt2: 線段的終點。
color: 線段的顏色,通過一個Scalar對象定義。
thickness: 線條的寬度。
lineType: 線段的類型。可以取值8, 4, 和CV_AA, 分別代表8鄰接連接線,4鄰接連接線和反鋸齒連接線。默認值為8鄰接。為了獲得更好地效果可以選用CV_AA(采用了高斯濾波)。
shift: 坐標點小數點位數。
2、代碼
//繪制直線
void DrawLine()
{line(img, Point(0, 0), Point(200, 200), Scalar(0, 0, 255), 2);// 圖像 起點 終點 顏色(紅R) 線粗細
}
3、效果
二、繪制矩形
?1、函數rectangle()
?兩種調用方式:
1-1、左上角頂點+右下角頂點
//方式1:左上角頂點+右下角頂點rectangle(img, Point(100, 100), Point(400, 400), Scalar(255, 0, 0), 2, 8);// 圖像 左上角頂點 右下角頂點 顏色(藍B) 寬度 線型(默認8)
?1-2、矩形位置和長寬
//方式2:矩形位置和長寬
rectangle(img, Rect(200, 200, 300, 300), Scalar(255, 255, 0), 2, 8);
// 矩形位置和長寬 (藍綠)
?2、代碼
//繪制矩形
void DrawRectangle()
{//方式1:左上角頂點+右下角頂點rectangle(img, Point(100, 100), Point(400, 400), Scalar(255, 0, 0), 2, 8);// 圖像 左上角頂點 右下角頂點 顏色(藍B) 寬度 線型(默認8)//方式2:矩形位置和長寬rectangle(img, Rect(200, 200, 300, 300), Scalar(255, 255, 0), 2, 8);// 矩形位置和長寬 (藍綠)
}
3、效果
三、繪制橢圓
1、函數ellipse()
ellipse(img, Point(img.cols / 2, img.rows / 2), Size(img.cols / 4, img.rows / 2), 90,
// 圓心 (長, 寬) 偏轉
0, 360, Scalar(255, 0, 255), 2, LINE_8);
//起始角度 終止角度 顏色(藍紅) 寬度 線條類型
詳解:
參數:
img:圖像。
center:橢圓圓心坐標。
axes:軸的長度(兩個軸)。
angle:偏轉的角度。
start_angle:圓弧起始角的角度。
end_angle:圓弧終結角的角度。
color:線條的顏色。
thickness:線條的粗細程度。
line_type:線條的類型。
shift:圓心坐標點和數軸的精度。
2、代碼
//繪制橢圓
void DrawEllipse()
{ellipse(img, Point(img.cols / 2, img.rows / 2), Size(img.cols / 4, img.rows / 2), 90, 0, 360, Scalar(255, 0, 255), 2, LINE_8);//圓心 (長, 寬) 偏轉角 起始角度 終止角度 顏色(藍紅) 寬度 線條類型
}
3、效果
四、繪制圓形
1、circle()函數
circle(img, Point(img.cols/2, img.rows/2), 200, Scalar(0, 255, 255), 2, 8);// 圖像 圓心坐標 半徑 顏色 線條粗細 線條類型
2、代碼
//繪制圓形
void DrawCircle()
{circle(img, Point(img.cols/2, img.rows/2), 200, Scalar(0, 255, 255), 2, 8);// 圖像 圓心坐標 半徑 顏色 線條粗細 線條類型
}
3、效果
五、添加文本
1、putText()函數?
putText(img, "Hello OpenCV", Point(200, 200), FONT_HERSHEY_COMPLEX, // 圖像 文本 位置(左上角) 字體類型
2.0, Scalar(255, 0, 255), 1, 8);
//字體大小 字體顏色 線條粗細 線條類型
2、代碼
//添加文本
void DrawText()
{putText(img, "Hello OpenCV", Point(200, 200), FONT_HERSHEY_COMPLEX, 2.0, Scalar(255, 0, 255), 1, 8); // 圖像 文本 位置(左上角) 字體類型 字體大小 字體顏色 線條粗細 線條類型
}
3、效果
目錄
?
總代碼
//圖形與文本繪制
//注:OpenCV中RGB排列是按照BGR排的,即相反順序
#include <iostream>
#include <opencv2/opencv.hpp>using namespace cv;
using namespace std;Mat img;//圖像初始化
void Image_Init()
{img = Mat::zeros(Size(800, 600), 16); //創建一個黑白圖像if (img.empty() ){printf("圖像加載失敗");exit(0);}
}//繪制直線
void DrawLine()
{line(img, Point(0, 0), Point(200, 200), Scalar(0, 0, 255), 2);// 圖像 起點 終點 顏色(紅R) 線粗細
}//繪制矩形
void DrawRectangle()
{//方式1:左上角頂點+右下角頂點rectangle(img, Point(100, 100), Point(400, 400), Scalar(255, 0, 0), 2, 8);// 圖像 左上角頂點 右下角頂點 顏色(藍B) 寬度 線型(默認8)//方式2:矩形位置和長寬rectangle(img, Rect(200, 200, 300, 300), Scalar(255, 255, 0), 2, 8);// 矩形位置和長寬 (藍綠)
}//繪制橢圓
void DrawEllipse()
{ellipse(img, Point(img.cols / 2, img.rows / 2), Size(img.cols / 4, img.rows / 2), 90, 0, 360, Scalar(255, 0, 255), 2, LINE_8);//圓心 (長, 寬) 偏轉角 起始角度 終止角度 顏色(藍紅) 寬度 線條類型
}//繪制圓形
void DrawCircle()
{circle(img, Point(img.cols/2, img.rows/2), 200, Scalar(0, 255, 255), 2, 8);// 圖像 圓心坐標 半徑 顏色 線條粗細 線條類型
}//添加文本
void DrawText()
{putText(img, "Hello OpenCV", Point(200, 200), FONT_HERSHEY_COMPLEX, 2.0, Scalar(255, 0, 255), 1, 8); // 圖像 文本 位置(左上角) 字體類型 字體大小 字體顏色 線條粗細 線條類型
}//顯示圖像
void Show()
{imshow("畫板", img);
}int main()
{Image_Init(); //圖像初始化//DrawLine(); //畫直線//DrawRectangle(); //畫矩形//DrawEllipse(); //畫橢圓//DrawCircle(); //畫圓形DrawText(); //繪制文本Show(); //顯示圖像waitKey(0);return 0;
}
參考資料:
https://blog.csdn.net/weixin_41695564/article/details/79919474
https://blog.csdn.net/weixin_28949185/article/details/84839167
https://blog.csdn.net/Destiny_zc/article/details/106472118?
總結
以上是生活随笔為你收集整理的OpenCV(五)绘制图形与文本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构与算法(7-3)最小生成树(普里
- 下一篇: OpenCV(六)形态学操作1--基础: