Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using OpenCvSharp;
- using OpenCvSharp.Extensions;
- namespace Vaizdai2
- {
- public partial class Form1 : Form
- {
- Mat image;
- Mat prcsImage;
- Thread camThread;
- public Form1()
- {
- camThread = new Thread(Run);
- // camThread.IsBackground = true;
- InitializeComponent();
- }
- private void Btn_LoadPicture_Clicked(object sender, MouseEventArgs e)
- {
- try
- {
- image = new Mat(txtBox_ImagePath.Text, ImreadModes.Color);
- pictureBox1.Image = image.ToBitmap();
- pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
- pictureBox1.Refresh();
- }
- catch (Exception)
- {
- MessageBox.Show("Invalid path name");
- }
- }
- private void Btn_Proccess_Clicked(object sender, MouseEventArgs e)
- {
- if (image != null)
- {
- prcsImage = FilteredImage(image);
- pictureBox2.Image = prcsImage.ToBitmap();
- pictureBox2.SizeMode = PictureBoxSizeMode.StretchImage;
- pictureBox2.Refresh();
- }
- }
- private Mat FilteredImage(Mat input)
- {
- //Sukuriame filtro laukeli
- Mat renata = Mat.Zeros(new OpenCvSharp.Size(3, 3), MatType.CV_32F);
- //pakeiciam nulius i 1/9. Blur filtras
- /* for (int i = 0; i < 3; i++)
- for (int j = 0; j < 3; j++)
- renata.Set<Vec2f>(i, j, new Vec2f(0.1f, 0.1f));*/
- Random rnd = new Random();
- float a = rnd.Next(-10, 10);
- renata.Set<Vec2f>(0,0, new Vec2f(-1, -1));
- renata.Set<Vec2f>(0, 1, new Vec2f(-1, -1));
- renata.Set<Vec2f>(0, 2, new Vec2f(-1, -1));
- renata.Set<Vec2f>(1, 0, new Vec2f(-1, -1));
- renata.Set<Vec2f>(1, 1, new Vec2f(8,8));
- renata.Set<Vec2f>(1, 2, new Vec2f(-1, -1));
- renata.Set<Vec2f>(2, 0, new Vec2f(-1, -1));
- renata.Set<Vec2f>(2, 1, new Vec2f(-1, -1));
- renata.Set<Vec2f>(2, 2, new Vec2f(-1, -1));
- Mat img= input;
- //Src Output
- //Blur function. Naudojant nelyginius skaicius lengviau rast centrini pikseli
- //Cv2.Blur(img, img, new OpenCvSharp.Size(11, 11));
- // Cv2.MedianBlur(img, img, 7);
- Cv2.Filter2D(img, img, img.Depth(), renata);
- img.ConvertTo(img, MatType.CV_8UC3);
- return img;
- }
- private void Run()
- {
- Thread.CurrentThread.IsBackground = true;
- VideoCapture videoCapture = new VideoCapture(1);
- while (true)
- {
- image = new Mat();
- prcsImage = new Mat();
- GC.Collect();
- while (image.Width == 0)
- videoCapture.Read(image);
- Cv2.Flip(image, image, FlipMode.Y);
- pictureBox1.Image = image.ToBitmap();
- pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
- // pictureBox1.Refresh();
- prcsImage = FilteredImage(image);
- pictureBox2.Image = prcsImage.ToBitmap();
- pictureBox2.SizeMode = PictureBoxSizeMode.StretchImage;
- // pictureBox2.Refresh();
- // videoCapture.Release();
- }
- }
- private void btn_StartStream_Clicked_Click(object sender, EventArgs e)
- {
- camThread.Start();
- }
- private void btn_StopStream_Clicked_Click(object sender, EventArgs e)
- {
- camThread.Abort();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement