目錄
1.繪圖練習
2.灰度練習
3.動態文字練習
4.撰寫繪圖程式
5.計算直線的像素數
5.1 什么情況下4連通和8連通能得到相同的像素數?
5.2 哪一種連通方式有更多的像素數?
5.3 在4連通和8連通的兩種情況下,對于一條給定的直線段,直線長度和使用迭代器計算出的像素數之間的區別是什么?哪一種連接更接近真實的直線長度?
1 繪圖練習
//1.繪圖練習
//1.1 繪制圓
Mat drawMat1(300,300,CV_8UC3,Scalar(0));
circle(drawMat1, Point(150, 150), 50, Scalar(255, 0, 255),
2, //寬度為2個像素長度
8, //輪廓連通方法 4連通或者8連通
0 //圓心移位shift tarVal=priVal/pow(2,shift) =75
);
circle(drawMat1, Point(150, 150), 50, Scalar(0, 0, 255),
2, //寬度為2個像素長度
8, //輪廓連通方法 4連通或者8連通
1 //圓心移位shift tarVal=priVal/pow(2,shift) =75
);

//1.2 判斷直線與矩形的關系:只有當直線完全位于矩形之外才會回傳 false
Mat drawMat2(300, 300, CV_8UC3, Scalar(0));
Rect rect(100,100,100,100);
rectangle(drawMat2,rect,Scalar(0,0,255),2,8);
if (clipLine(rect, Point(50, 50), Point(150, 150)))
line(drawMat2, Point(50, 50), Point(150, 150), Scalar(255, 0, 255), 2, 8);

//1.3 繪制橢圓
Mat drawMat3(300, 300, CV_8UC3, Scalar(0));
RotatedRect rect1(Point(50, 50), Point(50, 200), Point(150, 200));
ellipse(drawMat3,rect1,Scalar(255,0,255),2,8);
ellipse(drawMat3,
Point(200, 200),//中心點
Size(50, 25),//長半軸50 短半軸25
0,//長半軸夾角
0,//起始角度
360,//終止角度
Scalar(0,0,255),
2,
8
);

//1.4 基于角度對橢圓進行采樣
Mat drawMat4(300, 300, CV_8UC3, Scalar(0));
vector<Point> result;
//每隔 10°采樣一次
ellipse2Poly(Point(150,150),Size(70,50),0,0,360,10,result);
for (Point m : result) circle(drawMat4,m,1,Scalar(0,0,255),-1);

//1.5 直線迭代器
Mat drawMat5(300, 300, CV_8UC1, Scalar(0));
LineIterator line(drawMat5,Point(100,100),Point(200,200),8,false);
for (int i = 0; i < line.count; i++, line++)
drawMat5.at<uchar>(line.pos().y, line.pos().x) = line.pos().y;

//1.6 繪制文字
Mat drawMat6(300, 300, CV_8UC1, Scalar(0));
String text = "Hellow World !";
// 左上角坐標(50,150) 手寫體
putText(drawMat6,text,Point(50,150),
FONT_HERSHEY_SCRIPT_COMPLEX,1,Scalar(255),2,8);
int y_base;
int* p = &y_base;
Size size=getTextSize(text, FONT_HERSHEY_SCRIPT_COMPLEX, 1, 2, p);

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/250768.html
標籤:其他
上一篇:吳恩達機器學習(線性回歸)
