1. 程式人生 > >openCV中cvRectangle與cv::rectangle繪製矩形邊框

openCV中cvRectangle與cv::rectangle繪製矩形邊框

cvRentangle和cv::rectangle函式原型對比:

C:void cvRectangle(CvArr* img, CvPoint pt1, CvPointpt2, CvScalar color, int thickness=1, int line_type=8, int shift=0 )

C++:void rectangle(Mat& img, Point pt1,Point pt2,const Scalar& color, int thickness=1, int lineType=8, int shift=0)
C++:void rectangle
(Mat& img, Rect rec, const Scalar& color, int thickness=1, int lineType=8, int shift=0 )

引數介紹:

img 影象. pt1 矩形的一個頂點。 pt2 矩形對角線上的另一個頂點 color 線條顏色 (RGB) 或亮度(灰度影象 )(grayscale image)。 thickness 組成矩形的線條的粗細程度。取負值時(如 CV_FILLED)函式繪製填充了色彩的矩形。 line_type 線條的型別。見cvLine的描述 shift 座標點的小數點位數。 程式碼:
#include <iostream>
#include <opencv2\highgui\highgui.hpp>

using namespace std;
using namespace cv;
int main()
{
	char *imageSrc = "I:\\OpenCV Learning\\picture\\sumpalace.jpg";
	Mat matImage = imread(imageSrc,-1);
        IplImage *iplImage = cvLoadImage(imageSrc,-1);
	
	if(matImage.data==0||iplImage->imageData ==0)
	{
		cout<<"圖片載入失敗"<<endl;
		return -1;
	}	
	
	cv::rectangle(matImage,cvPoint(20,200),cvPoint(200,300),Scalar(255,0,0),1,1,0);
	//Rect(int a,int b,int c,int d)a,b為矩形的左上角座標,c,d為矩形的長和寬
	cv::rectangle(matImage,Rect(100,300,20,200),Scalar(0,0,255),1,1,0);
	cvRectangle(iplImage,cvPoint(20,200),cvPoint(200,300),Scalar(0,255,255),1,1,0);
	
	imshow("matImage",matImage);
	cvShowImage("IplImage",iplImage);
	waitKey();
	return 0;
}
結果:


cvLine

函式原型:void cvLine( CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1, int line_type=8, int shift=0 );
  • img 影象。
  • pt1 線段的第一個端點。
  • pt2 線段的第二個端點。
  • color 線段的顏色。
  • thickness 線段的粗細程度。
  • line_type 線段的型別。 8 (or 0) - 8-connected line(8鄰接)連線 線。 4 - 4-connected line(4鄰接)連線線。 CV_AA - antialiased 線條。
shift 座標點的小數點位數。 函式cvLine 在影象中的點1和點2之間畫一條線段。線段被影象或感興趣的矩形(ROI rectangle)所裁剪。對於具有整數座標的non-antialiasing 線條,使用8-連線或者4-連線Bresenham 演算法。畫粗線條時結尾是圓形的。畫 antialiased 線條使用高斯濾波。要指定線段顏色,使用者可以使用使用巨集CV_RGB( r, g, b )。 而且指定線條顏色的時候用到的巨集CV_RGB(r,g,b)定義為#define CV_RGB( r, g, b ) cvScalar( (b), (g), (r), 0 ),由此可見,實際上起作用的顏色是看cvScalar中的b,g,r順序,線段顏色就不言而喻了