å¨HALCON/.NETï¼æ们å¯ä»¥ç¨è¿ä¸ä¸ªç±»çå®ä¾
ï¼instances of classï¼æ¥è°ç¨HALCONç®åãå¨HalconDotNetå¼ç¨éï¼ä¹å°±æ¯å¨æé¾æ¥åºéå
许å¤å®ä¾åä¸ä¸ªç±»æ¹æ³ï¼è¿äº
æ¹æ³å¯è½æ¯éè½½çï¼éæçHALCONç®åæ们å¯ä»¥ç´æ¥éè¿ç±»åæ¥è°ç¨ï¼è¿äºæ¹æ³å
æ¬HALCONéææçç®åï¼ï¼èééæçæ¹æ³å¿
é¡»è¦éè¿å®ä¾åä¸ä¸ªç±»
åæå¯ä»¥ä½¿ç¨ï¼é常HALCON/.NETå°è£
äºä¸ä¸ªç±»çå®ä¾åæ¹æ³ä»¥åç±»æ¹æ³ã
ä¾å¦å¨C++ä¸ï¼å¯ä»¥ä½¿ç¨ä»¥ä¸ä¸¤ç§æ¹æ³ï¼
1. C++ï¼ç®å模å¼ï¼
éè¿ä»£ç 导åºï¼ä»¥C++为ä¾ï¼é»è®¤å¯¼åºä¸ºç®ååçè¯æ³ç»æï¼èéé¢å对象çï¼å¨æ¤æ¨¡å¼ä¸ï¼å
¨é¨å½æ°å£°æ为å
¨å±ç±»åï¼æ°æ®ç±»ååªéè¦ç¨HobjectãHTuple两类类åè¿è¡å£°æï¼
2. C++ï¼é¢å对象ï¼
å¯ä»¥ä»¥é¢å对象çæ¹å¼éå代ç ï¼ä¹å³å©ç¨ç±»åç±»çæåå½æ°ï¼å¨è¿ç§æ¨¡å¼ä¸ï¼æ§å¶åéçç±»åä»æªHTupleï¼èå¾å½¢æ°æ®å¯ä»¥ç±å¤ç§ç±»åï¼å¦HImageçï¼
HALCONæå建议使ç¨è
使ç¨ç¬¬äºç§æ¹æ³ã
ä¾å¦æ们使ç¨ç¬¬äºç§æ¹æ³å®ç°æåå¾ååºåï¼imagesequenceï¼é第ä¸å¼ å¾åï¼å¹¶ä¸å°ä»æ¾ç¤ºå¨HWindowControlçªå£ä¸ã代ç æ¯ï¼
[cpp] view plaincopy
private HWindow Window;
private HFramegrabber Framegrabber;
private HImage Img;
Window= WindowControl.HalconWindow;
Framegrabber= new HFramegrabber("File", 1, 1, 0, 0, 0, 0, "default",
-1,"default", -1, "default",
"board/board.seq","default", 1, -1);
Img= Framegrabber.GrabImage();
Img.DispObj(Window);
GrabImageç®åæ¯éè¿HFramegrabberçå®ä¾æ¥è°ç¨çãå¦æä½ æ¯ä¸ä¸ªæç»éªçHALCON使ç¨è
ï¼ä¹è®¸ä½ å·²ç»çåºæ¥HFramegrabberçæé å½æ°è°ç¨äºOpenFramegraberç®åã
ä½æ¯å¯¹äºæ°ææ¥è¯´ï¼å¯è½ååæ¥è§¦Halconï¼å¯¹äºHalconç®åè¿å¤äºçæé¶æ®µï¼ä»Hdevelopä¸ç´æ¥å°åºæ¥ç代ç ä¹æ¯ç´æ¥ä½¿ç¨éæç±»ãé£ä¹å»ºè®®å
使ç¨ç¬¬ä¸ç§æ¹æ³ï¼ä½ åªéè¦æç½éè¿HOperatorSetè¿ä¸ªç±»ä½ å¯ä»¥è°ç¨ä»»ä½ä¸ä¸ªHALCONç®åã
ä¸é¢æ们æ¥çä¸ä¸å°åºæä¹æ ·è°ç¨ä¸ä¸ªç®åã以GrabImageç®å为ä¾ï¼
[cpp] view plaincopy
static void HOperatorSet.GrabImage (out HObject image, HTuple acqHandle)//éææ¹æ³ç´æ¥è°ç¨ç®åï¼å
å«çåæ°åhalconç®ååæ°å®å
¨ç¸å
void HImage.GrabImage (HFramegrabber acqHandle)//ç±»ä¸å°è£
çç±»æ¹æ³ï¼è¦å
å®ä¾åç±»åæå¯ä»¥ä½¿ç¨
HImage HFramegrabber.GrabImage ()//éè½½çæ¹æ³
image(output_object) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . image ; HImage
acqHandle(input_control) . . . . . . . . . . . . . . . . . . . . . . . . . .framegrabber ; HFramegrabber / HTuple
[cpp] view plaincopy
æ们å¯ä»¥çåºï¼ç®åå¯ä»¥éè¿ä¸ä¸ªç±»è¿è¡è°
ç¨ï¼HOperatorSet, HImage,åHFramegrabberãå
¶ä¸ç¬¬ä¸ç§éè¿HOperatorSetè°ç¨ä¸»è¦æ¯ç¨å¨å¯¼åºç
HDevelopä¸(å¦æä½ å¯¼åºç¨åºçè¯å°±ä¼çå°)ï¼ä¹æ¯å»ºè®®æ°æ使ç¨çæ¹æ³ãèçæäºä¹åä¸è¬æ们å¨åç¨åºæ¶å»ºè®®ä½¿ç¨å¦å¤ä¸¤ç§æ¹å¼ï¼å°±åä¸é¢è¿æ ·è¿è¡è°
ç¨ï¼
[cpp] view plaincopy
HImage Image1;
HImage Image4 = newHImage();
HFramegrabberFramegrabber =
newHFramegrabber("File", 1, 1, 0, 0, 0, 0, "default", -1,
"default",-1, "default", "board/board.seq", "default", -1,-1);
Image1 =Framegrabber.GrabImage();
HImage Image3 = null;
éè¦æ³¨æçæ¯éè¿
HFramegrabberè°ç¨è¿åæ¹æ³çå¼ï¼èéè¿HImageè°ç¨æ²¡æè¿åå¼èæ¯è°ç¨çç±»å®ä¾è¢«ä¿®æ¹,ä¹å°±æ¯HImage对象被修æ¹ãé常ï¼è°ç¨ç±»å®
ä¾ä¸ä¼è¢«ä¸ä¸ªç®åæä¿®æ¹ï¼é¤äºè¢«ä¸é¢æçå°çâç±»æé å¨âï¼constructor-likeï¼ç®åè°ç¨ã
ä¸äºç®ååCountSecondså¯ä»¥å½åç±»æ¹æ³æ¥ä½¿ç¨ï¼ä¾å¦ï¼ä½ å¯ä»¥ç´æ¥éè¿ç±»åè°ç¨å®ä»¬èä¸ç¨çæä¸ä¸ªå®ä¾ï¼
[cpp] view plaincopy
double S1, S2;
S1 =HSystem.CountSeconds();
è¿æ¯å 为è¿äºç®å声æåé¢é½æstaticå
³é®åï¼
[cpp] view plaincopy
static void HOperatorSet.CountSeconds (outHTupleseconds)
static double HSystem.CountSeconds()<span style="font-family:'Times New Roman'; font-size:14px; line-height:21px"> </span>
ä¸é¢æ们çä¸ä¸ç±»ççå½å¨æï¼ä»å£°æï¼Declarationï¼å°ç»ç»ï¼Finalizationï¼
ä¸é¢ç声æä»
ä»
声æäºä¸ä¸ªç±»HImageçåéï¼è没ææåä»»ä½ç对象ï¼
[cpp] view plaincopy
HImage Image1;
å¨è¿ä¸ªè¯å¥ä¸ï¼ä½ ä¸è½åªä½¿ç¨åéç´æ¥å»è°ç¨ç®åï¼æäºè¯è¨éé¢çè³ä¸è½å¤å°å®ç¨åä¸ä¸ªè¾åºåæ°ï¼ä¾å¦VB 2005ï¼ãåªæå
ç»å®ä¸ä¸ªå¾å对象ï¼ä¾å¦ï¼
[cpp] view plaincopy
Image1 =Framegrabber.GrabImage();
ä½ ä¹å¯ä»¥å¨å£°æçæ¶ååå§åä¸ä¸ªåéï¼
[cpp] view plaincopy
HImage Image2 =Framegrabber.GrabImage();
[cpp] view plaincopy
<span style="font-family:Arial,Helvetica,sans-serif"></span><pre name="code" class="cpp">HImage Image3 = null;</pre>
ä½ å¯ä»¥éè¿ä¸ä¸ªIsInitializedæ¹æ³æ¥æ£éªä¸ä¸ªç±»å®ä¾æ¯å¦è¢«åå§åã
ä½æ¯ä½¿ç¨æé å½æ°ï¼Constructorsï¼åç对象就å¯ä»¥äºï¼
ä¸é¢çå¼åæ¯å©ç¨ç±»HImage空çæé å½æ°æ¥åå§åä¸ä¸ªç±»åé
[cpp] view plaincopy
HImage Image4 = new HImage(); <span style="font-family:'Times New Roman'; font-size:14px"> </span>
ç±»å®ä¾å¯ä»¥ç¨æ¥è°ç¨â类似æé å½æ°âç®ååGrabImageï¼ç¨æä½çä¸å¼ å¾çåå§åç±»åéï¼
[cpp] view plaincopy
Image4.GrabImage(Framegrabber);
é¤äºç©ºçæé å¨ï¼å¤§é¨åHALCON/.NETç±»æä¾ä¸ä¸ªæè
æ´å¤çæé å¨æ¥åå§ååºäºHALCONç®åç对象ãä¾å¦ï¼HImageæä¾äºä¸ä¸ªæé å¨ï¼
[cpp] view plaincopy
HImage Image5 = newHImage("fuse");<span style="font-family:'Times New Roman'; font-size:14px; line-height:21px"> </span>
reference manualåå³é®go to definitionæ¯å¾å¥½çåèèµæã
å
³äºFinalizers
å¨.NETä¸ç¨åºåä¸éè¦èèå
å管çæ¹é¢çäºæ
ï¼å 为å®æèªå¨åå¾åæ¶åæ¶åªäºä¸å使ç¨ç对象ãHALCON/.NETå®å
¨éµå¾ªè¿ç§è§åéè¿æä¾ææç±»çåæ¶å¨ï¼æ以ä¸éè¦ç®¡çèµæºï¼ä¾å¦ï¼ä¸ä¸ªå¾åéé设å¤çè¿æ¥ä¼è¢«èªå¨æ£ç¡®çå é¤ã
对äºå¤§é¨åç±»ï¼åæ¶å¨èªå¨è°ç¨åéçç®ååCloseFramegrabberæ¥éæ¾èµæºãè°ç¨çç®åå¨ä¸ä¸ªåèæå页ä¸åäºåºæ¥ï¼ä¾å¦HFramegrabberï¼ãè¿ä¸ªç®åä¸å¯ä»¥éè¿ç±»æ¥è°ç¨ï¼å¨ç¸åºçåèæåæ¡ç®ä¸å¯ä»¥çå°ï¼
[cpp] view plaincopy
static void HOperatorSet.CloseFramegrabber (HTupleacqHandle)
ä¹å°±æ¯è¯´ä½ 没æå¿
è¦è°ç¨è¿æ ·ä¸ä¸ªç®åï¼å¦æä½ æ³ç¨å«çåæ°ä»æ°è¿è¡è¿æ¥ï¼å®ä¼èªå¨æ§è¡ã
注æå½ç¨HFramegrabberä¸è¬çç±»æ¶ä¸è½ä½¿ç¨HOperatorSetæ¥å
³éæè
æ¸
é¤ç®åã
ä½æ¯å¯¹äºåå¾åè¿ç§æ°æ®åéï¼å®ä»¬å
å«çåªæ¯å¼ç¨ï¼å¯¹äºä»ä»¬æåçå
ååå¾åæ¶æºå¶ä¹è®¸ä¸ä¼ç´æ¥æ¸
é¤ï¼è¿äºå°±éè¦æå¨æ¸
é¤ï¼
æä¸ç§æ¹æ³æ¯å¨å¤çå®äºä»¶åç´æ¥è°ç¨GCæ¸
é¤ï¼
[cpp] view plaincopy
private void Timer_Tick(object sender, System.EventArgs e)
{
Action();
GC.Collect();
GC.WaitForPendingFinalizers();
}
å¦ä¸ç§æ¹æ³æ¯ç´æ¥è°ç¨èªå¸¦çéæ¯æ¹æ³ï¼
[cpp] view plaincopy
HImage Image = new HImage("fuse");
...
Image.Dispose();
温馨提示:答案为网友推荐,仅供参考