紫光高拍仪C5422二次嵌入开发
1.客户端请安装紫图高拍仪驱动,并注册OCX(注册;方法:双击C:\ProgramFiles\CmCaptureOcx\OCX目录_Install.bat文件)
安装的时候要用管理员打开 不然部分机器可能会报错 也有部分可能会报毒关闭杀毒软件
2、初次使用高拍仪,请先在机器D盘创建test文件夹,用于保存拍摄图片。
3、拍摄页面,如果未显示视频框,请把浏览器改为兼容模式。(可能年代太久了)
4、拍摄之前,请先单击开始视频按钮。
API List
编号 |
函数名 |
参数含义 |
返回值含义 |
函数功能 |
01 |
HelloWorld |
测试函数 无任何意义 |
||
02 |
AutoCrop |
是否开启自动裁切 |
是否成功开启功能 |
自动裁切纠偏 |
03 |
AutoFocus |
无 |
返回值始终是1 无意义 |
开启自动对焦线程 |
04 |
CaptureImage |
图像文件名(包含文件存储路径) |
见函数详解 |
拍图 |
05 |
CusCrop |
是否开启手动裁切 |
是否开启功能 |
手动裁切 |
06 |
DeleteFile |
删除文件的文件名 |
是否成功删除 |
删除文件 |
07 |
Destory |
无 |
返回值始终为TRUE,无意义 |
注销视频流 |
08 |
EndVideo |
无 |
无 |
结束录像功能 |
09 |
GetCurResolutionIndex |
无 |
当前分辨率编号 |
获取当前分辨率编号 |
10 |
GetDevCount |
无 |
设备数量 |
获取设备数量 |
11 |
GetDevFriendName |
设备编号 |
设备名称 |
获取设备名称 |
12 |
GetResolution |
分辨率编号 |
当前编号代表的分辨率(xxxx*xxxx形式) |
获取编号代表的分辨率 |
13 |
GetResolutionCount |
无 |
当前设备支持的分辨率个数 |
获取分辨率个数 |
14 |
GetSerImgFileCount |
无 |
连拍的图片张数 |
获取连拍图片数量 |
15 |
GetSerImgFileNameAt |
自动连拍的第几张图片 |
文件名(包含路径) |
获取连拍图片的名称 |
16 |
Initial |
无 |
是否成功初始化 |
初始化ocx |
17 |
PreviewFile |
预览图片文件的文件名(包含路径) |
是否成功预览 |
文件预览 |
18 |
ReadBarCode |
是否开启条码识别功能 |
是否成功开启功能 |
条码识别 |
19 |
RotateVideo |
旋转角度0 :0°1:90°2:180°3:270° |
始终为True |
旋转视频 |
20 |
SeriesCapture |
参数一:是否开启连续拍摄 参数二:拍摄的图片存储位置 |
返回值始终是1 无意义 |
开启自动检测连拍功能 |
21 |
SetDenoise |
是否开启去噪点功能 |
是否成功开启功能 |
去噪点 |
22 |
SetFileType |
文件格式编号0、bmp;1、jpg;2、tif;3、png;4、gif |
是否成功设置 |
设置文件格式 |
23 |
SetImageColorMode |
图片颜色格式0彩色1灰度2黑白 |
是否成功设置图片格式 |
设置图片格式 |
24 |
SetJpgQuanlity |
Jpg图像压缩率。1压缩率最大,图像质量最差;100压缩率最小,图片质量最好 |
是否成功设置图片质量(仅限于Jpg格式) |
压缩Jpg格式文件 |
编号 |
函数名 |
参数含义 |
返回值含义 |
函数功能 |
25 |
SetResolution |
分辨率编号 |
是否成功设置分辨率 |
设置分辨率 |
26 |
ShowImageSettingWindow |
无 |
是否成功调用 |
调用图像设置窗口 |
27 |
StartRun |
设备编号 |
是否成功开启视频 |
开启视频 |
28 |
StartVideo |
参数一:视频文件存储路径; 参数二:是否开启音频。 |
是否成功开始录像 |
开启录像功能 |
29 |
UpdataFile |
参数一:url路径; 参数二:上传的文件名(包含路径); 参数三:上传后是否删除本地文件 |
是否成功上传 |
文件上传功能 |
30 |
ZoomIn |
无 |
始终为True |
放大 |
31 |
ZoomOut |
无 |
始终为True |
缩小 |
32 |
CaptureToBase64 |
无 |
Base64编码后的数据 |
获取Base64编码的图像 |
33 |
CaptureToBinary |
参数一:图像二进制数据;参数二:图像宽度;参数三:图像高度;参数四:每行字节数 |
始终为TRUE,无意义 |
获取图像二进制信息 |
34 |
SetBrightness |
亮度值 |
若无视频流返回值为0,否则返回值始终为1 |
设置亮度 |
35 |
SetExposure |
曝光度 |
若无视频流返回值为0,否则返回值为1 |
设置曝光度 |
36 |
AutoExposure |
是否开启自动曝光 |
若无视频流返回值为0,否则返回值为1 |
开启自动曝光 |
37 |
GetBrightnessRange |
无 |
返回当前设备的亮度值范围(格式为XX|XX) |
获取亮度值范围 |
38 |
GetExposureRange |
无 |
返回当前设备的曝光度值范围(格式为XX|XX) |
获取曝光度值范围 |
39 |
FrozenVideo |
是否冻结视频 |
是否成功 |
冻结视频 |
40 |
StartRunEx |
参数一:设备编号; 参数二:分辨率宽度; 参数三:分辨率高度; 参数四:开启模式 |
是否成功 |
开启视频 |
41 |
SetImageDPI |
DPI值 |
无 |
设置DPI |
42 |
TimimgCapture |
参数一:是否开启功能; 参数二:文件存储路径; 参数三:拍摄间隔时间 |
是否成功 |
定时连拍 |
43 |
Convert2PDF |
合并到PDF |
无 |
合并到PDF |
44 |
AddPDFImageFile |
文件名 |
始终为true。 |
添加到Pdf的文件名称 |
编号 |
函数名 |
参数含义 |
返回值含义 |
函数功能 |
45 |
DragVideo |
是否开启拖拽视频 |
无 |
拖拽视频 |
46 |
SetMarkPic |
水印图片文件名(包含路径) |
无 |
设置图片水印 |
47 |
GetPreviewImg |
参数一:图像二进制数据; 参数二:图像宽度; 参数三:图像高度; 参数四:每行字节数 |
无 |
获取预览图像二进制数据 |
48 |
SetPaperType |
纸张类型1:A4 2:A5 3:A8 |
若无视频流,返回false,否则返回True |
设置拍摄纸张格式 |
50 |
TrueSize |
无 |
无 |
切换到真实大小 |
51 |
BestSize |
无 |
无 |
切换到最适应大小 |
52 |
GetDevDisplayName |
设备编号 |
设备的DisplayName |
获取设备DisplayName |
53 |
CaptureBinaryImg |
CaptureToBinary的进阶形式,添加一个获取Bpp的参数 |
||
54 |
GetFileNameOnDirectory |
文件索引号 |
文件名 |
通过索引号获取某个文件夹的文件名,需要与函数55联合使用 |
55 |
GetDirectoryFileCount |
文件夹名(包含路径) |
文件夹中图像文件的个数 |
获取文件夹中的图像文件个数 |
56 |
CaptureImageEx |
文件名(不包含路径) |
文件名(包含路径) |
无路径拍图 |
57 |
SetCurrentDevDPI |
参数1:X方向DPI; 参数2:Y方向DPI |
无 |
设置当前设备的DPI |
58 |
SetMarkString |
参数1:文字旋转角度; 参数2:文字大小; 参数3:水印文字 |
无 |
设置水印文字 |
59 |
SetTimeMark |
参数1:时间字符串 参数2:文字大小 |
无 |
设置时间水印 |
60 |
GetLastImageInfoEx |
参数1:图片长; 参数2:图片宽; 参数3:图片深度 |
无意义 |
获取图片信息 |
61 |
GetLastImageInfo |
无 |
图片大小 |
获取图片大小 |
62 |
UploadFile |
参数1:上传文件名; 参数2:上传后是否删除本地; 参数3:ftp地址 参数4:Ftp用户名 参数5:ftp密码 参数6:Ftp子文件夹 |
上传状态 |
上传文件(FTP) |
63 |
SetMarkStringEx |
参数1:水印文字角度; 参数2:文字大小; 参数3:水印文字 参数4:颜色 参数5:字体 参数6:x偏移 参数7:y偏移 参数8:版式(横排/竖排) |
始终为1,无意义 |
设置水印文字 |
64 |
CombineTwoImage |
参数1:合并后图像的全路径 参数2:合并图像1的全路径 参数3:合并图像2的全路径 参数4:合并模式 1垂直合并 2水平合并 |
合并结果 |
合并两张图像 |
66 |
AddFileToZip |
参数1:需要合并的文件路径 |
是否添加成功 |
添加文件到zip压缩文件列表 |
67 |
Convert2Zip |
参数1:生成文件路径 |
是否合并成功 |
将文件打包成zip包 |
68 |
GetDevSN |
参数 1:设备的索引 |
返回SN码的字符串 |
获取设备的SN码 |
69 |
ShowDevSettingWindow |
无 |
成功返回1 否则返回0 |
获取设置视频属性的接口 |
70 |
Base64Encode |
参数 1:将被编码文件的路径 |
返回编码后的文件 |
Base64编码 |
71 |
Base64Decode |
参数1 将被解码的文件 参数 2 解码后文件的保存路径 |
成功回1 失败返回0 |
Base64 解码 |
72 |
OpenAutomaticExposure |
参数 1:是否打开智能曝光 |
无 |
打开智能曝光(根据裁切位置曝光) |
73 |
SetCropMode |
参数 1:True为单图裁切 fale为多图裁切 |
无 |
设置裁切模式 |
74 |
GetCodeString |
无 |
如果条码识别成功返回条码数据否则返回空 |
获取条码数据 |
75 |
SetVideoParameter |
参数1:将要设置的类型 参数2:类型 为0 或1 参数3:设置的值 参数4: |
True表示成功,false表示失败 |
设置视频参数 |
76 |
AddFileToTiff |
参数 1:图片的路径 |
1表示成功 0表示失败 |
添加图片的路径 |
77 |
ConvertToTiff |
参数1:Tiff的存储路径 参数 2:合并模式 |
1表示成功 0表示失败 |
保存Tiff图 |
78 |
SetExposureLock |
参数1:是否锁定曝光 |
0表示不设置 1表示设置 |
锁定曝光 |
79 |
SetDocumentTemplet |
参数:需要裁切区域 |
设置文档模板 |
|
80 |
StartRunEx2 |
参数:视频开启的参数 |
开启视频 |
|
81 |
GetVideoParameter |
参数:设备UVC参数指针 |
获取UVC参数 |
|
82 |
CreateFile |
参数1:将要创建文件的路径 |
0表示成功 1表示失败 2文件夹已存在 |
创建指定路径的文件夹 |
函数详解
A |
LONG AddPDFImageFile(BSTR imagefile) 参 数:参数1:BSTR型 需要合并的图片名称; 返 回 值:始终为TRUE,无意义 函数功能:添加要合成PDF到的文件。 |
LONG AddFileToTiff(BSTR imagefile) 参 数:参数1:BSTR型 需要合并的图片名称; 返 回 值:始终为TRUE,无意义 函数功能:添加要合成TIFF到的文件。 |
LONG AddFileToZip(BSTR FileName) 参数: 参数1:BSTR型 需要合并的图片名称; 返 回 值:始终为TRUE,无意义 函数功能:添加文件到zip压缩文件列表 |
LONG AutoCrop(BOOL AdjustSkew); 参 数:BOOL型 true:开启自动裁切,False:关闭自动裁切 返 回 值:LONG型 是否设置成功 (0 失败 1 成功) 函数功能:自动裁切纠偏 |
LONG AutoExposure(BOOL bExp); 参 数: BOOL型 自动曝光(TRUE 开启 FALSE 关闭) 返 回 值:若无视频流返回值为0,否则返回值始终为1 函数功能: 设置自动曝光 |
LONG AutoFocus() 参 数:无 返 回 值:始终为 1 函数功能:开启自动对焦线程,对焦稳定后,线程结束 |
LONG AdjustExposure(); 参 数:无 返 回 值:如调整曝光成功,返回1,否则返回0; 函数功能:调整曝光 |
B |
void BestSize(); 参 数:无 返 回 值:无 函数功能:最适应尺寸显示 |
BSTR Base64Encode(BSTR strFileName); 参 数:将被编码文件的地址 返 回 值:被编码后的文件 函数功能:将文件进行base64编码 |
LONG Base64Decode(BSTR strFileDecode,BSTR strFileSaveFileName); 参 数:strFileDecode 被解码的文件 strFileSaveFileName 解码后文件的保存路径 返 回 值:0 为失败 1 为成功 函数功能:将文件进行base64解码 |
C |
LONG CaptureBinaryImg(BYTE *lpBuf,LONG *Width,LONG *Height,LONG *nLine,LONG *bpp); 参 数:参数1:BYTE*型 图像二进制数据;参数2:LONG*型 图像宽度;参数3:LONG*型图像高度;参数四:LONG*型 每行字节数;参数五:LONG*型 位深度 返 回 值:始终为1,无意义 函数功能:获取图像二进制信息 函数功能:拍图 |
LONG CaptureImage(LPCTSTR FileName); 参 数:字符串 文件存储名称(包含存储路径) 返 回 值:LONG型 1:拍图成功 0:未找到图片 -1:视频流为空 -2:文件名为空 -3:无图像 -4:存图失败 函数功能:拍图 |
BSTR CaptureImageEx(BSTR FileName); 参 数:字符串 文件存储名称(不包含存储路径) 返 回 值:BSTR型 文件完整路径。 函数功能:拍图 |
BSTR CaptureToBase64() 参 数:无 返 回 值:BSTR型 Base64编码后的数据 函数功能:获取Base64编码的图像 |
LONG CaptureToBinary(BYTE *lpBuf,LONG *Width,LONG *Height,LONG *nLine) 参 数:参数1:BYTE*型 图像二进制数据;参数2:LONG*型 图像宽度;参数3:LONG*型图像高度;参数四:LONG*型 每行字节数 返 回 值:始终为1,无意义 函数功能:获取图像二进制信息 |
void Convert2PDF(BSTR strNew, INT mode); 参 数:参数一:BSTR型 合并完成的Pdf文件名称(包含路径);参数二:INT型 合并模式 0: 将AddPDFImageFile中添加的文件合并成PDF 1:选取图像合并; 返 回 值:无 函数功能:合并PDF |
void ConvertToTiff(BSTR strNew, INT mode); 参 数:参数一:BSTR型 合并完成的Diff文件名称(包含路径);参数二:INT型 合并模式 0: 将AddTiffImageFile中添加的文件合并成Tiff 1:选取图像合并; 返 回 值:无 函数功能:合并TIff |
LONG Convert2Zip(BSTR strNew) 参 数:参数一:生成文件名称; 返 回 值:是否压缩成功 函数功能:将文件打包成zip包,同时在zip包内添加一个fileInfo.xml文件,文件格式为 <fileList> <file fileSize="3021546" fileName="IMG_0014.jpg"/> </fileList> |
LONG CombineTwoImage(BSTR imageFileName,BSTR imageFileName1,BSTR imageFileName2,LONG type); 参 数:参数一:BSTR型 合并完成的图像全路径;参数二:BSTR型 需要合并的图像1全路径;参数三:BSTR型 需要合并的图像2全路径;参数四 LONG 型 合并模式 1:水平合并 2 垂直合并; 返回值:-2:图像1和图像2的颜色格式不同,无合并;-1:图像1或图像2无法以图片形式打开,无法合并;0:参数有误1.合并成功 函数功能:合并图像 |
LONG CusCrop(BOOL CusCrop); 参 数:BOOL型 true:开启手动裁切,False:关闭手动裁切 返 回 值:LONG型 是否设置成功(0失败 1成功) 函数功能:手动裁切 |
D |
LONG DeleteFile(LPCTSTR FileName); 参 数:字符串 要删除的文件名称(包含路径) 返 回 值:LONG型 是否成功删除(0失败 1成功) 函数功能:删除文件 |
LONG Destory(); 参 数:无 返 回 值:LONG型 始终为1,无意义 函数功能:注销视频流 |
LONG DigitalSignature(BOOL sign); 参 数:是否开启数字签名 返 回 值:LONG型 始终为1,无意义 函数功能:开启数字签名功能 PS:重要!! 开启数字签名后,拍照时会同时生成一个后缀名为.Scrt的验证文件,若此文件被损坏或丢失,则无法验证图片是否被修改。 |
void DragVideo(BOOL Drag) 参 数: BOOL型 是否开启视频拖拽 返 回 值: 无 函数功能: 拖拽视频 |
E |
void EndVideo (); 参 数:无 返 回 值:无 函数功能:结束视频录制 |
F |
LONG FrozenVideo(BOOL bFrozen); 参 数: BOOL型 冻结视频(TRUE 冻结 FALSE 不冻结) 返 回 值: LONG型 是否成功冻结(0失败 1成功) 函数功能: 冻结视频 |
G |
BSTR GetBrightnessRange(); 参 数: 无 返 回 值: BSTR型 设备的亮度值范围(格式 “XX|XX”) 函数功能: 获取设备亮度范围 |
BSTR GetCodeString(); 参 数: 无 返 回 值: 条码数据,如果失败则为空字符串 函数功能: 获取条码识别的数据 |
LONG GetCurResolutionIndex(); 参 数:无 返 回 值:LONG型 当前分辨率编号 函数功能:获取当前分辨率编号 |
LONG GetDevCount(); 参 数:无 返 回 值:LONG型 当前设备数量 函数功能:获取当前设备数量 |
BSTR GetDevDisplayName(LONG index); 参 数:设备编号 返 回 值:BSTR型 当前设备DisPlay Name 函数功能:获取当前设备displayname |
BSTR GetDevFriendName(LONG index); 参 数:LONG型 设备编号 返 回 值:字符串 当前设备名称 函数功能:获取设备名称 |
LONG GetDirectoryFileCount(BSTR strDirPath); 参 数:BSTR型 文件夹路径 返回值:LONG型 图片数量 功 能:获取StrDirPath文件夹下图片文件的个数。 |
BSTR GetExposureRange(); 参 数:无 返 回 值:BSTR型 设备的曝光度值范围(格式 “XX|XX”) 函数功能:获取设备曝光度范围 |
BSTR GetFileNameOnDirectory(LONG index); 参 数:LONG型 索引号 返 回 值:BSTR型 文件名称 函数功能:获取索引号所代表的的文件名称 |
LONG GetLastImageInfo(BSTR FileName); 参 数:BSTR型 文件名 返 回 值:Long型 文件大小 函数功能:获取文件大小 |
LONG GetLastImageInfoEx(LONG *Width,LONG *Height,LONG *bpp); 参 数:1: 文件宽 2:文件高 3:文件位深度。 返 回 值:Long型 无意义 函数功能:获取文件信息 |
void GetPreviewImg(BYTE *lpBuf,LONG *Width,LONG *Height,LONG *nLine); 参 数:参数1:BYTE*型 图像二进制数据;参数2:LONG*型 图像宽度;参数3:LONG*型图像高度;参数四:LONG*型 每行字节数 返 回 值:无 函数功能:获取预览图像的二进制信息 |
BSTR GetResolution(LONG index); 参 数:LONG型 分辨率编号 返 回 值:字符串 获取当前分辨率编号所代表的分辨率,返回字符串的格式为“xxxx*xxxx” 函数功能:获取当前编号的分辨率 |
LONG GetResolutionCount(); 参 数:无 返 回 值:LONG型 当前设备所支持的分辨率个数 函数功能:获取当前设备所支持的分辨率个数 |
LONG GetSerImgFileCount(); 参 数:无 返 回 值:自动连拍图片的数量 函数功能:获取自动连拍获得的图片数量 |
BSTR GetSerImgFileNameAt(LONG Index); 参 数:LONG型 进行自动连拍时所拍摄的第Index张图片 返 回 值:字符串 图片的文件名称(包含路径) 函数功能:获取自动连拍所拍摄第Index张图片的文件名称 |
BSTR GetDevSN(LONG index) 参 数:参数1:设备的索引号 返 回 值:返回设备的SN码 函数功能:获取设备的SN码 |
BOOL GetVideoParameter(int para1,int para2,LONG * min,LONG * max,LONG *lvalue,LONG *ldefault,LONG *flag); 参 数:参数1:将要设置值得类型; 参数2:0或1 当 para2 为0 时 para1的值 {VideoProcAmp_Brightness = 0, VideoProcAmp_Contrast = VideoProcAmp_Brightness + 1, VideoProcAmp_Hue = VideoProcAmp_Contrast + 1, VideoProcAmp_Saturation = VideoProcAmp_Hue + 1, VideoProcAmp_Sharpness = VideoProcAmp_Saturation + 1, VideoProcAmp_Gamma = VideoProcAmp_Sharpness + 1, VideoProcAmp_ColorEnable = VideoProcAmp_Gamma + 1, VideoProcAmp_WhiteBalance = VideoProcAmp_ColorEnable + 1, VideoProcAmp_BacklightCompensation = VideoProcAmp_WhiteBalance + 1, VideoProcAmp_Gain = VideoProcAmp_BacklightCompensation + 1 } 当 para2 为1 时 para1的值 { CameraControl_Pan = 0, CameraControl_Tilt = ( CameraControl_Pan + 1 ) , CameraControl_Roll = ( CameraControl_Tilt + 1 ) , CameraControl_Zoom = ( CameraControl_Roll + 1 ) , CameraControl_Exposure = ( CameraControl_Zoom + 1 ) , CameraControl_Iris = ( CameraControl_Exposure + 1 ) , CameraControl_Focus = ( CameraControl_Iris + 1 ) } Min:最小值 Max:最大值 Lvalue:当前值 Ldefault:默认值 Flag:自动或手动 返回值:是否获取成功 函数说明:获取UVC参数 |
I |
LONG Initial(); 参 数:无 返 回 值:LONG型 -2:无设备; -1:无授权设备; 0 – N:有授权设备且授权设备ID为N; 函数功能:初始化ocx |
O |
void OpenAutomaticExposure(BOOL bIsOpenAE); 参 数:true为打开智能曝光,false为关闭智能曝光 返 回 值:无 函数功能:打开智能曝光 |
P |
LONG PreviewFile(LPCTSTR FileName); 参 数:字符串 预览文件的文件名(包含路径) 返 回 值:LONG型 是否成功预览(0失败 1成功) 函数功能:文件预览 |
R |
LONG ReadBarCode(BOOL m_bBarCode); 参 数:BOOL型 true:开启条码识别 False:关闭条码识别 返 回 值:LONG型 是否成功开启功能 函数功能:条码识别 |
LONG RotateVideo(LONG RotIndex); 参 数: LONG型 旋转角度 0 :0°1:90°2:180°3:270° 返 回 值: LONG型 始终为1 无意义 函数功能: 旋转视频 |
S |
void SetExposureLock(BOOL bIsLock) 参 数: True表示拍图后锁定曝光,false拍图后不锁定曝光 返 回 值:无 函数功能:是否锁定曝光 |
void SetCropMode(BOOL bCropMode); 参 数:裁切模式 True表示单图裁切,fale为多图裁切 返 回 值:无 函数功能:设置裁切模式 |
BOOL SetVideoParameter(int para1,int para2,long lvalue,long flag); 参 数:参数1:将要设置值得类型; 参数2:0或1 当 para2 为0 时 para1的值 {VideoProcAmp_Brightness = 0, VideoProcAmp_Contrast = VideoProcAmp_Brightness + 1, VideoProcAmp_Hue = VideoProcAmp_Contrast + 1, VideoProcAmp_Saturation = VideoProcAmp_Hue + 1, VideoProcAmp_Sharpness = VideoProcAmp_Saturation + 1, VideoProcAmp_Gamma = VideoProcAmp_Sharpness + 1, VideoProcAmp_ColorEnable = VideoProcAmp_Gamma + 1, VideoProcAmp_WhiteBalance = VideoProcAmp_ColorEnable + 1, VideoProcAmp_BacklightCompensation = VideoProcAmp_WhiteBalance + 1, VideoProcAmp_Gain = VideoProcAmp_BacklightCompensation + 1 } 当 para2 为1 时 para1的值 { CameraControl_Pan = 0, CameraControl_Tilt = ( CameraControl_Pan + 1 ) , CameraControl_Roll = ( CameraControl_Tilt + 1 ) , CameraControl_Zoom = ( CameraControl_Roll + 1 ) , CameraControl_Exposure = ( CameraControl_Zoom + 1 ) , CameraControl_Iris = ( CameraControl_Exposure + 1 ) , CameraControl_Focus = ( CameraControl_Iris + 1 ) } 参数3:将要设置的值 参数4:1自动 0手动 返 回 值:始终为1,无意义 函数功能:设置UVC参数 |
LONG SeriesCapture(BOOL SerCapture,LPCTSTR FolderPath) 参 数:参数1:BOOL型 是否开启自动检测拍照; 参数2:字符串 存储图片位置,格式:D:\XXXX\(XXXX为文件夹名称,字符串需要以“\”结尾,否则无法正常存储。) 返 回 值:始终为1,无意义 函数功能:开启自动连拍功能 |
LONG SetBrightness(LONG BriNum); 参 数: LONG型 亮度值 返 回 值: 若无视频流返回值为0,否则返回值始终为1 函数功能: 设置亮度 |
LONG SetCurrentDevDPI(float xdpi,float ydpi); 参 数: float型 x、y方向上的DPI; 返 回 值: LONG型 若无视频流返回值为0,否则返回值始终为1 函数功能: 设置设备原始DPI |
LONG SetDenoise(BOOL Denoise); 参 数:BOOL型 True:开启去噪点功能 False:关闭去噪点功能 返 回 值:LONG型 是否成功开启功能(0失败 1成功) 函数功能:去噪点 |
void SetDocumentTemplet(float left,float right,float top,float bottom); 参数:float型 需要裁切的区域即文档模板,在获取文档图片后再次裁切区域,单位百分比 |
LONG SetExposure(LONG ExpNum); 参 数: LONG型 曝光度值 返 回 值:若无视频流返回值为0,否则返回值始终为1 函数功能:设置曝光度 |
LONG SetFileType(LONG index); 参 数:LONG型 文件类型编号 0:bmp 1:jpg 2:tif 3:png 4:Gif 返 回 值:LONG型 是否成功设置(0失败 1成功) 函数功能:设置文件存储格式 |
LONG SetImageColorMode(LONG index); 参 数:LONG型 色彩类型编号 0:彩色 1:灰度 2:黑白 返 回 值:LONG型 是否成功设置色彩类型(0失败 1成功) 函数功能:设置色彩类型 |
void SetImageDPI(int ndpi); 参 数: int型 设置dpi 返 回 值: 无 函数功能: 设置DPI |
LONG SetJpgQuanlity(LONG QuaNum); 参 数: LONG型 图片质量 1最小 100最大 返 回 值: 是否成功设置 函数功能: 设置图片质量(仅限于Jpg图像) |
void SetMarkPic(BSTR FilePath) 参 数: 水印图片名称(包含路径) 返 回 值: 无 函数功能: 设置水印图片 |
void SetMarkStringEx(LONG Angel,LONG size, BSTR String,DWORD color,LONG FontIndex,LONG X,LONG Y,LONG Mode) 参 数: LONG型 角度(取值范围-180~181,取181时代表倾斜度为对角线角度) LONG型 字体大小 BSTR 型 水印文字 DWORD型 颜色 LONG型 字体 LONG型 x轴偏移 LONG型 y轴偏移 LONG型 排版格式 返 回 值: 始终为1,无意义 函数功能: 设置水印文字 |
void SetMarkString(LONG Angel,LONG size,BSTR String) 参 数: LONG型 角度(取值范围-180~181,取181时代表倾斜度为对角线角度) LONG型 字体大小 单位为像素。 返 回 值: 始终为1,无意义 函数功能: 设置水印文字 |
LONG SetPaperType(LONG type); 参 数:LONG型 纸张类型编号 1:A4 2:A5 3:A8 返 回 值:LONG型 是否成功设置分辨率(0失败 1成功) 函数功能:设置拍摄纸张格式 |
LONG SetResolution(LONG index); 参 数:LONG型 分辨率编号 返 回 值:LONG型 是否成功设置分辨率(0失败 1成功) 函数功能:设置分辨率(初始化使用,不能用于更改分辨率) |
LONG SetTimeMark(BSTR Time,LONG size); 参 数:BSTR型 时间字符串,若传入的字符串为空,则自动使用当前系统时间 LONG型 字体大小,以像素为单位。 返 回 值:LONG型 是否成功设置分辨率(0失败 1成功) 函数功能:设置分辨率(初始化使用,不能用于更改分辨率) |
LONG ShowImageSettingWindow(); 参 数:无 返 回 值:LONG型 是否成功调用图片设置窗口(0失败 1成功) 函数功能:调用图片设置窗口。 |
LONG StartRun(LONG Index); 参 数:LONG型 设备编号 返 回 值:LONG型 是否成功开启视频(0失败 1成功) 函数功能:开启视频 |
LONG StartRunEx(LONG DevIndex,LONG ResWidth,LONG ResHeight,LONG RunMode); 参 数: 参数1:LONG型 设备编号 参数2:LONG型 宽度 参数3:LONG型 高度 参数4:开启模式(0:用户设定分辨率;1:默认分辨率;2:最大分辨率) PS:参数四的值为1或者2时,参数2、参数3无意义。 返 回 值: LONG型 是否成功开启视频(0失败 1成功) 函数功能: 开启视频 |
LONG StartRunEx2(LONG DevIndex,LONG ResWidth,LONG ResHeight,LONG RunMode,LONG VideoMode,LONG CaptureMode); 参 数: 参数1:LONG型 设备编号 参数2:LONG型 宽度 参数3:LONG型 高度 参数4:开启模式(0:用户设定分辨率;1:默认分辨率;2:最大分辨率) PS:参数四的值为1或者2时,参数2、参数3无意义。 参数5:开始视频格式 0 YUY2 1 MJPG 参数6:拍摄模式 返 回 值: LONG型 是否成功开启视频(0失败 1成功) 函数功能: 开启视频 |
LONG StartVideo (LPCTSTR lspFilePath,BOOL m_bAudio); 参 数:参数一:字符串 视频文件名称(包含路径) 参数二:true/false开启/关闭音频 返 回 值:LONG型 是否成功开启视频录像(0失败 1成功) 函数功能:开启视频录像功能 |
T |
LONG TimimgCapture(BOOL bTimeCap,BSTR FilePath,int IntevialTime); 参 数: 参数一:BOOL型 是否开启功能 参数二:BSTR型 文件名(包含路径,以“\”结尾)参数三:int型 间隔时间 返 回 值: LONG型 是否成功(0失败 1成功) 函数功能: 定时拍摄 |
void TrueSize(); 参 数:无 返 回 值:无 函数功能:真实尺寸显示。 |
U |
LONG UpdataFile(LPCTSTR pUrl,LPCTSTR pFilename,BOOL m_bDelete); 参 数:参数一:字符串 URL地址 参数二:文件名(包含路径)参数三 true:上传后删除 本地文件 返 回 值:是否成功上传(0失败 1成功) 函数功能:文件上传 |
UploadFile(BSTR FilePath,BOOL bFileDelete,BSTR FtpAdd,BSTR UserName,BSTR UserPsd,BSTR TargetName); 参 数:参数一:字符串 文件名(包含路径) 参数二:BOOL型 上传后是否删除本地 参数三 Ftp地址 参数四: Ftp用户名 参数五 :ftp密码 参数6:ftp上子文件夹名称 返 回 值:0成功 -1上传失败 -2登陆服务器根路径失败 -3 创建子文件夹失败 -4 断开连接失败 -5 连接失败; 函数功能:文件上传 |
Z |
LONG ZoomIn(); 参 数:无 返 回 值:LONG型 始终为1 无意义 函数功能:视频放大 |
LONG ZoomOut(); 参 数: 无 返 回 值: LONG型 始终为1 无意义 函数功能: 视频缩小 |
LONG CreateFile(LPCTSTR lpszFilePath); 参 数:字符串 将要创建文件的路径 返 回 值:LONG型 是否成功预览(0功能 1失败 2文件夹已存在) 函数功能:创建文件夹 |
使用例程
开始视频
int i = m_ocx.Initial(); //初始化
if(i = -2)
{
AfxMessageBox(L” 无设备”)
return false;
}
m_ocx.StartRun(0); //开启视频
拍摄图像
m_ocx.SetImageColorMode(1); //设置颜色模式
m_ocx.SetJpgQuanlity(10); //设置图像质量(若为BMP图像则不需要此步骤)
m_ocx.CaptureImage(L"d:\\cof.jpg"); //拍摄图片
Ps: CaptureImage()函数的参数为文件的绝对路径。
分辨率控制
列举分辨率
CString strTemp;
long width;
long height;
for (int i = 0; i < m_ocx.GetResolutionCount();i ++ )
{
m_ocx.GetResolution(i,&width,&height);
strTemp.Format(L"%d*%d",width,height);
MessageBox(strTemp);
}
获取当前分辨率
Caution:分辨率的获取须在 StartRun()之后
long width;
long height;
int i = m_ocx.GetResolutionIndex();
m_ocx.GetResolution(i,&width,&height);
设置分辨率
m_ocx.SetResolution(Index);
手动裁切
m_ocx.SetCropArea(TRUE);
读取条形码
m_ocx.ReadBarCode(TRUE);
CString strCode = m_ocx. GetCodeString();
注:读取条形码式采用2592*1944分辨率拍照,此时ocx会将条形码区域拍摄下来并以条码内容作为文件名进行存储。若未成功读取出条码内容,则不会存储图片。
获取图像二进制数据
BYTE* m_src = NULL;
long width,height,effectwidth;
width = height = effectwidth = 0;
m_ocx.CaptureToBinary(m_src,&width,&height,&effectwidth);
m_src = new BYTE[effectwidth * height];
m_ocx.CaptureToBinary(m_src,&width,&height,&effectwidth);
获取某个文件夹中的所有图片文件
int index = m_ocx.GetDirectoryFileCount(L"D:\\ImageFile\\")
for(int i= 0; i < index; i++)
{
CString str;
str = m_ocx.GetFileNameOnDirectory(i);
}
CaptureImageEx
CaptureImage的进阶形式,传入参数不再需要路径,文件直接存储于系统temp文件夹下,返回值为带路径的文件名。
EG:
CString FilePath = m_ocx.CaptureImageEx(L”MyImage.bmp”);
返回值为c:\user\XXXXX\AppData\local\temp\MyImage.bmp;
SetMarkStringEx
水印文字颜色设置方式:
DWORD colorRef = RGB(255,0,255);
水印文字字体代号:
0 宋体 , 1 Arial , 2 黑体, 3 Times New Roman, 4 华文彩云
水印文字偏移
百分比偏移 取值0 – 100;
以图片左上与文字左上为两个基准点
排版格式
0 横排 1 竖排
添加图片水印说明:
- 在配置文件中设置图片水印的位置(值为1,2,3,4,5,配置文件在SDK安装目录的cfg下)
1 --表示左上
2—表示右上
3—表示右下
4—表示左下
5--表示中间
如果需要添加图片水印,在调用Initial()之后,
调用SetMarkPic(L”C:\\1.jpg”); 设置水印图片的路径
调用条码识别额
- 调用函数ReadBarCode(TRUE),参数设为TRUE
- 拍照CaptureImage();
- 调用GetCodeString的返回值就是条码识别的结果
获取右键消息
<SCRIPT type="text/javascript" for="CmCaptureOcx" event="GetRButtonDownPoint(x,y);">
alert(x);
</SCRIPT>
获取拍摄图片消息
<SCRIPT type="text/javascript" for="CmCaptureOcx" event="GetImageFileName(FileName);">
alert(FileName);
</SCRIPT>
获取停止自动连拍消息
<SCRIPT type="text/javascript" for="CmCaptureOcx" event="FinishSeriesCapture();">
</SCRIPT>
DEMO代码
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>SDK 演示</title>
<Script language="javascript">
var nFileCount = 0;
var bAdjustMode = 0;
var bCropArea = 0;
var bSeriesCapture = 0;
var bReadBarCode=0;
var bSetDenoise = 0;
var Width = 0;
var Height = 0;
var strFile;
var index = 0;
var strCardFile;
var cardIndex = 0;
function Capture()
{
var obj=document.getElementById("FileType") ;
var index=obj.selectedIndex;
strFile = "d:\\test\\Img" + nFileCount;
if(index == 0)
{
strFile += ".bmp";
}
if(index == 1)
{
strFile += ".jpg";
}
if(index == 2)
{
strFile += ".tif";
}
if(index == 3)
{
strFile += ".png";
}
CmCaptureOcx.CaptureImage(strFile);
nFileCount ++;
}
function Adjust()
{
if(bAdjustMode == 0)
{
CmCaptureOcx.AutoCrop(1);
bAdjustMode = 1;
}
else
{
CmCaptureOcx.AutoCrop(0);
bAdjustMode = 0;
}
}
function SetCropArea()
{
if(bCropArea == 0)
{
bCropArea = 1;
CmCaptureOcx.CusCrop(bCropArea);
}
else
{
bCropArea = 0;
CmCaptureOcx.CusCrop(bCropArea);
}
}
function UpdataFile()
{
//var Url = document.getElementById("URL").value;
var Url = "http://192.168.1.123:8080/UploadTestApp/uploadfile.do";
CmCaptureOcx.UpdataFile(Url,strFile,0);
}
function Preview()
{
CmCaptureOcx.PreviewFile(strFile);
}
function SetResolution()
{
var obj=document.getElementById("Resolution") ;
var index=obj.selectedIndex;
CmCaptureOcx.SetResolution(index);
}
function StartVideoRecord()
{
var path = "d:\\test\\1.wmv"
CmCaptureOcx.StartVideo(path,1);
}
function SeriesCapture()
{
var path = "d:\\test\\自动连拍\\";
CmCaptureOcx.SeriesCapture(1,path);
}
function ReadBarCode()
{
if(bReadBarCode == 0)
{
bReadBarCode = 1;
CmCaptureOcx.ReadBarCode(bReadBarCode);
}
else
{
bReadBarCode = 0;
CmCaptureOcx.ReadBarCode(bReadBarCode);
}
}
function DeleteFile()
{
CmCaptureOcx.DeleteFile(strFile);
}
function GetDevSN()
{
var strSN =CmCaptureOcx.GetDevSN(0);
}
function SetDenoise()
{
if(bSetDenoise == 0)
{
bSetDenoise = 1;
CmCaptureOcx.SetDenoise(bSetDenoise);
}
else
{
bSetDenoise = 0;
CmCaptureOcx.SetDenoise(bSetDenoise);
}
}
function SetFileType()
{
var obj=document.getElementById("FileType") ;
var index=obj.selectedIndex;
CmCaptureOcx.SetFileType(index);
}
function SetImageColorMode()
{
var obj=document.getElementById("ColourMode") ;
var index=obj.selectedIndex;
CmCaptureOcx.SetImageColorMode(index);
}
function StartVideo()
{
CmCaptureOcx.Initial();
CmCaptureOcx.StartRun(index);
AddResolution2Comb(Reso);
SetResolution();
SetFileType();
}
function AddResolution2Comb(f)
{
var i = 0;
var total = CmCaptureOcx.GetResolutionCount();
for( i = 0 ; i < total ; i++ )
{
var resolution = CmCaptureOcx.GetResolution(i);
f.Resolution.options[i].text=resolution;
}
}
function ChangeDevice()
{
var obj=document.getElementById("DeviceName") ;
index=obj.selectedIndex;
CmCaptureOcx.StartRun(index);
AddResolution2Comb(Reso);
SetResolution();
}
function SetPicMark()
{
CmCaptureOcx.SetMarkPic("C:\\1.jpg");
}
function AddDevice()
{
var i = 0;
var total = CmCaptureOcx.GetDevCount();
for( i = 0 ; i < total ; i++ )
{
var DevEle = CmCaptureOcx.GetDevFriendName(i);
Reso.DeviceName.options[i].text=DevEle;
}
}
function Sleep(seconds)
{
var d1 = new Date();
var t1 = d1.getTime();
for (;;)
{
var d2 = new Date();
var t2 = d2.getTime();
if (t2-t1 > seconds*1000)
{
break;
}
}
}
function Test()
{
strCardFile = "d:\\test\\cardImage" + cardIndex;
strCardFile += ".jpg";
CmCaptureOcx.CaptureImage(strCardFile);
if(cardIndex == 0)
{
cardIndex = 1;
}
else
{
CmCaptureOcx.CombineTwoImage("d:\\test\\cardImage.jpg","d:\\test\\cardImage0.jpg","d:\\test\\cardImage1.jpg",1);
cardIndex = 0;
}
}
function ConvertToPDF()
{
var pdfFileName = "d:\\test\\testpdf.pdf"
CmCaptureOcx.Convert2PDF(pdfFileName ,0);
}
</script>
<SCRIPT type="text/javascript" for="CmCaptureOcx" event="GetImageFileName(fileName);">
CmCaptureOcx.AddPDFImageFile(fileName);
</SCRIPT>
<SCRIPT type="text/javascript" for="CmCaptureOcx" event="GetRButtonDownPoint(x,y);">
alert(x);
</SCRIPT>
</head>
<body onload =" CmCaptureOcx.Initial();AddDevice();">
<center>
<p>
<OBJECT id="CmCaptureOcx" style="MARGIN-LEFT:5px; WIDTH: 52.4%; HEIGHT:80%"
classid="clsid:3CA842C5-9B56-4329-A7CA-35CA77C7128D" >
</OBJECT>
</p>
</center>
<p>
<center>
<input type = "button" value = " 开始视频 " onClick = "StartVideo();" name = "start">
<input type = "button" value = " 停止视频 " onClick = "CmCaptureOcx.Destory();" name = "Destory">
<input type = "button" value = " 拍 照 " onClick = "Capture();" name = "Capture">
<input type = "button" value = " 条码拍摄 " onClick = "ReadBarCode();" name = "ReadBarCode">
<input type = "button" value = " 自动连拍 " onClick = "SeriesCapture();" name = "SeriesCapture"><br>
<input type = "button" value = " 自动裁切 " onClick = "Adjust();" name = "AutoCrop">
<input type = "button" value = " 手动裁切 " onClick = "SetCropArea();" name = "CusCrop">
<input type = "button" value = " 预 览 " onClick = "Preview();" name = "Preview">
<input type = "button" value = " 开始录像 " onClick = "StartVideoRecord();" name = "StartVideo">
<input type = "button" value = " 关闭录像 " onClick = "CmCaptureOcx.EndVideo();" name = "EndVideo"><br>
<input type = "button" value = " 删除文件 " onClick = "DeleteFile();" name = "DeleteFile">
<input type = "button" value = " 消除噪点 " onClick = "SetDenoise();" name = "SetDenoise">
<input type = "button" value = " 图像设置 " onClick = "CmCaptureOcx.ShowImageSettingWindow();" name = "ShowImageSettingWindow">
<input type = "button" value = " 视频设置 " onClick = "CmCaptureOcx.ShowDevSettingWindow();" name = "ShowDevSettingWindow">
<input type = "button" value = " 自动对焦 " onClick = "CmCaptureOcx.AutoFocus();" name = "AutoFocus"><br>
<input type = "button" value = " 证件拍摄 " onClick = "Test();" name = "test">
<input type = "button" value = " 合并PDF " onClick = "ConvertToPDF();" name = "PDF">
<input type = "button" value = " 添加图片水印 " onClick = "SetPicMark();" name = "SetPicMark">
<input type = "button" value = " 获取设备SN " onClick = "GetDevSN();" name = "SN"><br>
<input type = "button" value = " A 3 " onClick = "CmCaptureOcx.SetCusCropType(1);" name = "A3">
<input type = "button" value = " A 4 " onClick = "CmCaptureOcx.SetCusCropType(2);" name = "A4">
<br><br>
</center>
<form name = "Reso">
设 备 名 称:
<select name="DeviceName" id = "DeviceName" onchange = "ChangeDevice()">
<option value="0"></option>
<option value="1"></option>
<option value="2"></option>
<option value="3"></option>
<option value="4"></option>
</select>
分 辨 率 :
<select name="Resolution" id = "Resolution" onchange = "SetResolution()">
<option value="0">开启视频后获取分辨率</option>
<option value="1"></option>
<option value="2"></option>
<option value="3"></option>
<option value="4"></option>
<option value="5"></option>
<option value="6"></option>
<option value="7"></option>
<option value="8"></option>
<option value="9"></option>
</select>
图 片 格 式:
<select name="FileType" id = "FileType" onchange = "SetFileType()">
<option value="0">bmp</option>
<option value="1">jpg</option>
<option value="2">tif</option>
<option value="3">png</option>
</select>
颜 色 格 式:
<select name="ColourMode" id = "ColourMode" onchange = "SetImageColorMode()">
<option value="0">彩色</option>
<option value="1">灰度</option>
<option value="2">黑白</option>
<option value="3">印章</option>
<option value="4">签名</option>
</select>
</form>
输入URL地址:
<input type = "text" name = "URL" id = "URL" value = "http://192.168.1.123:8080/UploadTestApp/uploadfile.do">
<input type = "button" value = " 文件上传 " onClick = "UpdataFile();" name = "Updata">
</p>
</body>
</html>
紫光高拍仪C5422二次嵌入开发相关推荐
- 记录紫图高拍仪的一个使用兼容问题
本码农接到领导任务:需要将紫图高拍仪接入当前web系统. 但是由于本马大哈只埋头苦干,并没有询问开发详细细节,就导致项目发布到生产环境上问题百出. 主要问题有两点: 1.客户使用的浏览器为IE8,IE ...
- 奔图高拍仪-vue二次开发
开发环境:Windows10系统 高拍仪品牌:奔图PFZ1201 首先问那边技术要过来二次开发的sdk,安装成功后,文件夹里会有名为samples的文件夹,里面放着的就是demo了. 我的是这个版本 ...
- 泛微E9下紫光G750高拍仪集成总结
最近做了一个E9和紫光高拍仪集成的开发,经过探索,初见成效,做下记录,也希望能对大家有所帮助. 采用的方式为base64上传图片,将图片上传到服务器物理路径后,调用E9生成到知识模块中,并更新到流程表 ...
- 在网页中调用摄像头实现拍照上传 - 高拍仪二次开发
在网页中调用摄像头实现拍照上传 高拍仪二次开发 在一些公共部门的办事处,比如银行.护照办理中心.税务等,我们可能会注意到办公桌上摆着这样一台机器.办公人员用它拍摄各种证件.文件.表格,有时候还 ...
- c++ 二次开发 良田高拍仪_在网页中调用摄像头实现拍照上传 - 高拍仪二次开发...
来源于 https://blog.csdn.net/weixin_40659738/article/details/78252562 在网页中调用摄像头实现拍照上传 高拍仪二次开发 在一些公共部门的 ...
- c++ 二次开发 良田高拍仪_良田高拍仪集成vue项目
一.硬件及开发包说明: 产品型号为良田高拍仪S1800A3,集成b/s系统,适用现代浏览器,图片使用BASE64数据.开发包的bin文件下的video.flt文件需要和高拍仪型号的硬件id对应,这个可 ...
- 良田高拍仪集成vue项目
一.硬件及开发包说明: 产品型号为良田高拍仪S1800A3,集成b/s系统,适用现代浏览器,图片使用BASE64数据.开发包的bin文件下的video.flt文件需要和高拍仪型号的硬件id对应,这个可 ...
- 维山VS073高拍仪技术规格说明书
一.产品介绍 婚姻登记专用设备实现自动录入当事人个人生物特征信息(人脸.指纹) .信息采集:实现电子签名.文件档案电子化(高拍仪),实现婚姻登记高效精准服务. 二.技术参数 技 术 参 数 01 文 ...
- 方正高拍仪文件上传到服务器,高拍仪拍摄文件后如何进行文字识别?本地文件能否导入高拍仪进行识别?...
原标题:高拍仪拍摄文件后如何进行文字识别?本地文件能否导入高拍仪进行识别? 日常办公和学习中,常常有许多资料需要进行二次编辑,但受限于文件是纸质文档或者图片文件,无法直接进行二次编辑,只能把相关信息手 ...
最新文章
- 中科院分词ICTCLAS5.0_JNI 使用方法
- Knative 初体验:CICD 极速入门
- 【转贴】大型ORACLE数据库优化设计方案
- C语言的本质(3)——整数的本质与运算
- http超文本传输协议
- 学习笔记之卸载远程目标进程中的DLL模块(转)
- 基于阿里云物联网平台,我们这样实现简易出入监控
- 新版易支付源码支持即时到账功能
- 什么样的摄影题材更能吸引大众的目光?
- 学习SQL:SQL Server数据透视表
- url传值的一个问题解决
- 19个程序员接私活平台汇总升级版!你有技术就有钱!
- T3及报税软件报表使用无线打印机打印凭证没反应
- 使用js正则表达式验证
- w10系统桌面的计算机找不到,w10桌面我的电脑图标不见了怎么办
- 吴恩达NLP课程资料
- android 动态权限aop,Android — AOP 动态权限申请
- 医疗行业:容灾备份平台建设及运维难点
- ACL-IJCAI-SIGIR顶级会议论文报告会(AIS 2022)笔记2:分析与可解释性
- lol德玛西亚登录服务器未响应,LOL客户端又出现问题?大量玩家无法登陆,解决方法已出现!...
热门文章
- BRDF详解(包括:irradiance,radiance,intensity,立体角)
- notepad美化php,notepad如何格式化json
- Shell教程--Shell 函数
- select下拉框多选,超级好用!十分强大!
- 【SCADA案例】智能楼宇/家居的远程监控示例
- Excel如何快速对表格数据进行随机排序
- 安装Android SDK后双击SDK Manager.exe闪退
- mysql 18456_sa登陆失败 SQL Server错误18456的解决方法_MySQL
- 五步教你将Intellij IDEA设置成中文(2022年最新教程)附图解(方法二可通用于DataGrip,PyCharm,WebStorm等jetbrains全家桶)
- 计算方法 | 范数(向量:1范数、2范数、无穷范数;矩阵:行范数、列范数)