• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • 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)
    img:圖像。
    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;
    }

    效果:


    版權聲明:本文為xiansong1005原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/xiansong1005/article/details/80631784

    智能推薦

    opencv 繪制形狀和文字文字

    畫線 圓 橢圓 多邊形 文字 隨機畫線,顏色隨機...

    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) 繪...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    猜你喜歡

    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_...

    精品国产乱码久久久久久蜜桃不卡