opencv學習筆記七:繪制形狀和文字
主函數如下:
#include<opencv2/opencv.hpp>
using namespace cv;
void MyLine();
void MyRectangle();
void MyEllipse();
void MyCircle();
void MyRandLine();
int main(int arc, char** argv)
{
Mat src = imread("1.jpg");
MyLine();
MyRectangle();
MyCircle();
MyEllipse();
putText(src, "Hello Opencv", Point(30, 30), CV_FONT_HERSHEY_COMPLEX, 1, Scalar(255, 255, 0), 3, 8);
MyRandLine();
namedWindow("src",CV_WINDOW_AUTOSIZE);
imshow("src", src);
waitKey(0);
return 0;
}
【1】繪制直線:line(img, p1, p2, color, thickness, line_type);
參數分別為:圖像,起始點,終止點,顏色,線寬,線型。
void MyLine() {
Point p1 = Point(20, 30);
Point p2;
p2.x = 300, p2.y = 300;
Scalar color = Scalar(0, 0, 255);
line(src, p1, p2, color, 1, LINE_8);
}
【2】繪制矩形:rectangle(img,rect,color,thickness,line_type);
參數分別為:圖像,矩形變量(4個成員,分別為起始點橫坐標,縱坐標,長,寬),顏色,線寬,線型。
void MyRectangle() {
Rect rect = Rect(179, 87, 100, 100);
Scalar color = Scalar(255, 0, 0);
rectangle(src,rect,color,2,LINE_8);
}
【3】繪制圓:circle(img, center, radius, color, thickness, line_type);
參數分別為:圖像,圓心坐標,半徑,顏色,線寬,線型。
void MyCircle() {
Scalar color = Scalar(0, 255, 255);
circle(src, Point(src.cols / 2, src.rows / 2), 100, color, 2, LINE_8);
}
【4】繪制橢圓:ellipse(img, center, size axes, angle, startAngle, endAngle, color, thickness, line_type);
參數分別為:圖像,橢圓中心坐標,長短軸大小(size變量2個成員,分別為寬和高),角度,起始角度,終止角度,顏色,線寬,線型。
void MyEllipse() {
Scalar color = Scalar(0, 255, 0);
ellipse(src, Point(src.cols / 2, src.rows / 2), Size(src.cols / 4, src.rows / 8), 90, 0, 360, color, 2, LINE_8);
}
【5】繪制文字:putText(img, text, p, font, scale, color, thickness, line_type);
參數分別為:圖像,文字,起始坐標,字體,放縮,顏色,線寬,線型。
putText(src, "Hello Opencv", Point(30, 30), CV_FONT_HERSHEY_COMPLEX, 1, Scalar(255, 255, 0), 3, 8);
【6】繪制隨機線:
void MyRandLine() {
RNG rng(1);//1為隨機種子
Point p1, p2;
Mat dst = Mat::zeros(src.size(), src.type());
for (int i = 0; i < 1000; i++) {
p1.x = rng.uniform(0, src.cols);
p2.x = rng.uniform(0, src.cols);
p1.y = rng.uniform(0, src.rows);
p2.y = rng.uniform(0, src.rows);
Scalar color = Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));
//程序執行到當前時,會等待50ms,其間用戶觸發了一個按鍵,就會被設置成這個按鍵的ASCLL碼
if (waitKey(50) > 0) {
break;
}
line(dst, p1, p2, color, 1, 8);
namedWindow("隨機線");
imshow("隨機線", dst);
}
}
智能推薦
OpenCvSharp 學習筆記7 --繪制圖形和文字
一 繪制線條 API :Cv2.Line() 參數 說明 img: 源圖像 pt1: 第一個點 pt2: 第二個點 color 線條顏色 thickness: 線條的厚度(粗細) lineType: 線條類型 (枚舉值) shift 點坐標中的小數位數。[默認值為0] 代碼: 二 :繪制矩形 API:Cv2.Rectangle() 參數 說明 img: 源圖像 rect: 舉行對象 color 線...
OpenCV--繪制形狀與文字
繪制直線 實例代碼: 繪制橢圓 實例代碼: 繪制矩形 實例代碼: 繪制圓形 實例代碼: 填充圖案 實例代碼: 繪制隨機線條 隨機數生成器:RNG 實例代碼: 繪制文字 實例代碼:...
OpenCV學習筆記(四)——繪制簡形狀與文本
前言: 在圖像處理的過程中,我們有時需要在圖像或者視頻上畫上一些圖案或者繪上一些文字,在OpenCV中這非常的容易實現。OpenCV中提供了各種功能的繪圖函數,使用這些函數,我們可以在圖像上繪制直線、矩形、圓、橢圓、多邊形等等。 一、繪制直線 在OpenCV中提供了line(...
opencv學習八(繪制直線,矩形等幾何形狀,添加文字)line,rectangle,fillPoly
要點: LINE_4/LINE_8都有鋸齒,LINE_AA無鋸齒; 新建一個空白圖: Mat t1; t1.create(500, 500, CV_8UC3); t1 = Scalar(255, 255, 255); 或者Mat t1(500,500,CV_8UC3,Scalar(255,255,255); 新建直線: line(t1, p1, p2, color, 1, LINE_8); //背...
OpenCV基礎課程筆記08繪制圖形和文字
寫在前面 Vec3b -> uchar Vec3f -> float src.convertTo(dst.CV_23F);//轉換方式 比較重要的隨機數API RNG rng(12345); rng.uniform(min,max); 代碼 結果 不想在其他小姐姐身上寫I like you,先用自己的照片代替女友那……不行流鼻血了。 胡亂劃線的函數...
猜你喜歡
freemarker + ItextRender 根據模板生成PDF文件
1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...
電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!
Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...
requests實現全自動PPT模板
http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...