| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 653 人关注过本帖
标题:请高手们帮我找一下错误,在线等, 急!!!!!
只看楼主 加入收藏
yushuihan
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-12-3
收藏
 问题点数:0 回复次数:4 
请高手们帮我找一下错误,在线等, 急!!!!!
下面是我调用API的一个类,   其中最后一个函数中调所声明的API时出错,   请高手帮忙找一下原因,急!
using   System;
using   System.Collections.Generic;
using   System.Text;
using   System.Runtime.InteropServices;


namespace   CarCardRecognise
{

        public   class   Recognise
        {
                private   const   string   dllName   =   "lpclr.dll";

                ///   <summary>
                ///     牌照识别的结果通过   VEHREC   结构返回。VEHREC   结构包含了有关车辆牌照的相关信息,包括牌照号码、牌照颜色、牌照区域、牌照图像等
                ///   </summary>
                [StructLayout(LayoutKind.Sequential)]
                public   struct   Vehrec
                {
                        [MarshalAs(UnmanagedType.ByValTStr,   SizeConst   =   16)]
                        public   byte[]   vehid;

                        public   int   time;

                        [MarshalAs(UnmanagedType.ByValTStr,   SizeConst   =   8)]
                        public   byte[]   color_plate;

                        [MarshalAs(UnmanagedType.ByValTStr,   SizeConst   =   32)]
                        public   byte[]   site;

                        [MarshalAs(UnmanagedType.ByValTStr,   SizeConst   =   16)]
                        public   byte[]   lane;

                        public   int   speed;

                        [MarshalAs(UnmanagedType.ByValTStr,   SizeConst   =   8)]
                        public   byte[]   model;

                        [MarshalAs(UnmanagedType.ByValTStr,   SizeConst   =   8)]
                        public   byte[]   color;

                        [MarshalAs(UnmanagedType.ByValTStr,   SizeConst   =   4)]
                        public   int[]   rect_plate;

                        [MarshalAs(UnmanagedType.ByValTStr,   SizeConst   =   16)]
                        public   byte[]   im_info;

                        public   int   img_cx;
                        public   int   img_cy;
                        public   char   img_type;
                        public   long   img_size;
                        public   char   flag;

                        [MarshalAs(UnmanagedType.ByValTStr,   SizeConst   =   16)]
                        public   byte[]   status;

                        [MarshalAs(UnmanagedType.ByValTStr,   SizeConst   =   16)]
                        public   byte[]   reserved;

                        [MarshalAs(UnmanagedType.ByValArray,   SizeConst   =   MAX_IMGCODE_SIZE)]
                        public   byte[]   img;
                }

                //常量定义
                private   const   int   MAX_IMGCODE_SIZE   =   32768;     //1024*32

                ///   <summary>
                ///   初始化牌照识别
                ///   </summary>
                ///   <param   name="nWidth"> </param>
                ///   <param   name="nHeight"> </param>
                ///   <param   name="Mode"> </param>
                ///   <returns> </returns>
                [DllImportAttribute(dllName)]
                internal   static   extern   int   Init(int   nWidth,   int   nHeight,   byte   Mode);
         
                ///   <summary>
                ///   牌照识别
                ///   </summary>
                ///   <param   name="pImgs"> </param>
                ///   <param   name="lpRec"> </param>
                ///   <param   name="pLUT"> </param>
                ///   <param   name="flag"> </param>
                ///   <param   name="imgrect"> </param>
                ///   <returns> </returns>
                [DllImportAttribute(dllName,   CharSet   =   CharSet.Auto)]
                internal   static   extern   int   RecognizeLP(System.IntPtr   pImgs,   ref   Vehrec   lpRec,   long   pLUT,   long   flag,   long   imgrect);


                ///   <summary>
                ///   参数设置
                ///   </summary>
                [DllImportAttribute(dllName)]
                internal   static   extern   void   LoadSetting(int   index,   string   cityWord);


                ///   <summary>
                ///   车辆检测
                ///   </summary>
                ///   <returns> </returns>
                [DllImportAttribute(dllName)]
                internal   static   extern   int   DetectMoving(byte[]   images,   byte[]   lastImages,   Vehrec   rec,   bool   flag);


                ///   <summary>
                ///   识别并显示结果
                ///   </summary>
                public   void   GetAndDispReuult()
                {
                        System.Windows.Forms.OpenFileDialog   objDlg   =   new   OpenFileDialog();
                        objDlg.Filter   =   "JPG   files(*.jpg) ?*.jpg ?BMP   files(*.bmp) ?*.bmp";
                        objDlg.ReadOnlyChecked   =   false;
                        objDlg.Multiselect   =   false;
                        objDlg.Title   =   "选择文件";

                        if   (objDlg.ShowDialog()   ==   System.Windows.Forms.DialogResult.OK)
                        {
                                string   path   =   objDlg.FileName;

                                   stream   =   new   (path,   );
                                byte[]   bytes   =   new   byte[stream.Length];
                                stream.Read(bytes,   0,   (int)stream.Length);
                                stream.Dispose();
                                stream.Close();


                                   ms   =   new   (bytes);
                                System.Drawing.Image   photo   =   System.Drawing.Image.FromStream(ms);

                                picImage.Image   =   photo;

                                int   i   =   Recognise.Init(photo.Width,   photo.Height,   2);
                                Recognise.LoadSetting(2,   "豫");

                                System.IntPtr   pdata   =   System.Runtime.InteropServices.Marshal.UnsafeAddrOfPinnedArrayElement(bytes,   0);

                                Vehrec   lpRec   =   new   Vehrec();

                                int   ii   =   Recognise.RecognizeLP(pdata,   ref   lpRec,   0,   1,   0);
                        }
                }
  
        }
}
是在调用
int       ii       =       Recognise.RecognizeLP(pdata,       ref       lpRec,       0,       1,       0);   
时出错的!
错误内容大制如下:

KERNEL32.dll

EAX=03BFF2C8   CS=001B   EIP=7C812A5B   EFLAGS=000000202
.....
....
.....

等都是些类似堆栈地址的东西。
搜索更多相关主题的帖子: 在线 
2007-12-03 12:03
jacklee
Rank: 7Rank: 7Rank: 7
来 自:XAplus
等 级:贵宾
威 望:32
帖 子:1769
专家分:104
注 册:2006-11-3
收藏
得分:0 
pdata读数据时可能指针错误.这个你也不能解析API,你们没专门写分析图像数据的代码吗?

XAplus!
讨论群:51090447
删吧删吧,把我的号给删了!
2007-12-03 12:20
yushuihan
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-12-3
收藏
得分:0 
这是我们买别的公司的API 写自已的接口, 而他们公司没有C#的例子,没有办法,他们又不懂C#, 请给我点指点吧
2007-12-03 13:38
yushuihan
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2007-12-3
收藏
得分:0 
请版主帮帮我吧!
2007-12-03 13:46
jacklee
Rank: 7Rank: 7Rank: 7
来 自:XAplus
等 级:贵宾
威 望:32
帖 子:1769
专家分:104
注 册:2006-11-3
收藏
得分:0 
这个是复杂的问题,我也不了解你们的API实际情况,他们的API也许也有什么环境要求也说不定,所以最好还是找开发商问问最好。

XAplus!
讨论群:51090447
删吧删吧,把我的号给删了!
2007-12-03 14:23
快速回复:请高手们帮我找一下错误,在线等, 急!!!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021921 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved