openCV學習筆記(四)-- 繪制基本形狀和文字
1.繪制基本圖形
記住要全局聲明,和在main函數中調用
//繪制直線
void MyLines() {
//定義兩個點
Point p1 = Point(20, 30);
Point p2;
p2.x = 300;
p2.y = 300;
Scalar color = Scalar(0, 0, 255);//定義直線顏色
//練成一條直線
line(bgImage, p1, p2, color, 1, LINE_8);//背景圖片,點1,點2,線的顏色,線的寬度,線的類型(LINT_AA--表示反鋸齒型)
}
//繪制矩形
void MyRectangle() {
Rect rect = Rect(50, 50, 300, 300);//分別是起始的x,y值和矩形的寬高
Scalar color = Scalar(255, 0, 0);
rectangle(bgImage, rect, color, 2, LINE_8);
}
//繪制橢圓或弧線
void MyEllipse() {
Scalar color = Scalar(0, 255, 0);
ellipse(bgImage, Point(bgImage.cols / 2, bgImage.rows / 2),Size(bgImage.cols / 4, bgImage.rows / 8), 70, 0, 360, color, 3, LINE_8);
//背景圖片,橢圓中心點,橢圓的長軸/短軸長短,橢圓傾斜角度,橢圓從0-360度(小于360則為圓弧);
}
//畫圓形
void MyCircle() {
Scalar color = Scalar(0, 255, 255);
Point center = Point(bgImage.cols / 2, bgImage.rows / 2);//定義圓中心點
circle(bgImage, center, 150, color, 2, 8);//150為半徑,8=LINE_8
}
//畫多邊形
void MyPolygon() {
Point pts[1][5];//定義一個圖形,其中有五個點
pts[0][0] = Point(100, 100);
pts[0][1] = Point(100, 200);
pts[0][2] = Point(200, 200);
pts[0][3] = Point(200, 100);
pts[0][4] = Point(100, 100);
const Point* ppts[] = { pts[0] };//引用數組數據
int npt[] = { 5 };//有幾個點
Scalar color = Scalar(255, 12, 255);
fillPoly(bgImage, ppts, npt, 1, color, 8);//1--畫一個圖形
}
//隨機畫線
void RandomLineDemo() {
//RNG--隨機函數
RNG rng(12345);//設置一個隨機函數的種子,相當于邊界
Point pt1;
Point pt2;
Mat bg = Mat::zeros(bgImage.size(), bgImage.type());//重新畫一張bgImage大小的黑色圖
namedWindow("random_line", CV_WINDOW_AUTOSIZE);
for (int i = 0; i < 100000; ++i) {
pt1.x = rng.uniform(0, bgImage.cols);//生成一個范圍內的正態分布隨機數
pt2.x = rng.uniform(0, bgImage.cols);
pt1.y = rng.uniform(0, bgImage.rows);
pt2.y = rng.uniform(0, bgImage.rows);
Scalar color = Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));
if (waitKey(50)<0)//50ms畫一條
{
break;
}
line(bg, pt1, pt2, color, 1, 8);
imshow("random_line", bg);
}
}
2.繪制文字
//繪制文字
putText(bgImage,"Hello OpenCV",Point(300,300),CV_FONT_HERSHEY_COMPLEX,1.5,Scalar(12,23,200),3,8);
//背景圖片,文本,文字位置,字體,文字大小,顏色,粗細,線的類型
智能推薦
08-繪制形狀和文字
知識點 1、使用cv::Point(代表點),cv::Scalar(代表顏色向量); 2、繪制線,矩形,圓,橢圓等基本幾何形狀; 3、隨機生成與(圖像上)繪制文本; 4、代碼演示; 使用cv::Point與cv::Scalar 1、Point表示2D平面上一個點x,y; 2、Scalar表示四個元素的向量(Scalar最多只能傳入4個參數) 繪制線,矩形,圓,橢圓 畫線:cv::line; lin...
OpenCvSharp 學習筆記7 --繪制圖形和文字
一 繪制線條 API :Cv2.Line() 參數 說明 img: 源圖像 pt1: 第一個點 pt2: 第二個點 color 線條顏色 thickness: 線條的厚度(粗細) lineType: 線條類型 (枚舉值) shift 點坐標中的小數位數。[默認值為0] 代碼: 二 :繪制矩形 API:Cv2.Rectangle() 參數 說明 img: 源圖像 rect: 舉行對象 color 線...
opencvC++學習7繪制形狀與文字
目的: 使用cv::Point與cv::Scalar 繪制線、矩形、園、橢圓等基本幾何形狀 繪制點和圓 img:圖像。 center:圓心坐標。 radius:圓形的半徑。 color:線條的顏色。 thickness:如果是正數,表示組成圓的線條的粗細程度。否則,表示圓是否被填充。 line_type:線條的類型。見 cvLine 的描述 shift:圓心坐標點和半徑值的小數點位數。 畫圓畫點都...
opencv學習筆記(四)——繪制輪廓、直方圖均衡、模板匹配
繪制輪廓 函數 cv2.?ndContours() 有三個參數,第一個是輸入圖像,第二個是 輪廓檢索模式,第三個是輪廓近似方法。 直方圖 通過直方圖你可以對整幅圖像的灰度分布有一個整體的了解。直方圖的 x 軸是灰度值(0 到 255),y軸是圖片中具有同一個灰度值的點的數目。 直方圖其實就是對圖像的另一種解釋。以下圖為例,通過直方圖我們可以對圖像的對比度,亮度,灰度分布等有一個直觀的認識...
猜你喜歡
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壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...
Linux C系統編程-線程互斥鎖(四)
互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...