代码解析
在绘制文字时主要应用putText函数来显示文字
putText函数
putText(InputOutputArray img,// 创建的空图像
constString& text,// 要显示的内容(中文不知道怎么弄)
Point org,// 显示字体的左下角位置(用来控制文字在图像中的位置)
int fontFace,// 字体的样式
double fontScale,// 字体大小
Scalar color,// 字体颜色
int thickness =1,// 字体粗细
int lineType = LINE_8,// 线型
bool bottomLeftOrigin =false)// 这个设为 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中实现代码
创建空图像
RNG rng(0xFFFFFFFF);
Mat image = Mat::zeros(self.view.bounds.size.width, self.view.bounds.size.height, CV_8SC3);
调用显示文字的方法
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);
}
}
显示效果
参考资料
网友评论