将halcon中代码导出到vs2013执行

一、.标准开发流程
这里写图片描述

二、halcon中的快捷键
1. 另起一行但不运行程序
直接敲击回车,程序将运行。若想在不运行程序的情况另起一行,shift+回车。
2. 重置程序执行(重置变量)
程序中的变量一旦被赋值,其将一直保持该值。若想重置变量并重新执行程序,需首先通过菜单栏“执行”–“重置程序执行”来重置变量。
3. 在图形窗口中只显示某一个图形变量
图形窗口左上角有“清空图形窗口”图标,清空图形窗口后,在图形窗口中单击右键,选择“显示”某一图形变量。前提是,该图形变量已经被赋值。
4. 注释与取消注释快捷键
F4快速注释,F3取消注释。
5. 在图形显示窗口中查看鼠标处信息
按Ctrl键,同时在图形显示窗口中移动鼠标,可以显示鼠标位置以及鼠标所在处的图像灰度值。

三、导出文件
1.Halcon中写完程序,单击:文件—导出
这里写图片描述
2.弹出对话框中选择格式为c++/halcon
3.自动生成代码.cpp文件
三、创建vs文件
1.建立一个控制台应用工程ConsoleApplication1
在工程中打开刚刚从halcon中导出的cpp文件,然后要删减掉么有用的东西,然后把留下的代码复制到ConsoleApplication1.cpp中

#include "stdafx.h"
#include "HalconCpp.h"
using namespace HalconCpp;

void action()
{

    // Local iconic variables
    HObject  ho_Image, ho_Region, ho_ConnectedRegions;
    HObject  ho_circleout, ho_ImageReduced, ho_ImageSearch, ho_ImageSearch1;
    HObject  ho_Contours;

    // Local control variables
    HTuple  hv_Width, hv_Height, hv_WindowHandle;
    HTuple  hv_Row, hv_Column, hv_Radius, hv_ModelID, hv_RowCheck;
    HTuple  hv_ColumnCheck, hv_AngleCheck, hv_ScaleR, hv_ScaleC;
    HTuple  hv_Score;

    ReadImage(&ho_Image, "C:/Users/Administrator/Desktop/电池字符识别分类/02图片/有无检测/1.jpg");
    GetImageSize(ho_Image, &hv_Width, &hv_Height);
    if (HDevWindowStack::IsOpen())
        CloseWindow(HDevWindowStack::Pop());
    SetWindowAttr("background_color", "black");
    OpenWindow(0, 0, hv_Width, hv_Height, 0, "", "", &hv_WindowHandle);
    HDevWindowStack::Push(hv_WindowHandle);
    if (HDevWindowStack::IsOpen())
        SetColor(HDevWindowStack::GetActive(), "red");
    if (HDevWindowStack::IsOpen())
        DispObj(ho_Image, HDevWindowStack::GetActive());

    Threshold(ho_Image, &ho_Region, 0, 128);
    Connection(ho_Region, &ho_ConnectedRegions);
    DrawCircle(hv_WindowHandle, &hv_Row, &hv_Column, &hv_Radius);
    GenCircle(&ho_circleout, hv_Row, hv_Column, hv_Radius);
    ReduceDomain(ho_Image, ho_circleout, &ho_ImageReduced);
    CreateAnisoShapeModel(ho_ImageReduced, "auto", HTuple(0).TupleRad(), HTuple(360).TupleRad(),
        "auto", 0.98, 1.02, "auto", 0.98, 1.02, "auto", "auto", "use_polarity", "auto",
        "auto", &hv_ModelID);
    //准备一个不可缩放比例的匹配轮廓模型

    if (HDevWindowStack::IsOpen())
        ClearWindow(HDevWindowStack::GetActive());
    if (HDevWindowStack::IsOpen())
        SetColor(HDevWindowStack::GetActive(), "blue");
    ReadImage(&ho_ImageSearch, "C:/Users/Administrator/Desktop/电池字符识别分类/02图片/有无检测/2.jpg");

    FindAnisoShapeModel(ho_ImageSearch, hv_ModelID, HTuple(0).TupleRad(), HTuple(360).TupleRad(),
        0.98, 1.02, 0.98, 1.02, 0.5, 1, 0.5, "least_squares_very_high", 0, 0.8, &hv_RowCheck,
        &hv_ColumnCheck, &hv_AngleCheck, &hv_ScaleR, &hv_ScaleC, &hv_Score);
    //函数说明:在函数图像中找出一个(不可缩放比例的)最佳匹配轮廓
    GenCircle(&ho_ImageSearch1, hv_RowCheck, hv_ColumnCheck, hv_Radius);

    GenContourRegionXld(ho_ImageSearch1, &ho_Contours, "border");
    if (HDevWindowStack::IsOpen())
        DispObj(ho_ImageSearch, HDevWindowStack::GetActive());
    if (HDevWindowStack::IsOpen())
        DispObj(ho_Contours, HDevWindowStack::GetActive());
    ClearShapeModel(hv_ModelID);
}


int main(int argc, char *argv[])
{
    int ret = 0;
    SetSystem("width", 512);
    SetSystem("height", 512);
    action();
    system("pause");
}

2.编译
控制台程序运行后会一闪而过,所以在主函数中加上一个system(“pause”);,然后可以观看效果啦
这里写图片描述
这里写图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值