1. 程式人生 > >【OpenCV3影象處理】繪圖功能總結(直線,矩形,圓,橢圓,多邊形,文字)

【OpenCV3影象處理】繪圖功能總結(直線,矩形,圓,橢圓,多邊形,文字)

1、直線Line

函式原型:

void cv::line   (   
InputOutputArray    img,   //影象
Point   pt1,               //線的起點
Point   pt2,               //線的終點
const Scalar &  color,     //線的顏色
int     thickness = 1,     //線的粗細 
int     lineType = LINE_8, //線的型別 
int     shift = 0          //點座標中小數位數 
)   

例項程式碼

#include<iostream>  
#include<vector> #include<opencv2/opencv.hpp> using namespace cv; using namespace std; int main() { Mat srcImage(Size(300, 300), CV_8UC3, Scalar(0)); Point p1 = Point(60, 50); Point p2 = Point(250, 200); line(srcImage, p1, p2, CV_RGB(255, 0, 0), 1); imshow("效果圖", srcImage); waitKey(); return
0; }

這裡寫圖片描述

2、矩形Rectangle

函式原型:

void cv::rectangle  (   
InputOutputArray    img,      //影象
Point   pt1,                  //矩形的一個頂點
Point   pt2,                  //和上一個頂點相對的頂點
const Scalar &  color,        //線的顏色
int     thickness = 1,        //線的粗細 
int     lineType = LINE_8,    //線的型別 
int     shift = 0
//點座標中小數位數 )

例項程式碼

#include<iostream>  
#include<vector>  
#include<opencv2/opencv.hpp>  

using namespace cv;
using namespace std;

int main()
{
    Mat srcImage(Size(300, 300), CV_8UC3, Scalar(0));

    Point p1 = Point(60, 50);
    Point p2 = Point(250, 200);

    rectangle(srcImage, p1, p2, CV_RGB(255, 0, 0), 1);

    imshow("效果圖", srcImage);
    waitKey();

    return 0;
}

這裡寫圖片描述

3、圓形Circle

函式原型:


void cv::circle (   
InputOutputArray    img,    //影象
Point   center,             //圓心
int     radius,             //半徑
const Scalar &  color,      //線的顏色
int     thickness = 1,      //如果是正數,則為線的粗細,如果為負數則填充圓的內部
int     lineType = LINE_8,  //線的型別
int     shift = 0           ////點座標中小數位數
)   

例項程式碼

#include<iostream>  
#include<vector>  
#include<opencv2/opencv.hpp>  

using namespace cv;
using namespace std;

int main()
{
    Mat srcImage(Size(300, 300), CV_8UC3, Scalar(0));

    Point circle_center = Point(150, 150);

    int circle_radius = 80;

    circle(srcImage, circle_center, circle_radius, Scalar(255, 0, 0), 2);    //Scalar( (b), (g), (r), 0 )

    imshow("效果圖", srcImage);

    waitKey();

    return 0;
}

這裡寫圖片描述

4、橢圓Ellipse

函式原型:

void cv::ellipse    (   
InputOutputArray    img,      //影象
Point   center,               //橢圓中心
Size    axes,                 //橢圓長半軸和短半軸
double  angle,                //橢圓的旋轉角度
double  startAngle,           //橢圓弧的起始角
double  endAngle,             //橢圓弧的結束角
const Scalar &  color,        //線的顏色
int     thickness = 1,        //如果是正數,則為線的粗細,如果為負數則填充橢圓的內部
int     lineType = LINE_8,    //線的型別
int     shift = 0             //中心座標和半軸的小數位數
)   

這裡寫圖片描述

例項程式碼

#include<iostream>  
#include<vector>  
#include<opencv2/opencv.hpp>  

using namespace cv;
using namespace std;

int main()
{
    Mat srcImage(Size(300, 300), CV_8UC3, Scalar(0));

    Point center = Point(150, 150);

    Size axes = Size(150, 80);

    double  angle = 45;
    //繪製0~360度,完整的橢圓
    ellipse(srcImage, center, axes, angle, 0,360,Scalar(0, 0, 255), 1, LINE_AA);
    //繪製0~180度,橢圓的一部分
    ellipse(srcImage, center, axes, angle, 0,180,Scalar(0, 0, 255), 1, LINE_AA);

    //RotatedRect m_ellipse;
    //m_ellipse.center = center;
    //m_ellipse.angle = angle;
    //m_ellipse.size = axes;

    //ellipse(srcImage, m_ellipse, Scalar(0, 0, 255),1 , LINE_AA);

    imshow("效果圖", srcImage);
    waitKey();

    return 0;
}

這裡寫圖片描述 這裡寫圖片描述

5、多邊形Polygon

函式原型

void cv::polylines  (   
InputOutputArray    img,    //影象
InputArrayOfArrays  pts,    //點集
bool    isClosed,           //true為閉合,最後一個點和第一個點連起來
const Scalar &  color,      //線的顏色
int     thickness = 1,      //線的粗細
int     lineType = LINE_8,  //線的型別
int     shift = 0           //點的座標精度
)   

polylines ()函式是用來畫折線的,如果輸入的點集是多邊形的頂點集合,isClosed=true就可以繪製多邊形

例項程式碼

#include<iostream>  
#include<vector>  
#include<opencv2/opencv.hpp>  

using namespace cv;
using namespace std;

int main()
{
    Mat srcImage(Size(300, 300), CV_8UC3, Scalar(0));

    vector<Point> pt;

    pt.push_back ( Point(50, 50) );

    pt.push_back ( Point(50, 120) );

    pt.push_back ( Point(90, 160) );

    pt.push_back ( Point(140, 240) );

    pt.push_back ( Point(240, 70) );

    polylines(srcImage ,pt ,1, CV_RGB(0, 255, 0), 2);

    imshow("效果圖", srcImage);
    waitKey();

    return 0;
}

這裡寫圖片描述

6、繪製文字PutText

函式原型

void cv::putText    (                
InputOutputArray    img,             //影象
const String &  text,                //要顯示的字串
Point   org,                         //圖片中文字字串的左下角
int     fontFace,                    //字型型別
double  fontScale,                   //字型大小
Scalar  color,                       //顏色
int     thickness = 1,               //粗細
int     lineType = LINE_8,           //線的型別
bool    bottomLeftOrigin = false     //當TRUE時,影象原點位於左下角。否則,它在左上角
)   

例項程式碼

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>  
#include<vector>  
#include<opencv2/opencv.hpp>  
#include<string>

using namespace cv;
using namespace std;

int main()
{
    Mat srcImage(Size(300, 300), CV_8UC3, Scalar(0));

    string str = "I am a student!";

    putText(srcImage, str,Point(20,150), FONT_HERSHEY_SIMPLEX,1, Scalar(0, 0, 255), 1, LINE_AA);

    imshow("效果圖", srcImage);
    waitKey();

    return 0;
}

這裡寫圖片描述

這個函式的字型,顯示字的位置,幾個引數比較麻煩

相關推薦

OpenCV3影象處理繪圖功能總結直線矩形橢圓多邊形文字

1、直線Line 函式原型: void cv::line ( InputOutputArray img, //影象 Point pt1,

OpenCV3影象處理Mat類詳解 之 元素的獲取與賦值 對比.at<>()函式 和 .ptr<>()函式

Mat中畫素的獲取與賦值 計算機視覺中,影象的讀取是影象處理的基礎,影象就是一系列畫素值,OpenCV使用資料結構cv::Mat來儲存影象。cv::Mat是一個矩陣類,矩陣中每一個元素都代表一個畫素,對於灰度影象,畫素用8位無符號數,0表示黑色,255表示白色。對於彩色

OpenCV3影象處理RotatedRect類 詳解

RotatedRect是一個儲存旋轉矩形的類,通常用來儲存最小外包矩形函式minAreaRect( )和橢圓擬合函式fitEllipse( )返回的結果。儲存的值,完全取決在於函式的返回 cl

OpenCV3影象處理影象載入、顯示、儲存

一、影象載入 Mat cv::imread( const String & filename, int flags = IMREAD_COLOR ) 引數一:圖片所在的

OpenCV3影象處理仿射變換 透視變換

影象處理的仿射變換和透視變換 仿射變換和透視變換更直觀的叫法可以叫做“平面變換”和“空間變換”。一個是二維座標(x,y),一個是三維座標(x,y,z) 仿射變換:二維平面的變換 ; 線性變換 ;已知3對座標點就可以求得變換矩陣 透視變換:三維空間的變換

OpenCV3影象處理查詢二值影象的邊緣 findContours函式詳解

void cv::findContours ( InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int mode

RAW影象處理DxO PhotoLab for Mac破解版

DxO PhotoLab for Mac是一款專業的RAW影象處理軟體,可以讓使用者以最佳影象質量輕鬆生成RAW和JPEG影象,並且DxO PhotoLab Mac版還為使用者提供了一整套智慧輔助校正,讓您可以隨時手動進行微調,有需要的朋友快來看看吧! 下載地址DxO PhotoLab for

數字影象處理作業二 邊緣檢測與追蹤

作業二 邊緣檢測與追蹤 吳政億 151220129 [email protected] (南京大學 電腦科學與技術系, 南京 210093) 邊緣檢測 在邊緣檢測中,我使用了sobel,roberts,prewitt,marr作為運算元,對

數字影象處理作業一 直方圖均衡化

作業一 直方圖均衡化 吳政億 151220129 [email protected] (南京大學 電腦科學與技術系, 南京 210093) 實現細節 單通道直方圖均衡化

數字影象處理作業三 地理衛星雲圖處理

作業三 地理衛星雲圖處理 吳政億 151220129 [email protected] (南京大學 電腦科學與技術系, 南京 210093) 1 實驗要求 對衛星雲圖進行處理,保留經緯線,剝離大陸線邊界。允許應用所有matlab函式

數字影象處理opencv的安裝及vs2017環境的配置

1.安裝opencv 首先是安裝opencv,我是從官網下的,下載opencv,在官網下載最近的版本即可。 我是windows10系統,下載對應Windows的最新版。 下載後解壓就不說了,解壓後如下(每個版本可能解壓後不太一樣): 然後我們需要修改環境變

數字影象處理線性濾波、最大值濾波最小值濾波、中值濾波、高頻補償濾波vs2017+openCV

一、實驗原理 1、線性濾波 ① 不管是低通線性濾波還是高通線性濾波原理都是一樣的,用圖一所示的濾波器模板進行加權處理,將最終得到的R值賦給w5對應的畫素。 ②低通線性濾波和高通線性濾波不同之處就在於: 低通線性濾波w1+w2+…+w9 = 1,且w1~w9全

數字影象處理Intensity Transformations and Histogram Equalization

實驗要求: 該實驗使用強度變換方法對影象進行增強。實驗影象為圖 3.8(a) (1.a) 用公式(3.2-2)所示的對數變換方法進行影象增強。 (1.b) 用公式(3.2-3)形式的指數變換方法進行影象增強。 實驗的目的是用(1.a)和(1.b)中的方法獲得最好的視覺化增

數字影象處理二維2D線性插值的應用

應用情況 在使用matlab對影象進行各種操作的時候經常要使用插值進行計算。 例如:影象縮放、影象旋轉、仿射變換等等。 線性插值 先介紹線性插值的概念。 已知兩個點(x1, y1)、(x2, y2),求它們中間橫座標為x的點的y值。 則可以利用如下公式進行插值

OpenCV影象處理十九、數學形態學方法

1.擊中擊不中運算 擊中擊不中(hit or miss)定義在交集為空集的兩個結構元素的膨脹和腐蝕運算的基礎上。設B =(B1,B2)表示結構元素對,且B1 ∩ B2 = ∅ 則結構元素B對集合A的擊中積補種運算,記做  定義為: →運算過程為: (→當且僅當B1平移某一

數字影象處理七.MFC影象增強之影象普通平滑、高斯平滑、Laplacian、Sobel、Prewitt銳化詳解

        程式碼如下:void CImageProcessingView::OnTxzqPtph2() { if(numPicture==0) { AfxMessageBox("載入圖片後才能影象增強(平滑)!",MB_OK,0); return; } AfxMessageBox("影象

python影象處理影象的濾波ImageFilter類詳解

在影象處理中,經常需要對影象進行平滑、銳化、邊界增強等濾波處理。在使用PIL影象處理庫時,我們通過Image類中的成員函式filter()來呼叫濾波函式對影象進行濾波,而濾波函式則通過ImageFil

VC影象處理直方圖均衡化

/*img 為輸入原圖 outimg為輸出直方圖 probality為輸出的灰度直方概率,是陣列*/ void Histogram(Mat img,Mat &outImg,float *probality) { outImg.create(500,256,CV_8

數字影象處理灰度變換函式對數變換、反對數變換、冪次變換

// 對比度增強.cpp : 定義控制檯應用程式的入口點。 // #include "stdafx.h" #include <opencv2/opencv.hpp> #include <math.h> #include <iostream&g

影象處理海森矩陣Hessian Matrix及一個用例影象增強

前言        Hessian Matrix(海森矩陣)在影象處理中有廣泛的應用,比如邊緣檢測、特徵點檢測等。而海森矩陣本身也包含了大量的數學知識,例如泰勒展開、多元函式求導、矩陣、特徵值等。寫這篇部落格的目的,就是想從原理和實現上講一講Hessian Matr