代碼解析
在繪制文字時主要應(yīng)用putText函數(shù)來顯示文字
putText函數(shù)
putText(InputOutputArray img,// 創(chuàng)建的空圖像
? ? ? ? ? ? ? constString& text,// 要顯示的內(nèi)容(中文不知道怎么弄)
? ? ? ? ? ? ? ?Point org,// 顯示字體的左下角位置(用來控制文字在圖像中的位置)
? ? ? ? ? ? ? ?int fontFace,// 字體的樣式
? ? ? ? ? ? ? ?double fontScale,// 字體大小
? ? ? ? ? ? ? ? Scalar color,// 字體顏色
? ? ? ? ? ? ? ? ? int thickness =1,// 字體粗細
? ? ? ? ? ? ? ? ? ?int lineType = LINE_8,// 線型
? ? ? ? ? ? ? ? ? ?bool bottomLeftOrigin =false)// 這個設(shè)為 true 字體就倒置了
在OpenCV的庫中提供的8種字體樣式
#defineCV_FONT_HERSHEY_SIMPLEX? ? ? ? 0
#defineCV_FONT_HERSHEY_PLAIN? ? ? ? ? 1
#defineCV_FONT_HERSHEY_DUPLEX? ? ? ? ? 2
#defineCV_FONT_HERSHEY_COMPLEX? ? ? ? 3
#defineCV_FONT_HERSHEY_TRIPLEX? ? ? ? 4
#defineCV_FONT_HERSHEY_COMPLEX_SMALL? 5
#defineCV_FONT_HERSHEY_SCRIPT_SIMPLEX? 6
#defineCV_FONT_HERSHEY_SCRIPT_COMPLEX? 7
iOS中實現(xiàn)代碼
創(chuàng)建空圖像
RNG rng(0xFFFFFFFF);
Mat image = Mat::zeros(self.view.bounds.size.width, self.view.bounds.size.height, CV_8SC3);
調(diào)用顯示文字的方法
writeRandomText(image, rng);
顯示到UIImageView
imagView1.image = MatToUIImage(image);
顯示文字的方法
void writeRandomText(Mat& image,RNG rng)
{
int lineType = 8;// 線形
cv::Point point;
for (int i = 0; i < 5; i++) {
point.x = rng.uniform(1, 100);
point.y = rng.uniform(1,400);
double fontScale = rng.uniform(1, 5);
putText(image, "fuck you", point, CV_FONT_BLACK, fontScale, randomColor(rng),lineType,false);
}
}
顯示效果
參考資料