首页 > 其他分享 >OpenCvSharp裁剪图像、寻找圆心

OpenCvSharp裁剪图像、寻找圆心

时间:2023-02-27 16:24:32浏览次数:32  
标签:threImg mat 裁剪 Cv2 圆心 contours OpenCvSharp rrt

裁剪图像

            OpenCvSharp.Rect rect = new OpenCvSharp.Rect(4800, 2100, 400, 900);//设置范围
            OpenCvSharp.Mat cropped_image = new OpenCvSharp.Mat(Img, rect);//裁剪图像
裁剪图像
static private void FindCenterOfCircle(Mat mat) {

            mat.ConvertTo(mat, MatType.CV_8UC1,1.0/255,0);//转换成CV_8UC1
            Cv2.ImWrite("显示原图.tiff", mat);
            
            var mean = Cv2.Mean(mat);
            //阈值处理
            double thresh = 40, maxval = 255;
            threImg = mat.Threshold(thresh, maxval, ThresholdTypes.Binary);

            //Mat threImg = new Mat();
            //Cv2.AdaptiveThreshold(mat, threImg, 255, AdaptiveThresholdTypes.MeanC, ThresholdTypes.Binary, 33, 20);
            //Cv2.ImShow("自动阈值", threImg);
            mat.Release();
            //膨胀处理
            element = Cv2.GetStructuringElement(MorphShapes.Ellipse,new Size(15,15));
            DilateImg = threImg.Dilate(element);
            Cv2.ImShow("显示膨胀", DilateImg);
            Cv2.ImWrite("保存膨胀.tiff", DilateImg);
            //threImg.Release();
            //腐蚀处理
            ErodeImg = DilateImg.Erode(element);
            Cv2.ImShow("显示腐蚀", ErodeImg);
            Cv2.ImWrite("保存腐蚀.tiff", ErodeImg);
            //寻找图像轮廓
            OpenCvSharp.Point[][] contours;
            HierarchyIndex[] hierachy;
            Cv2.FindContours(DilateImg, out contours, out hierachy, RetrievalModes.List, ContourApproximationModes.ApproxTC89KCOS);
            threImg.Release();
            DilateImg.Release();


            //根据找到的轮廓点,拟合椭圆
            for (int j = 0; j < contours.Length; j++) {
                //拟合函数必须至少5个点,少于则不拟合
                if (contours[j].Length < 5) continue;
                //椭圆拟合
                var rrt = Cv2.FitEllipse(contours[j]);
                if (rrt.Size.Width > 20 && rrt.Size.Height > 20) {
                    //imageShows[imageShows.Count - 1].AddCrossLine(rrt);
                    strLog +=  rrt.Center.X.ToString("0.00") + "," + rrt.Center.Y.ToString("0.00") + "\r\n";
                }
            }
            contours = null;
            hierachy = null;
            System.GC.Collect();
            System.GC.WaitForPendingFinalizers();
        }
寻找圆心

 

标签:threImg,mat,裁剪,Cv2,圆心,contours,OpenCvSharp,rrt
From: https://www.cnblogs.com/lizhiqiang0204/p/17160129.html

相关文章

  • OpenCvSharp 学习笔记1 -- 基本对象和常见操作
    一:Mat对象的创建OpenCvSharp版本:v4.0.30319mat对象继承了IDisposable接口,可以直接用using语句。mat对象的构造函数有十几个之多,我这里之列举常用的几个。Mat在C......
  • 裁剪序列
    裁剪序列给定一个长度为$N$的序列$A$,要求把该序列分成若干段,在满足“每段中所有数的和”不超过$M$的前提下,让“每段中所有数的最大值”之和最小。试计算这个最小值......
  • refactorObjectProperties:裁剪、添加对象字段或更新字段内容
    介绍根据模板,自动对一个JS对象的字段进行裁剪、添加或更新字段内容。比如,做一个设置功能,其设置的数据(一个对象)存储在localStorage中,如果增加了设置项或删除设置项、......
  • FFmpeg视频裁剪
    ffmpeg-iinput.mp4\-sshh:mm:ss\#起始时间点-thh:mm:ss\#持续时间(duration)-ccopy\#视频和音频编码直接copyoutput.mp4参考教程ffmpeg教程-......
  • 原生小程序使用we-cropper实现照片裁剪
    <importsrc="../we-cropper/we-cropper.wxml"/><--引入--><templateis="we-cropper"data="{{...cropperOpt}}"/><viewclass="cro......
  • js 选中文字修改:裁剪,加粗... 获得选中内容
    使用以下两个api​​MDNSelectionAPI​​​​MDNRangeAPI​​需要APIconstRange=useCallback(()=>{constselObj=window.getSelection();if(!selObj)......
  • python easyocr和cv2实现名片识别及裁剪摆正
    公司希望能做一个名片裁剪和识别功能。我来开发小程序,在寻找合适的api的途中,因嫌弃乙方弄得太慢,自己百度搞了个python版本的。很久没用python了好多基础方法都忘记了,实现的......
  • CSS 3.0中裁剪图像的特效
    在有CSS3.0之前裁剪图片实现也是颇有难度的,现在我们有了两个非常方便简单的属性可以实现裁剪,那就是object-fit和obectj-position,这两个属性可以让我们改变图片的大小,但是......
  • JavaScript插件 图片裁剪photoClip
    阅读目录​​JavaScript插件图片裁剪photoClip​​​​1、截图​​​​2、代码​​​​后台接收并处理图片代码​​JavaScript插件图片裁剪photoClip页面裁剪图片得到bas......
  • OpenGL三点求圆心
    思路先手一个平面方程三个点到圆心距离相等三个方程3-12-1联立构造构成这样的矩阵D移到右边xyz就变为半径就  ......