【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