OpenCVSharp跑一遍OpenCV官方教程(全为手敲代码,如有雷同都是我的错)
随机数产生及图像上写文字
OpenCV教程链接:https://docs.opencv.org/4.5.0/df/d61/tutorial_random_generator_and_text.html
核心函数:
- RNG
- PutText
using OpenCvSharp;
namespace ConsoleApp1
{
public class tutorial2:ITutorial
{
private int rows = 300, cols = 500;
private int x_1 = 0, x_2 = 500;
private int y_1 = 0, y_2 = 300;
private int NUMBER = 100;
private int showtime = 100;
public void Run()
{
RNG rng = new RNG( 0xFFFFFFFF );
Mat image = Mat.Zeros(rows, cols, MatType.CV_8UC3);
Drawing_Random_Lines(image, "Random Lines", rng);
Displaying_Random_Text(image, "Random Text", rng);
Displaying_Big_End(image, "Big End", rng);
//Cv2.WaitKey(0);
}
private void Drawing_Random_Lines(Mat image, string window_name, RNG rng)
{
Point pt1 = new Point();
Point pt2 = new Point();
for (int i = 0; i < NUMBER; i++)
{
pt1.X = rng.Uniform(x_1, x_2);
pt1.Y = rng.Uniform(y_1, y_2);
pt2.X = rng.Uniform(x_1, x_2);
pt2.Y = rng.Uniform(y_1, y_2);
Cv2.Line(image, pt1, pt2, randomColor(rng), rng.Uniform(1, 10), LineTypes.Link8);
Cv2.ImShow(window_name, image);
if (Cv2.WaitKey(showtime) > 0)
break;
}
}
private Scalar randomColor(RNG rng )
{
uint icolor = (uint)rng;
return new Scalar(icolor & 255, (icolor >> 8) & 255, (icolor >> 16) & 255);
}
private void Displaying_Random_Text(Mat image, string window_name, RNG rng)
{
for (int i = 1; i < NUMBER; i++)
{
Point org = new Point();
org.X = rng.Uniform(x_1, x_2);
org.Y = rng.Uniform(y_1, y_2);
Cv2.PutText(image, "Testing text rendering", org, (HersheyFonts)rng.Uniform(0, 8),
rng.Uniform(0, 100) * 0.05 + 0.1, randomColor(rng), rng.Uniform(1, 10), LineTypes.Link8);
Cv2.ImShow(window_name, image);
if (Cv2.WaitKey(showtime) > 0)
break;
}
}
private void Displaying_Big_End(Mat image, string window_name, RNG rng)
{
int baseline;
Size textsize = Cv2.GetTextSize("OpenCV forever!", HersheyFonts.HersheyComplex, 2, 5, out baseline);
Point org = new Point( (cols - textsize.Width) / 2, (rows - textsize.Height) / 2 );
Mat image2;
for (int i = 0; i < 255; i += 2)
{
image2 = image - Scalar.All(i);
Cv2.PutText(image2, "OpenCV forever!", org, HersheyFonts.HersheyComplex, 2,
new Scalar(i, i, 255), 5, LineTypes.Link8);
Cv2.ImShow(window_name, image2);
if (Cv2.WaitKey(showtime) > 0)
break;
}
}
}
}