免費論壇 繁體 | 簡體
Sclub交友聊天~加入聊天室當版主
分享
返回列表 回復 發帖

調用OPENCV參考

void _stdcall cvCenterOfGravity(LPSAFEARRAY FAR *image_in,  unsigned short Bmp_Width, unsigned short Bmp_Height)
{
         
         long lElements;                                        HRESULT lResult;                                                        // return code for OLE functions
         Color_RGB *pArray_in;                                                // pointer to the elements of the array
         
         

         // how many elements are there in the array
         // lElements=(*image_in)->rgsabound->cElements;
         lElements=Bmp_Width*Bmp_Height;
                 
         // locking the array before using its elements
         lResult=SafeArrayLock(*image_in);
         // using the array
         pArray_in=(Color_RGB*) ((*image_in)->pvData);        
         IplImage *src=cvCreateImage( cvSize(Bmp_Width,Bmp_Height), IPL_DEPTH_8U, 3 );
         memcpy(src->imageData,pArray_in ,lElements*3);                  
         lResult=SafeArrayUnlock(*image_in);


      /* 放你自己的程序了 OpenCV处理*/



}


为了方便, 我们是用二维数组传递图像的, 所以用safearray类型来传递.
通过memcpy就把数据拷贝到IplImage, 接下来就是OpenCV的代码了.
我们用OpenCV开发了一套完整的图像处理的DLL公司内部用, 感觉效果
非常好, 谢谢OpenCV.



在VB里边用回调感觉都可以,关键注意你的参数传递是传地址还是传数值,
如果是传地址,其实就是VC里边的指针了,可以在VB里边用VarPtr得到变量
的地址。

感觉VB、VC交叉调用多了,掌握上面的关键点,就可以随意在VB或者VC(一般
封装成DLL)之间来回任意跨越。

因为VB界面做起来方便,所以我一般用VB做界面,其它基本用VC,消息传递
回调等都感觉没有太多区别。VB里边用指针挺爽的
返回列表