halcon基本示例1

1.得到图像任意部分。生成另一张图片

void test()
{
    HImage image;
    image.ReadImage("1.jpg");//读图片
    Hlong width, height;
    image.GetImageSize(&width, &height);//获得图像尺寸
    HWindow w(0, 0, width, height);//定义窗口
    w.SetColor("red");
    w.DispColor(image);//显示图片
    HRegion region = w.DrawRegion();//绘制窗口
    HImage result = image.ReduceDomain(region);//保留选定部分
    HImage re = result.CropDomain();//获得上一步选定区域图像的剪裁,得到该区域的最小外接矩形
    w.ClearWindow();
    w.DispColor(result);
    w.Click();
}
void test()
{
    HImage image;
    image.ReadImage("1.jpg");
    Hlong width, height;
    image.GetImageSize(&width, &height);
    HWindow w(0, 0, width, height);
    w.SetColor("red");
    w.DispColor(image);
    HRegion region = w.DrawRegion();
    HImage result = region.AddChannels(image);//根据指定的区域,选择该区域图像的灰度值,得到新的图像
    w.ClearWindow();
    w.DispColor(result);
    w.Click();
}

2.灰度化

void test()
{
    HImage image;
    image.ReadImage("1.jpg");
    Hlong width, height;
    image.GetImageSize(&width, &height);
    HWindow w(0, 0, width, height);

    w.DispColor(image);
    w.Click();
    HImage result1 = image.Rgb1ToGray();//转换24位彩色图为灰色图
    HImage red, green, blue;
    red = image.Decompose3(&green, &blue);//将三通道图像转化为三个单通道图像(R,G,B)
    HImage result2=red.Rgb3ToGray(green, blue);//将三幅单通道图像合并为一幅单通道灰度图像
    w.ClearWindow();
    w.DispImage(result);//注意,彩色图与灰度图显示语句不同
    w.Click();
}

3.灰度值取反

void test()
{
    HImage image;
    image.ReadImage("1.jpg");
    Hlong width, height;
    image.GetImageSize(&width, &height);
    HWindow w(0, 0, width, height);

    w.DispColor(image);
    w.Click();
    HImage gray = image.Rgb1ToGray();//转换24位彩色图为灰色图
    w.ClearWindow();
    w.DispImage(gray);//注意,彩色图与灰度图显示语句不同
    w.Click();
    HImage result = gray.InvertImage();
    w.ClearWindow();
    w.DispImage(result);//注意,彩色图与灰度图显示语句不同
    w.Click();
}

4.设置像素值

void test()
{
    HImage image;
    image.GenImageConst("byte", 500, 500);
    HTuple width, height;
    HTuple s;
    image.GetImageSize(&width, &height);

    HWindow w(0, 0, width, height);
    for (int i = 100; i 1; i++)
    {
        for (int j = 200; j < height-1; j++)
        {
            image.SetGrayval(i, j, (i + j) % 256);
        }
    }
    w.DispImage(image);
    w.Click();

}

5.根据输入图像类型,创建一个指定像素的纯色图像

void test()
{
    HImage image;
    image.GenImageConst("byte", 500, 500);
    HImage result=image.GenImageProto(170);
    HTuple width, height;
    HTuple s;
    image.GetImageSize(&width, &height);
    HWindow w(0, 0, width, height);
    w.DispImage(image);
    w.Click();
    w.DispImage(result);
    w.Click();

}

6.保存图片

void test()
{
    HImage image;
    image.GenImageConst("byte", 500, 500);
    HImage result=image.GenImageProto(170);
    HTuple width, height;
    HTuple s;
    image.GetImageSize(&width, &height);
    result.WriteImage("jpeg", 0, "write");
    HWindow w(0, 0, width, height);
    w.DispImage(image);
    w.Click();
    w.DispImage(result);
    w.Click();

}

7.将窗口内容保存为图像

void test()
{
    HWindow w(0, 0, 500, 500);
    HRegion region=w.DrawRegion();
    w.SetColor("red");
    w.DispRegion(region);
    w.Click();
    w.DumpWindow("jpeg", "window");
}

下面列举一些常用的图像处理算子

TransFromRgb:把图像从RGB颜色空间转换到任意颜色空间
TransToRgb:把图像从任意颜色空间转换到Rgb颜色空间

InvertImage:图像反转(灰度值取反图像)

GetImagePointer1:获取单通道图像的指针
GetImagePointer3:获取3通道图像的指针(三个指针,分别是R,G,B)
GenImage1:根据指定指针和类型,获取单通道图像
GenImage3:根据指针和类型,获取3通道图像
GenImageConst:创建一个图像,并为图像所有像素指定同一个灰度值
GenImageProto:创建一个图像,并为所有像素指定同一个像素值
GetImageSize:获得像素尺寸
WriteImage:根据指定图像格式,保存图像
GetGrayval:获得指定点的像素值
SetGrayval:设置指定点的像素值
DumpWindow:把窗口内容以图像文件格式保存
DumpWindowImage:把窗口内容保存到一幅图像对象上
CopyImage:复制图像








你可能感兴趣的:(halcon)