opencvC++學習7繪制形狀與文字
標簽: opencv
目的:
使用cv::Point與cv::Scalar
繪制線、矩形、園、橢圓等基本幾何形狀
繪制點和圓
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:線條的類型。見 cvLine 的描述
shift:圓心坐標點和半徑值的小數點位數。
畫圓畫點都是使用circle()函數來畫,點就是圓,我們平常所說的圓只不過是半徑大一點而已。
繪制橢圓
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)
center:橢圓圓心坐標。
axes:軸的長度。
angle:偏轉的角度。
start_angle:圓弧起始角的角度。
end_angle:圓弧終結角的角度。
color:線條的顏色。
thickness:線條的粗細程度。
line_type:線條的類型,見CVLINE的描述。
shift:圓心坐標點和數軸的精度。
繪制矩形
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:坐標點的小數點位數。
繪制直線
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:線型
cv::RNG
生成高斯隨機數gaussian (double sigma)
生成正態分布隨機數uniform (int a, int b)
代碼:
#include <opencv2\opencv.hpp>
using namespace cv;
using namespace std;
int main()
{
Mat src;
src = imread("D:/opencvSRC/test.jpg");
if (src.empty()) {
printf("load image error!\n");
}
namedWindow("src", CV_WINDOW_AUTOSIZE);
//畫空心點
Point p(20, 20);//初始化點坐標為(20,20)
circle(src, p, 2, Scalar(0, 255, 0)); //第三個參數表示點的半徑,第四個參數選擇顏色。這樣子我們就畫出了綠色的空心點
//這種初始化點的方式也可以
Point p2;
p2.x = 100;
p2.y = 100;
//畫實心點
circle(src, p2, 3, Scalar(255, 0, 0), -1); //第五個參數我設為-1,表明這是個實點。
//畫空心圓
Point p3(300, 300);
circle(src, p3, 100, Scalar(0, 0, 255), 3);//第五個參數我們調高點,讓線更粗
//畫實心圓
Point p4;
p4.x = 600;
p4.y = 600;
circle(src, p4, 100, Scalar(120, 120, 120), -1);
int thickness = 3;
int lineType = 8;
double angle = 30; //橢圓旋轉角度
//第三個參數Size中的兩個參數分別是橫軸長、縱軸長。
//同理,thickness若是小于0,表示實心
ellipse(src, Point(100, 100), Size(90, 60), angle, 0, 300, Scalar(255, 255, 0), thickness, lineType);
//矩形
Rect r(250, 250, 120, 200);
rectangle(src, r, Scalar(0, 255, 255), 3);
Point p5(100, 100);
Point p6(758, 50);
line(src, p5, p6, Scalar(33, 33, 133), 2);
//畫第二條線
line(src, Point(300, 300), Point(758, 300), Scalar(89, 90, 90), 3);
imshow("src", src);
RNG rng(12345);
Point pt1;
Point pt2;
Mat bg = Mat::zeros(src.size(), src.type());
namedWindow("randomlinedemo", CV_WINDOW_AUTOSIZE);
for (int i = 0; i < 1000; i++) {
pt1.x = rng.uniform(0, src.cols);
pt2.x = rng.uniform(0, src.cols);
pt1.y = rng.uniform(0, src.rows);
pt2.y = rng.uniform(0, src.rows);
Scalar color = Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));
if (waitKey(50) > 0) {
break;
}
line(bg, pt1, pt2, color, rng.uniform(0, 20), 8);
imshow("randomlinedemo", bg);
}
waitKey(0);
return 0;
}
效果:
智能推薦
opencvC++學習10膨脹與腐蝕
圖像形態學操作 – 基于形狀的一系列圖像處理操作的合集,主要是基于集合論基礎上的形態學數學 形態學有四個基本操作:腐蝕、膨脹、開、閉 膨脹與腐蝕是圖像處理中最常用的形態學操作手段 形態學操作-膨脹: 跟卷積操作類似,假設有圖像A和結構元素B,結構元素B在A上面移動,其中B定義其中心為錨點,計算B覆蓋下A的最大像素值用來替換錨點的像素,其中B作為結構體可以是任意形狀 形態學操作-腐蝕 腐...
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...
[OpenCV] 08-繪制形狀和文字
使用cv::Point與cv::Scalar Point表示2D平面上一個點x,y Scalar表示四個元素的向量 Scalar(a, b, c); // a = blue, b = green, c = red 表示RGB三個通道 繪制線、矩形、園、橢圓等基本幾何形狀 生成高斯隨機數gaussian (double sigma) 生成正態分布隨機數uniform (int a, int b) 繪...
猜你喜歡
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_...