1. 程式人生 > >關於VC封裝DLL, 影象傳遞的方法

關於VC封裝DLL, 影象傳遞的方法

大家都會想要把HALCON使用VC編寫演算法封裝成DLL(別人VB, Delphi, C#呼叫),  所以總結Halcon和VC DLL影象資料怎麼傳遞的。注意各種開發語言處理過程,影象都應轉成BMP格式8或24點陣圖像,只有bitmap才可以把畫素分解成R, G, B,GRAY四中8點陣圖格式,相信這種處理方式才是標準的和可拓展,即可使用halcon處理,同時可以編寫自己的演算法。  //建議不要使用halcon自帶影象採集運算元, 採集影象(Hdevelop開發除外), 最好使用相機供應商提供SDK來開發, 這樣程式才可把控,靈活除錯。  //1. 標頭檔案定義  unsigned char  * PHalconImage  ;  //全域性影象資料變數int Img_width ;               //全域性變數影象寬  int Img_height ;             //全域性變數影象寬  //2. VC影象資料傳遞函式,外部傳入影象緩衝資料引數 Imgbuf, 影象寬WIDTH, 影象高WIDTHHAL_PROCESS_API bool Hal_Read_Imagebuf(unsigned char  * Imgbuf, int WIDTH, int HEIGHT)  { try   {   Img_width =WIDTH;   Img_height = HEIGHT;   if ( Imgbuf == NULL ) return false;   if (PHalconImage != NULL)   { delete [] PHalconImage;   }   PHalconImage = new unsigned char[Img_width * Img_height];   /*注意hancon只處理8點陣圖像, 所以Imgbuf必須是8位的資料影象,                (注意24點陣圖像處理需要分解三個8位R ,G,  B緩衝區,利用halcon運算元gen_image3合成                   資料處理方式一樣)*/ int i, j;     for (i=0; i< Img_height; i++) {   for (j=0; j< Img_width ; j++) {   PHalconImage[i * Img_width + j ] = Imgbuf[i * Img_width + j];  }   } }      catch(...)   { return false;   } return true;  }  //3. halcon獲取很簡單   gen_image1(&Image, "byte", (HTuple)Img_width, (HTuple)Img_height, (long)PHalconImage);  //4. 其它就halcon處理image方式一致