gray_dilation_rect

简介: gray_dilation_rect

灰度图膨胀。图像的宽度和高度不变。

简单情况

下面创建一个3*3的灰度图,左上角为1,右下角为3,其它为0。

byte[] barr = new byte[9];
            barr[0] = 1;
            barr[8] = 3;
            var img = WHCSHalCon.Base.CreateByteImage(barr, 3);
            HOperatorSet.GrayDilationRect(img, out img, 2, 2);
            HTuple widht, height;
            HOperatorSet.GetImageSize(img, out widht, out height);
            HObject region;
            HOperatorSet.Threshold(img, out region, 1, 1);
            HTuple rows, cols;
            HOperatorSet.GetRegionPoints(region, out rows, out cols);
            var area = WHCSHalCon.Base.Area(region);

运行结果:

灰度为1的点三个 (0,0),(0,1),(1,0)

       HOperatorSet.Threshold(img, out region, 3, 3);

灰度为3的点四个:(1,1),(1,2),(2,1),(2,2)

覆盖左上?

会不会是右上覆盖左上?

         barr[0] = 3;

           barr[8] = 1;

灰度为3的点四个(0,0) (0,1) (1,1),(1,2)

灰度为1的点三个(1,2) (2,1) (2,2)

中间的点可能被左上角覆盖,也可能被右下角覆盖。

结论及验证

查了官方英文资料,加上自己的测试:

各点的灰度 取 以自己为中中心,宽为maskWidth*2-1,高为ma0skHeight*2-1的矩形内的最大灰度值

下面来测试。

创建一个5*5的灰度图,中间3*3灰度为0,其它为1。看2*2的坐标灰度是多少?

byte[] barr = new byte[25];
            for(int i = 0; i < 5; i++ )
            {
                for(int j = 0; j < 5; j++ )
                {
                    barr[5 * i + j] = (0 == i * j * (i - 4) * (j - 4)) ? (byte)1 : (byte)0;
                }
            }
            var img = WHCSHalCon.Base.CreateByteImage(barr, 5);
            HOperatorSet.GrayDilationRect(img, out img, 2, 2);
            HObject regionCenter;
             HOperatorSet.GenRectangle1(out regionCenter, 2, 2, 2, 2);
            HTuple tMean, tmp;
            HOperatorSet.Intensity(regionCenter, img, out tMean, out tmp);

tMean为0

中间3*3任意一格的灰度设置成1,则(2,2)的灰度变成1。

byte[] barr = new byte[25];
            for(int i = 0; i < 5; i++ )
            {
                for(int j = 0; j < 5; j++ )
                {
                    barr[5 * i + j] = (0 == i * j * (i - 4) * (j - 4)) ? (byte)1 : (byte)0;
                }
            }
            barr[5 * 1 + 1] = 1;
            var img = WHCSHalCon.Base.CreateByteImage(barr, 5);
相关文章
|
6月前
|
存储 计算机视觉 Python
BGR与RGB
BGR与RGB
1747 1
|
1月前
|
计算机视觉
Opencv学习笔记(五):cv2.putText()和cv2.rectangle()详细理解
这篇文章详细介绍了OpenCV库中的`cv2.putText()`和`cv2.rectangle()`函数的使用方法,并通过一个实战例子展示了如何使用这些函数在图像上绘制文字和矩形框。
137 0
Opencv学习笔记(五):cv2.putText()和cv2.rectangle()详细理解
|
1月前
利用ellipse and rectangle 画图
利用ellipse and rectangle 画图。
18 6
|
6月前
GRAY色彩空间
【5月更文挑战第13天】GRAY色彩空间。
49 1
|
5月前
|
Python
Pygame基础5-Surface & Rect
Pygame基础5-Surface & Rect
|
6月前
|
前端开发
背景图像[background-image]
背景图像[background-image]。
54 1
|
6月前
利用ellipse and rectangle画图
利用ellipse and rectangle画图。
46 7
|
6月前
|
计算机视觉 Python
opencv cv::Range()和cv::Rect()用于crop来获得感兴趣区域
opencv cv::Range()和cv::Rect()用于crop来获得感兴趣区域
226 0
|
Android开发
详解Bitmap之ARGB_8888/RGB_565/ALPHA_8/ARGB_4444
有时会看到别人使用bitmap是用到ARGB_8888/RGB_565这类参数,那么这些参数是什么?对bitmap有什么影响?
552 0