| | |
| | | { |
| | | "Version": 1, |
| | | "WorkspaceRootPath": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\", |
| | | "WorkspaceRootPath": "E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\", |
| | | "Documents": [ |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\ssg\\alarmresetjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\ssg\\alarmresetjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | "AbsoluteMoniker": "D:0:0:{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}|WIDESEAWCS_Common\\WIDESEAWCS_Common.csproj|e:\\\u9879\u76EE\u6E90\u7801\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_common\\faceai\\face.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}|WIDESEAWCS_Common\\WIDESEAWCS_Common.csproj|solutionrelative:wideseawcs_common\\faceai\\face.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\ssg\\ssgonejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\ssg\\ssgonejob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\ssg\\ssgtwojob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\ssg\\ssgtwojob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{A14242DD-DA06-4DC3-8598-1761AA7C76D1}|WIDESEAWCS_SystemServices\\WIDESEAWCS_SystemServices.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_systemservices\\sys_userservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{A14242DD-DA06-4DC3-8598-1761AA7C76D1}|WIDESEAWCS_SystemServices\\WIDESEAWCS_SystemServices.csproj|solutionrelative:wideseawcs_systemservices\\sys_userservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_server\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\\u9879\u76EE\u6E90\u7801\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_server\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_server\\filter\\autofacpropertitymodulereg.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\filter\\autofacpropertitymodulereg.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_server\\controllers\\telescopic\\alarmresethsycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\telescopic\\alarmresethsycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_server\\controllers\\telescopic\\facerecognitioncontroller .cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\telescopic\\facerecognitioncontroller .cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_model\\models\\telescopic\\dt_alarmresethsy.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|solutionrelative:wideseawcs_model\\models\\telescopic\\dt_alarmresethsy.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{1B1C16CA-8989-4590-BAF6-B55DCC330218}|WIDESEAWCS_TelescopicService\\WIDESEAWCS_TelescopicService.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_telescopicservice\\alarmresethsyserver.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{1B1C16CA-8989-4590-BAF6-B55DCC330218}|WIDESEAWCS_TelescopicService\\WIDESEAWCS_TelescopicService.csproj|solutionrelative:wideseawcs_telescopicservice\\alarmresethsyserver.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{4784950F-D89F-4F0A-9FFD-E8F44589AC2A}|WIDESEAWCS_ITelescopicService\\WIDESEAWCS_ITelescopicService.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_itelescopicservice\\ialarmresethsyserver.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{4784950F-D89F-4F0A-9FFD-E8F44589AC2A}|WIDESEAWCS_ITelescopicService\\WIDESEAWCS_ITelescopicService.csproj|solutionrelative:wideseawcs_itelescopicservice\\ialarmresethsyserver.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{1B1C16CA-8989-4590-BAF6-B55DCC330218}|WIDESEAWCS_TelescopicService\\WIDESEAWCS_TelescopicService.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_telescopicservice\\facerecognitionserver.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{1B1C16CA-8989-4590-BAF6-B55DCC330218}|WIDESEAWCS_TelescopicService\\WIDESEAWCS_TelescopicService.csproj|solutionrelative:wideseawcs_telescopicservice\\facerecognitionserver.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{4784950F-D89F-4F0A-9FFD-E8F44589AC2A}|WIDESEAWCS_ITelescopicService\\WIDESEAWCS_ITelescopicService.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_itelescopicservice\\imaintenanceteamservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{4784950F-D89F-4F0A-9FFD-E8F44589AC2A}|WIDESEAWCS_ITelescopicService\\WIDESEAWCS_ITelescopicService.csproj|solutionrelative:wideseawcs_itelescopicservice\\imaintenanceteamservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{1B1C16CA-8989-4590-BAF6-B55DCC330218}|WIDESEAWCS_TelescopicService\\WIDESEAWCS_TelescopicService.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_telescopicservice\\maintenanceteamservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{1B1C16CA-8989-4590-BAF6-B55DCC330218}|WIDESEAWCS_TelescopicService\\WIDESEAWCS_TelescopicService.csproj|solutionrelative:wideseawcs_telescopicservice\\maintenanceteamservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{1B1C16CA-8989-4590-BAF6-B55DCC330218}|WIDESEAWCS_TelescopicService\\WIDESEAWCS_TelescopicService.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_telescopicservice\\parametersservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{1B1C16CA-8989-4590-BAF6-B55DCC330218}|WIDESEAWCS_TelescopicService\\WIDESEAWCS_TelescopicService.csproj|solutionrelative:wideseawcs_telescopicservice\\parametersservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_server\\controllers\\telescopic\\parameterscontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\telescopic\\parameterscontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_model\\models\\telescopic\\dt_parameters.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|solutionrelative:wideseawcs_model\\models\\telescopic\\dt_parameters.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\wideseawcs_tasks.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", |
| | | "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\wideseawcs_tasks.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_server\\controllers\\telescopic\\loginhsycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\telescopic\\loginhsycontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{4784950F-D89F-4F0A-9FFD-E8F44589AC2A}|WIDESEAWCS_ITelescopicService\\WIDESEAWCS_ITelescopicService.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_itelescopicservice\\ifacerecognitionserver .cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{4784950F-D89F-4F0A-9FFD-E8F44589AC2A}|WIDESEAWCS_ITelescopicService\\WIDESEAWCS_ITelescopicService.csproj|solutionrelative:wideseawcs_itelescopicservice\\ifacerecognitionserver .cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_model\\models\\telescopic\\dt_facerecognition.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|solutionrelative:wideseawcs_model\\models\\telescopic\\dt_facerecognition.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_model\\models\\telescopic\\dt_maintenance.cs||{8B382828-6202-11D1-8870-0000F87579D2}", |
| | | "RelativeMoniker": "D:0:0:{7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|solutionrelative:wideseawcs_model\\models\\telescopic\\dt_maintenance.cs||{8B382828-6202-11D1-8870-0000F87579D2}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\oht\\ohtjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\oht\\ohtjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\oht\\ohtenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\oht\\ohtenum.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{4784950F-D89F-4F0A-9FFD-E8F44589AC2A}|WIDESEAWCS_ITelescopicService\\WIDESEAWCS_ITelescopicService.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_itelescopicservice\\iparametersservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{4784950F-D89F-4F0A-9FFD-E8F44589AC2A}|WIDESEAWCS_ITelescopicService\\WIDESEAWCS_ITelescopicService.csproj|solutionrelative:wideseawcs_itelescopicservice\\iparametersservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{4784950F-D89F-4F0A-9FFD-E8F44589AC2A}|WIDESEAWCS_ITelescopicService\\WIDESEAWCS_ITelescopicService.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_itelescopicservice\\imaintenanceservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{4784950F-D89F-4F0A-9FFD-E8F44589AC2A}|WIDESEAWCS_ITelescopicService\\WIDESEAWCS_ITelescopicService.csproj|solutionrelative:wideseawcs_itelescopicservice\\imaintenanceservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{4784950F-D89F-4F0A-9FFD-E8F44589AC2A}|WIDESEAWCS_ITelescopicService\\WIDESEAWCS_ITelescopicService.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_itelescopicservice\\iloginhsyservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{4784950F-D89F-4F0A-9FFD-E8F44589AC2A}|WIDESEAWCS_ITelescopicService\\WIDESEAWCS_ITelescopicService.csproj|solutionrelative:wideseawcs_itelescopicservice\\iloginhsyservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{B17BAF3C-2BAD-4162-B6DC-46ED7A1E3D8D}|WIDESEAWCS_WMSPart\\WIDESEAWCS_WMSPart.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_wmspart\\locationinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{B17BAF3C-2BAD-4162-B6DC-46ED7A1E3D8D}|WIDESEAWCS_WMSPart\\WIDESEAWCS_WMSPart.csproj|solutionrelative:wideseawcs_wmspart\\locationinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{B17BAF3C-2BAD-4162-B6DC-46ED7A1E3D8D}|WIDESEAWCS_WMSPart\\WIDESEAWCS_WMSPart.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_wmspart\\stockinfodetailservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{B17BAF3C-2BAD-4162-B6DC-46ED7A1E3D8D}|WIDESEAWCS_WMSPart\\WIDESEAWCS_WMSPart.csproj|solutionrelative:wideseawcs_wmspart\\stockinfodetailservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{B17BAF3C-2BAD-4162-B6DC-46ED7A1E3D8D}|WIDESEAWCS_WMSPart\\WIDESEAWCS_WMSPart.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_wmspart\\stockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{B17BAF3C-2BAD-4162-B6DC-46ED7A1E3D8D}|WIDESEAWCS_WMSPart\\WIDESEAWCS_WMSPart.csproj|solutionrelative:wideseawcs_wmspart\\stockinfoservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{1B1C16CA-8989-4590-BAF6-B55DCC330218}|WIDESEAWCS_TelescopicService\\WIDESEAWCS_TelescopicService.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_telescopicservice\\loginhsyservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{1B1C16CA-8989-4590-BAF6-B55DCC330218}|WIDESEAWCS_TelescopicService\\WIDESEAWCS_TelescopicService.csproj|solutionrelative:wideseawcs_telescopicservice\\loginhsyservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_server\\controllers\\wmspart\\locationinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\wmspart\\locationinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|solutionrelative:wideseawcs_taskinfoservice\\taskservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_taskinfoservice\\taskhtyservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|solutionrelative:wideseawcs_taskinfoservice\\taskhtyservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_taskinfoservice\\taskexecutedetailservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{83F18A31-5983-4587-A0B2-414BF70E50B5}|WIDESEAWCS_TaskInfoService\\WIDESEAWCS_TaskInfoService.csproj|solutionrelative:wideseawcs_taskinfoservice\\taskexecutedetailservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{7279A2AE-8D1F-4E66-A73A-01AF7927A336}|WIDESEAWCS_ITaskInfoService\\WIDESEAWCS_ITaskInfoService.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_itaskinfoservice\\itaskhtyservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{7279A2AE-8D1F-4E66-A73A-01AF7927A336}|WIDESEAWCS_ITaskInfoService\\WIDESEAWCS_ITaskInfoService.csproj|solutionrelative:wideseawcs_itaskinfoservice\\itaskhtyservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{7279A2AE-8D1F-4E66-A73A-01AF7927A336}|WIDESEAWCS_ITaskInfoService\\WIDESEAWCS_ITaskInfoService.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_itaskinfoservice\\itaskexecutedetailservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{7279A2AE-8D1F-4E66-A73A-01AF7927A336}|WIDESEAWCS_ITaskInfoService\\WIDESEAWCS_ITaskInfoService.csproj|solutionrelative:wideseawcs_itaskinfoservice\\itaskexecutedetailservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_tasks\\gzj\\gzjjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{294E4915-0241-4C8C-BA99-7588B945863A}|WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj|solutionrelative:wideseawcs_tasks\\gzj\\gzjjob.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_server\\controllers\\quartzjob\\deviceinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\quartzjob\\deviceinfocontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_server\\controllers\\system\\batchcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\system\\batchcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{9E4BFF47-52BF-4FD8-9CC7-3763BF19D9E0}|WIDESEAWCS_ISystemServices\\WIDESEAWCS_ISystemServices.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_isystemservices\\isys_userservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{9E4BFF47-52BF-4FD8-9CC7-3763BF19D9E0}|WIDESEAWCS_ISystemServices\\WIDESEAWCS_ISystemServices.csproj|solutionrelative:wideseawcs_isystemservices\\isys_userservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_server\\controllers\\system\\sys_usercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\system\\sys_usercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}", |
| | | "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}", |
| | | "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\appsettings.json||{90A6B3A7-C1A3-4009-A288-E2FF89E96FA0}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{1B1C16CA-8989-4590-BAF6-B55DCC330218}|WIDESEAWCS_TelescopicService\\WIDESEAWCS_TelescopicService.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_telescopicservice\\maintenanceservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{1B1C16CA-8989-4590-BAF6-B55DCC330218}|WIDESEAWCS_TelescopicService\\WIDESEAWCS_TelescopicService.csproj|solutionrelative:wideseawcs_telescopicservice\\maintenanceservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | "AbsoluteMoniker": "D:0:0:{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}|WIDESEAWCS_Common\\WIDESEAWCS_Common.csproj|e:\\\u9879\u76EE\u6E90\u7801\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_common\\faceai\\faceattr.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}|WIDESEAWCS_Common\\WIDESEAWCS_Common.csproj|solutionrelative:wideseawcs_common\\faceai\\faceattr.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_server\\controllers\\telescopic\\maintenancecontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\telescopic\\maintenancecontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | "AbsoluteMoniker": "D:0:0:{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}|WIDESEAWCS_Common\\WIDESEAWCS_Common.csproj|e:\\\u9879\u76EE\u6E90\u7801\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_common\\faceai\\facecompare.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}|WIDESEAWCS_Common\\WIDESEAWCS_Common.csproj|solutionrelative:wideseawcs_common\\faceai\\facecompare.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_server\\controllers\\telescopic\\maintenanceteamcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\telescopic\\maintenanceteamcontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | "AbsoluteMoniker": "D:0:0:{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}|WIDESEAWCS_Common\\WIDESEAWCS_Common.csproj|e:\\\u9879\u76EE\u6E90\u7801\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_common\\faceai\\facemanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}|WIDESEAWCS_Common\\WIDESEAWCS_Common.csproj|solutionrelative:wideseawcs_common\\faceai\\facemanager.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{C2D3D138-9109-481B-8BEB-A27597890B2C}|WIDESEAWCS_DTO\\WIDESEAWCS_DTO.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_dto\\telescopic\\paginationdto.cs||{8B382828-6202-11D1-8870-0000F87579D2}", |
| | | "RelativeMoniker": "D:0:0:{C2D3D138-9109-481B-8BEB-A27597890B2C}|WIDESEAWCS_DTO\\WIDESEAWCS_DTO.csproj|solutionrelative:wideseawcs_dto\\telescopic\\paginationdto.cs||{8B382828-6202-11D1-8870-0000F87579D2}" |
| | | "AbsoluteMoniker": "D:0:0:{A14242DD-DA06-4DC3-8598-1761AA7C76D1}|WIDESEAWCS_SystemServices\\WIDESEAWCS_SystemServices.csproj|E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\wideseawcs_systemservices\\sys_userservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{A14242DD-DA06-4DC3-8598-1761AA7C76D1}|WIDESEAWCS_SystemServices\\WIDESEAWCS_SystemServices.csproj|solutionrelative:wideseawcs_systemservices\\sys_userservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_model\\models\\telescopic\\dt_loginhsy.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|solutionrelative:wideseawcs_model\\models\\telescopic\\dt_loginhsy.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | "AbsoluteMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\wideseawcs_server\\controllers\\system\\sys_usercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{487FA45B-EA1A-4ACA-BB5B-0F6708F462C0}|WIDESEAWCS_Server\\WIDESEAWCS_Server.csproj|solutionrelative:wideseawcs_server\\controllers\\system\\sys_usercontroller.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{C2D3D138-9109-481B-8BEB-A27597890B2C}|WIDESEAWCS_DTO\\WIDESEAWCS_DTO.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_dto\\system\\adduserdto.cs||{8B382828-6202-11D1-8870-0000F87579D2}", |
| | | "RelativeMoniker": "D:0:0:{C2D3D138-9109-481B-8BEB-A27597890B2C}|WIDESEAWCS_DTO\\WIDESEAWCS_DTO.csproj|solutionrelative:wideseawcs_dto\\system\\adduserdto.cs||{8B382828-6202-11D1-8870-0000F87579D2}" |
| | | "AbsoluteMoniker": "D:0:0:{9E4BFF47-52BF-4FD8-9CC7-3763BF19D9E0}|WIDESEAWCS_ISystemServices\\WIDESEAWCS_ISystemServices.csproj|E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\wideseawcs_isystemservices\\isys_userservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{9E4BFF47-52BF-4FD8-9CC7-3763BF19D9E0}|WIDESEAWCS_ISystemServices\\WIDESEAWCS_ISystemServices.csproj|solutionrelative:wideseawcs_isystemservices\\isys_userservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|e:\\\u4F38\u7F29\u6746\\shensuogankongzhi\\\u9879\u76EE\u4EE3\u7801\\wcs\\wideseawcs_server\\wideseawcs_model\\models\\system\\sys_user.cs||{8B382828-6202-11D1-8870-0000F87579D2}", |
| | | "RelativeMoniker": "D:0:0:{7F200FE8-CAF6-4131-BD25-8D438FE0ABAC}|WIDESEAWCS_Model\\WIDESEAWCS_Model.csproj|solutionrelative:wideseawcs_model\\models\\system\\sys_user.cs||{8B382828-6202-11D1-8870-0000F87579D2}" |
| | | "AbsoluteMoniker": "D:0:0:{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}|WIDESEAWCS_Common\\WIDESEAWCS_Common.csproj|E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\wideseawcs_common\\baidufacehelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}|WIDESEAWCS_Common\\WIDESEAWCS_Common.csproj|solutionrelative:wideseawcs_common\\baidufacehelper.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{1B1C16CA-8989-4590-BAF6-B55DCC330218}|WIDESEAWCS_TelescopicService\\WIDESEAWCS_TelescopicService.csproj|E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\wideseawcs_telescopicservice\\parametersservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{1B1C16CA-8989-4590-BAF6-B55DCC330218}|WIDESEAWCS_TelescopicService\\WIDESEAWCS_TelescopicService.csproj|solutionrelative:wideseawcs_telescopicservice\\parametersservice.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{1B1C16CA-8989-4590-BAF6-B55DCC330218}|WIDESEAWCS_TelescopicService\\WIDESEAWCS_TelescopicService.csproj|E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\wideseawcs_telescopicservice\\facerecognitionserver.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{1B1C16CA-8989-4590-BAF6-B55DCC330218}|WIDESEAWCS_TelescopicService\\WIDESEAWCS_TelescopicService.csproj|solutionrelative:wideseawcs_telescopicservice\\facerecognitionserver.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}|WIDESEAWCS_Common\\WIDESEAWCS_Common.csproj|E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\wideseawcs_common\\faceai\\imageutil.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}|WIDESEAWCS_Common\\WIDESEAWCS_Common.csproj|solutionrelative:wideseawcs_common\\faceai\\imageutil.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | }, |
| | | { |
| | | "AbsoluteMoniker": "D:0:0:{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}|WIDESEAWCS_Common\\WIDESEAWCS_Common.csproj|E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\wideseawcs_common\\faceai\\facetrack.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", |
| | | "RelativeMoniker": "D:0:0:{9FBC654C-51DE-422D-9E1E-6A38268DE1E2}|WIDESEAWCS_Common\\WIDESEAWCS_Common.csproj|solutionrelative:wideseawcs_common\\faceai\\facetrack.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" |
| | | } |
| | | ], |
| | | "DocumentGroupContainers": [ |
| | |
| | | "DocumentGroups": [ |
| | | { |
| | | "DockedWidth": 200, |
| | | "SelectedChildIndex": 1, |
| | | "SelectedChildIndex": 18, |
| | | "Children": [ |
| | | { |
| | | "$type": "Bookmark", |
| | | "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}" |
| | | "Name": "ST:131:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}" |
| | | }, |
| | | { |
| | | "$type": "Bookmark", |
| | | "Name": "ST:132:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}" |
| | | }, |
| | | { |
| | | "$type": "Bookmark", |
| | | "Name": "ST:12:0:{2456bd12-ecf7-4988-a4a6-67d49173f565}" |
| | | }, |
| | | { |
| | | "$type": "Bookmark", |
| | | "Name": "ST:17:0:{2456bd12-ecf7-4988-a4a6-67d49173f565}" |
| | | }, |
| | | { |
| | | "$type": "Bookmark", |
| | | "Name": "ST:0:0:{65ddf8c3-8f89-4077-a6c6-dbb8853aab13}" |
| | | }, |
| | | { |
| | | "$type": "Bookmark", |
| | | "Name": "ST:133:0:{1fc202d4-d401-403c-9834-5b218574bb67}" |
| | | }, |
| | | { |
| | | "$type": "Bookmark", |
| | | "Name": "ST:129:0:{1fc202d4-d401-403c-9834-5b218574bb67}" |
| | | }, |
| | | { |
| | | "$type": "Bookmark", |
| | | "Name": "ST:128:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}" |
| | | }, |
| | | { |
| | | "$type": "Bookmark", |
| | | "Name": "ST:129:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}" |
| | | }, |
| | | { |
| | | "$type": "Bookmark", |
| | | "Name": "ST:131:0:{1fc202d4-d401-403c-9834-5b218574bb67}" |
| | | }, |
| | | { |
| | | "$type": "Bookmark", |
| | | "Name": "ST:130:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}" |
| | | }, |
| | | { |
| | | "$type": "Bookmark", |
| | | "Name": "ST:135:0:{1fc202d4-d401-403c-9834-5b218574bb67}" |
| | | }, |
| | | { |
| | | "$type": "Bookmark", |
| | | "Name": "ST:136:0:{1fc202d4-d401-403c-9834-5b218574bb67}" |
| | | }, |
| | | { |
| | | "$type": "Bookmark", |
| | | "Name": "ST:134:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}" |
| | | }, |
| | | { |
| | | "$type": "Bookmark", |
| | | "Name": "ST:0:0:{cce594b6-0c39-4442-ba28-10c64ac7e89f}" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 1, |
| | | "Title": "Program.cs", |
| | | "DocumentMoniker": "E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Program.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Program.cs", |
| | | "ToolTip": "E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Program.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Server\\Program.cs", |
| | | "ViewState": "AQIAAGoAAAAAAAAAAAAAAHYAAAATAAAA", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-28T03:53:12.871Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 3, |
| | | "Title": "FaceAttr.cs", |
| | | "DocumentMoniker": "E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\FaceAI\\FaceAttr.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Common\\FaceAI\\FaceAttr.cs", |
| | | "ToolTip": "E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\FaceAI\\FaceAttr.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Common\\FaceAI\\FaceAttr.cs", |
| | | "ViewState": "AQIAAAAAAAAAAAAAAADwvwAAAAAAAAAA", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-28T03:50:04.487Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 5, |
| | | "Title": "FaceManager.cs", |
| | | "DocumentMoniker": "E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\FaceAI\\FaceManager.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Common\\FaceAI\\FaceManager.cs", |
| | | "ToolTip": "E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\FaceAI\\FaceManager.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Common\\FaceAI\\FaceManager.cs", |
| | | "ViewState": "AQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-28T03:49:54.229Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 0, |
| | | "Title": "AlarmResetJob.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\SSG\\AlarmResetJob.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\SSG\\AlarmResetJob.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\SSG\\AlarmResetJob.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Tasks\\SSG\\AlarmResetJob.cs", |
| | | "ViewState": "AgIAABAAAAAAAAAAAAAAwBsAAAAAAAAAAAAAAA==", |
| | | "Title": "Face.cs", |
| | | "DocumentMoniker": "E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\FaceAI\\Face.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Common\\FaceAI\\Face.cs", |
| | | "ToolTip": "E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\FaceAI\\Face.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Common\\FaceAI\\Face.cs", |
| | | "ViewState": "AQIAACkAAAAAAAAAAAAYwEEAAAArAAAA", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-25T03:40:57.559Z", |
| | | "WhenOpened": "2025-04-28T03:49:48.428Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 2, |
| | | "Title": "SSGTwoJob.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\SSG\\SSGTwoJob.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\SSG\\SSGTwoJob.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\SSG\\SSGTwoJob.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Tasks\\SSG\\SSGTwoJob.cs", |
| | | "ViewState": "AgIAABsAAAAAAAAAAADwvx0AAAAEAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-25T03:27:19.551Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 10, |
| | | "Title": "IAlarmResetHsyServer.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITelescopicService\\IAlarmResetHsyServer.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_ITelescopicService\\IAlarmResetHsyServer.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITelescopicService\\IAlarmResetHsyServer.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_ITelescopicService\\IAlarmResetHsyServer.cs", |
| | | "ViewState": "AgIAAAMAAAAAAAAAAADwvxMAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-25T06:40:30.15Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 4, |
| | | "Title": "Program.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Program.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Program.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Program.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Server\\Program.cs", |
| | | "ViewState": "AgIAAHcAAAAAAAAAAAAiwJYAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-25T06:16:10.763Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 1, |
| | | "Title": "SSGOneJob.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\SSG\\SSGOneJob.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\SSG\\SSGOneJob.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\SSG\\SSGOneJob.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Tasks\\SSG\\SSGOneJob.cs", |
| | | "ViewState": "AgIAABIAAAAAAAAAAAAAACcAAAA3AAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-25T03:27:13.297Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 3, |
| | | "Title": "Sys_UserService.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_SystemServices\\Sys_UserService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_SystemServices\\Sys_UserService.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_SystemServices\\Sys_UserService.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_SystemServices\\Sys_UserService.cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAAAAAA4AAAAWAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-07T09:19:43.403Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 5, |
| | | "Title": "AutofacPropertityModuleReg.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Filter\\AutofacPropertityModuleReg.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Filter\\AutofacPropertityModuleReg.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Filter\\AutofacPropertityModuleReg.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Server\\Filter\\AutofacPropertityModuleReg.cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAAAAAAgAAAAJAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-25T08:52:15.117Z" |
| | | "Title": "appsettings.json", |
| | | "DocumentMoniker": "E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\appsettings.json", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Server\\appsettings.json", |
| | | "ToolTip": "E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\appsettings.json", |
| | | "RelativeToolTip": "WIDESEAWCS_Server\\appsettings.json", |
| | | "ViewState": "AQIAAAoAAAAAAAAAAAAAABEAAAAYAAAA", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|", |
| | | "WhenOpened": "2025-04-27T02:51:42.502Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 7, |
| | | "Title": "FaceRecognitionController .cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\Telescopic\\FaceRecognitionController .cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\Telescopic\\FaceRecognitionController .cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\Telescopic\\FaceRecognitionController .cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\Telescopic\\FaceRecognitionController .cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAABVAAAAAAAAAA==", |
| | | "Title": "Sys_UserController.cs", |
| | | "DocumentMoniker": "E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\System\\Sys_UserController.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\System\\Sys_UserController.cs", |
| | | "ToolTip": "E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\System\\Sys_UserController.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\System\\Sys_UserController.cs", |
| | | "ViewState": "AQIAABQAAAAAAAAAAAAAACMAAAAmAAAA", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-16T02:30:26.795Z" |
| | | "WhenOpened": "2025-04-27T02:48:46.616Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 8, |
| | | "Title": "ISys_UserService.cs", |
| | | "DocumentMoniker": "E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ISystemServices\\ISys_UserService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_ISystemServices\\ISys_UserService.cs", |
| | | "ToolTip": "E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ISystemServices\\ISys_UserService.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_ISystemServices\\ISys_UserService.cs", |
| | | "ViewState": "AQIAADgAAAAAAAAAAAAiwE4AAAAIAAAA", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-27T02:47:49.281Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 4, |
| | | "Title": "FaceCompare.cs", |
| | | "DocumentMoniker": "E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\FaceAI\\FaceCompare.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Common\\FaceAI\\FaceCompare.cs", |
| | | "ToolTip": "E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\FaceAI\\FaceCompare.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Common\\FaceAI\\FaceCompare.cs", |
| | | "ViewState": "AQIAAAkAAAAAAAAAAAAlwBgAAAAWAAAA", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-27T02:39:43.91Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 6, |
| | | "Title": "Sys_UserService.cs", |
| | | "DocumentMoniker": "E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_SystemServices\\Sys_UserService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_SystemServices\\Sys_UserService.cs", |
| | | "ToolTip": "E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_SystemServices\\Sys_UserService.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_SystemServices\\Sys_UserService.cs", |
| | | "ViewState": "AQIAAAsBAAAAAAAAAAAgwBgBAAAYAAAA", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-27T02:32:59.781Z", |
| | | "EditorCaption": "" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 10, |
| | | "Title": "ParametersService.cs", |
| | | "DocumentMoniker": "E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\ParametersService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_TelescopicService\\ParametersService.cs", |
| | | "ToolTip": "E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\ParametersService.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_TelescopicService\\ParametersService.cs", |
| | | "ViewState": "AQIAAFMAAAAAAAAAAAAUwAAAAAAAAAAA", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-27T02:32:42.77Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 11, |
| | | "Title": "FaceRecognitionServer.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\FaceRecognitionServer.cs", |
| | | "DocumentMoniker": "E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\FaceRecognitionServer.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_TelescopicService\\FaceRecognitionServer.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\FaceRecognitionServer.cs", |
| | | "ToolTip": "E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\FaceRecognitionServer.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_TelescopicService\\FaceRecognitionServer.cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==", |
| | | "ViewState": "AQIAAAAAAAAAAAAAAAAAABIAAAAAAAAA", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-08T03:12:20.085Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 6, |
| | | "Title": "AlarmResetHsyController.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\Telescopic\\AlarmResetHsyController.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\Telescopic\\AlarmResetHsyController.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\Telescopic\\AlarmResetHsyController.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\Telescopic\\AlarmResetHsyController.cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAAAAAAgAAAAiAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-25T06:42:50.119Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 8, |
| | | "Title": "Dt_AlarmResetHsy.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\Telescopic\\Dt_AlarmResetHsy.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\Telescopic\\Dt_AlarmResetHsy.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\Telescopic\\Dt_AlarmResetHsy.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Model\\Models\\Telescopic\\Dt_AlarmResetHsy.cs", |
| | | "ViewState": "AgIAAAwAAAAAAAAAAADwvw8AAAAjAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-25T06:21:18.958Z" |
| | | "WhenOpened": "2025-04-27T02:32:36.39Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 9, |
| | | "Title": "AlarmResetHsyServer.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\AlarmResetHsyServer.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_TelescopicService\\AlarmResetHsyServer.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\AlarmResetHsyServer.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_TelescopicService\\AlarmResetHsyServer.cs", |
| | | "ViewState": "AgIAABIAAAAAAAAAAAAQwB8AAAAsAAAAAAAAAA==", |
| | | "Title": "BaiDuFaceHelper.cs", |
| | | "DocumentMoniker": "E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\BaiDuFaceHelper.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Common\\BaiDuFaceHelper.cs", |
| | | "ToolTip": "E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\BaiDuFaceHelper.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Common\\BaiDuFaceHelper.cs", |
| | | "ViewState": "AQIAAAAAAAAAAAAAAAAuwAwAAAAgAAAA", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-25T06:40:56.943Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 12, |
| | | "Title": "IMaintenanceTeamService.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITelescopicService\\IMaintenanceTeamService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_ITelescopicService\\IMaintenanceTeamService.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITelescopicService\\IMaintenanceTeamService.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_ITelescopicService\\IMaintenanceTeamService.cs", |
| | | "ViewState": "AgIAAAkAAAAAAAAAAAAswBYAAABOAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-07T08:57:55.497Z" |
| | | "WhenOpened": "2025-04-27T02:31:43.641Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 13, |
| | | "Title": "MaintenanceTeamService.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\MaintenanceTeamService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_TelescopicService\\MaintenanceTeamService.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\MaintenanceTeamService.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_TelescopicService\\MaintenanceTeamService.cs", |
| | | "ViewState": "AgIAABAAAAAAAAAAAAAywB4AAAASAAAAAAAAAA==", |
| | | "Title": "FaceTrack.cs", |
| | | "DocumentMoniker": "E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\FaceAI\\FaceTrack.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Common\\FaceAI\\FaceTrack.cs", |
| | | "ToolTip": "E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\FaceAI\\FaceTrack.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Common\\FaceAI\\FaceTrack.cs", |
| | | "ViewState": "AQIAAAAAAAAAAAAAAAAAAAYAAAAQAAAA", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-07T08:11:35.284Z" |
| | | "WhenOpened": "2025-04-27T02:23:48.682Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 14, |
| | | "Title": "ParametersService.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\ParametersService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_TelescopicService\\ParametersService.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\ParametersService.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_TelescopicService\\ParametersService.cs", |
| | | "ViewState": "AgIAABEAAAAAAAAAAAAQwEQAAAAAAAAAAAAAAA==", |
| | | "DocumentIndex": 12, |
| | | "Title": "ImageUtil.cs", |
| | | "DocumentMoniker": "E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\FaceAI\\ImageUtil.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Common\\FaceAI\\ImageUtil.cs", |
| | | "ToolTip": "E:\\\u9879\u76EE\u6E90\u7801\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Common\\FaceAI\\ImageUtil.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Common\\FaceAI\\ImageUtil.cs", |
| | | "ViewState": "AQIAAC0AAAAAAAAAAAAIwEIAAAALAAAA", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-08T00:57:10.872Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 15, |
| | | "Title": "ParametersController.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\Telescopic\\ParametersController.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\Telescopic\\ParametersController.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\Telescopic\\ParametersController.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\Telescopic\\ParametersController.cs", |
| | | "ViewState": "AgIAAA4AAAAAAAAAAAAAwCkAAAAlAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-16T02:28:53.873Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 16, |
| | | "Title": "Dt_Parameters.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\Telescopic\\Dt_Parameters.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\Telescopic\\Dt_Parameters.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\Telescopic\\Dt_Parameters.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Model\\Models\\Telescopic\\Dt_Parameters.cs", |
| | | "ViewState": "AgIAAAsAAAAAAAAAAAAwwAAAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-11T02:21:27.75Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 17, |
| | | "Title": "WIDESEAWCS_Tasks.csproj", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj", |
| | | "RelativeToolTip": "WIDESEAWCS_Tasks\\WIDESEAWCS_Tasks.csproj", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAAAAAAkAAABCAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", |
| | | "WhenOpened": "2025-04-25T07:09:10.764Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 18, |
| | | "Title": "LoginhsyController.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\Telescopic\\LoginhsyController.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\Telescopic\\LoginhsyController.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\Telescopic\\LoginhsyController.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\Telescopic\\LoginhsyController.cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAAAAABYAAAAQAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-07T09:00:37.146Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 20, |
| | | "Title": "Dt_FaceRecognition.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\Telescopic\\Dt_FaceRecognition.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\Telescopic\\Dt_FaceRecognition.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\Telescopic\\Dt_FaceRecognition.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Model\\Models\\Telescopic\\Dt_FaceRecognition.cs", |
| | | "ViewState": "AgIAAAYAAAAAAAAAAADwvxcAAAAGAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-11T02:21:29.966Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 21, |
| | | "Title": "Dt_Maintenance.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\Telescopic\\Dt_Maintenance.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\Telescopic\\Dt_Maintenance.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\Telescopic\\Dt_Maintenance.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Model\\Models\\Telescopic\\Dt_Maintenance.cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAAAAAAsAAAAsAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-09T02:16:51.887Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 19, |
| | | "Title": "IFaceRecognitionServer .cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITelescopicService\\IFaceRecognitionServer .cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_ITelescopicService\\IFaceRecognitionServer .cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITelescopicService\\IFaceRecognitionServer .cs", |
| | | "RelativeToolTip": "WIDESEAWCS_ITelescopicService\\IFaceRecognitionServer .cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAADwvwsAAAAlAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-07T08:20:24.254Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 22, |
| | | "Title": "OHTJob.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\OHT\\OHTJob.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\OHT\\OHTJob.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\OHT\\OHTJob.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Tasks\\OHT\\OHTJob.cs", |
| | | "ViewState": "AgIAAC0BAAAAAAAAAAAkwAAAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-25T03:39:57.683Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 24, |
| | | "Title": "IParametersService.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITelescopicService\\IParametersService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_ITelescopicService\\IParametersService.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITelescopicService\\IParametersService.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_ITelescopicService\\IParametersService.cs", |
| | | "ViewState": "AgIAAA4AAAAAAAAAAAAIwB4AAAAMAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-08T02:55:53.764Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 25, |
| | | "Title": "IMaintenanceService.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITelescopicService\\IMaintenanceService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_ITelescopicService\\IMaintenanceService.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITelescopicService\\IMaintenanceService.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_ITelescopicService\\IMaintenanceService.cs", |
| | | "ViewState": "AgIAABsAAAAAAAAAAAAswDsAAAAhAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-07T08:20:27.319Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 23, |
| | | "Title": "OHTEnum.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\OHT\\OHTEnum.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\OHT\\OHTEnum.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\OHT\\OHTEnum.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Tasks\\OHT\\OHTEnum.cs", |
| | | "ViewState": "AgIAAEAAAAAAAAAAAAAQwAAAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-16T02:29:35.57Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 26, |
| | | "Title": "ILoginhsyService.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITelescopicService\\ILoginhsyService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_ITelescopicService\\ILoginhsyService.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITelescopicService\\ILoginhsyService.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_ITelescopicService\\ILoginhsyService.cs", |
| | | "ViewState": "AgIAAAkAAAAAAAAAAAAAABUAAABBAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-07T08:20:25.166Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 27, |
| | | "Title": "LocationInfoService.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_WMSPart\\LocationInfoService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_WMSPart\\LocationInfoService.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_WMSPart\\LocationInfoService.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_WMSPart\\LocationInfoService.cs", |
| | | "ViewState": "AgIAAKYAAAAAAAAAAAAmwK8AAAANAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-21T07:03:59.4Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 29, |
| | | "Title": "StockInfoService.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_WMSPart\\StockInfoService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_WMSPart\\StockInfoService.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_WMSPart\\StockInfoService.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_WMSPart\\StockInfoService.cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-21T07:03:53.753Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 28, |
| | | "Title": "StockInfoDetailService.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_WMSPart\\StockInfoDetailService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_WMSPart\\StockInfoDetailService.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_WMSPart\\StockInfoDetailService.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_WMSPart\\StockInfoDetailService.cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-21T07:03:57.358Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 31, |
| | | "Title": "LocationInfoController.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\WMSPart\\LocationInfoController.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\WMSPart\\LocationInfoController.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\WMSPart\\LocationInfoController.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\WMSPart\\LocationInfoController.cs", |
| | | "ViewState": "AgIAAAwAAAAAAAAAAADwvxIAAAATAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-21T05:44:52.618Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 32, |
| | | "Title": "TaskService.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_TaskInfoService\\TaskService.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskService.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_TaskInfoService\\TaskService.cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-21T05:44:32.387Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 30, |
| | | "Title": "LoginhsyService.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\LoginhsyService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_TelescopicService\\LoginhsyService.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\LoginhsyService.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_TelescopicService\\LoginhsyService.cs", |
| | | "ViewState": "AgIAABgAAAAAAAAAAABPwCoAAABHAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-07T08:45:18.979Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 33, |
| | | "Title": "TaskhtyService.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskhtyService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_TaskInfoService\\TaskhtyService.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskhtyService.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_TaskInfoService\\TaskhtyService.cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-21T05:44:31.722Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 34, |
| | | "Title": "TaskExecuteDetailService.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskExecuteDetailService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_TaskInfoService\\TaskExecuteDetailService.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TaskInfoService\\TaskExecuteDetailService.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_TaskInfoService\\TaskExecuteDetailService.cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-21T05:44:30.802Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 35, |
| | | "Title": "ITaskhtyService.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITaskInfoService\\ITaskhtyService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_ITaskInfoService\\ITaskhtyService.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITaskInfoService\\ITaskhtyService.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_ITaskInfoService\\ITaskhtyService.cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-21T05:44:28.126Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 36, |
| | | "Title": "ITaskExecuteDetailService.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITaskInfoService\\ITaskExecuteDetailService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_ITaskInfoService\\ITaskExecuteDetailService.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ITaskInfoService\\ITaskExecuteDetailService.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_ITaskInfoService\\ITaskExecuteDetailService.cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-21T05:44:25.811Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 38, |
| | | "Title": "DeviceInfoController.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\QuartzJob\\DeviceInfoController.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\QuartzJob\\DeviceInfoController.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\QuartzJob\\DeviceInfoController.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\QuartzJob\\DeviceInfoController.cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAAAAAAwAAAABAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-16T02:32:15.164Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 37, |
| | | "Title": "GZJJob.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\GZJ\\GZJJob.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Tasks\\GZJ\\GZJJob.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Tasks\\GZJ\\GZJJob.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Tasks\\GZJ\\GZJJob.cs", |
| | | "ViewState": "AgIAAB4AAAAAAAAAAABIwAAAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-16T02:29:23.036Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 44, |
| | | "Title": "MaintenanceController.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\Telescopic\\MaintenanceController.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\Telescopic\\MaintenanceController.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\Telescopic\\MaintenanceController.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\Telescopic\\MaintenanceController.cs", |
| | | "ViewState": "AgIAAEEAAAAAAAAAAAAcwFUAAAAzAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-07T09:02:48.767Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 39, |
| | | "Title": "BatchController.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\System\\BatchController.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\System\\BatchController.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\System\\BatchController.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\System\\BatchController.cs", |
| | | "ViewState": "AgIAACEAAAAAAAAAAAAcwC0AAAAWAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-07T08:13:37.986Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 48, |
| | | "Title": "AddUserDTO.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_DTO\\System\\AddUserDTO.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_DTO\\System\\AddUserDTO.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_DTO\\System\\AddUserDTO.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_DTO\\System\\AddUserDTO.cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-11T03:39:28.112Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 41, |
| | | "Title": "Sys_UserController.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\System\\Sys_UserController.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\System\\Sys_UserController.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\System\\Sys_UserController.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\System\\Sys_UserController.cs", |
| | | "ViewState": "AgIAAN0AAAAAAAAAAABIwO8AAAAzAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-08T01:03:30.746Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 40, |
| | | "Title": "ISys_UserService.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ISystemServices\\ISys_UserService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_ISystemServices\\ISys_UserService.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_ISystemServices\\ISys_UserService.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_ISystemServices\\ISys_UserService.cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAAAAABEAAAA2AAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-08T01:02:33.62Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 49, |
| | | "Title": "Sys_User.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\System\\Sys_User.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\System\\Sys_User.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\System\\Sys_User.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Model\\Models\\System\\Sys_User.cs", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAADwvwAAAAAAAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-11T03:40:33.616Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 42, |
| | | "Title": "appsettings.json", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\appsettings.json", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Server\\appsettings.json", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\appsettings.json", |
| | | "RelativeToolTip": "WIDESEAWCS_Server\\appsettings.json", |
| | | "ViewState": "AgIAAAAAAAAAAAAAAAAAAAoAAAAnAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001642|", |
| | | "WhenOpened": "2025-04-09T08:11:07.528Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 43, |
| | | "Title": "MaintenanceService.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\MaintenanceService.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_TelescopicService\\MaintenanceService.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_TelescopicService\\MaintenanceService.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_TelescopicService\\MaintenanceService.cs", |
| | | "ViewState": "AgIAAAEBAAAAAAAAAAAowEoBAABWAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-07T08:11:35.497Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 45, |
| | | "Title": "MaintenanceTeamController.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\Telescopic\\MaintenanceTeamController.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Server\\Controllers\\Telescopic\\MaintenanceTeamController.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Server\\Controllers\\Telescopic\\MaintenanceTeamController.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Server\\Controllers\\Telescopic\\MaintenanceTeamController.cs", |
| | | "ViewState": "AgIAAAcAAAAAAAAAAAAEwB4AAAAzAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-07T09:04:39.138Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 46, |
| | | "Title": "PaginationDTO.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_DTO\\Telescopic\\PaginationDTO.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_DTO\\Telescopic\\PaginationDTO.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_DTO\\Telescopic\\PaginationDTO.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_DTO\\Telescopic\\PaginationDTO.cs", |
| | | "ViewState": "AgIAAB0AAAAAAAAAAAAgwAgAAAARAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-08T02:27:59.467Z" |
| | | }, |
| | | { |
| | | "$type": "Document", |
| | | "DocumentIndex": 47, |
| | | "Title": "Dt_Loginhsy.cs", |
| | | "DocumentMoniker": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\Telescopic\\Dt_Loginhsy.cs", |
| | | "RelativeDocumentMoniker": "WIDESEAWCS_Model\\Models\\Telescopic\\Dt_Loginhsy.cs", |
| | | "ToolTip": "E:\\\u4F38\u7F29\u6746\\ShenSuoGanKongZhi\\\u9879\u76EE\u4EE3\u7801\\WCS\\WIDESEAWCS_Server\\WIDESEAWCS_Model\\Models\\Telescopic\\Dt_Loginhsy.cs", |
| | | "RelativeToolTip": "WIDESEAWCS_Model\\Models\\Telescopic\\Dt_Loginhsy.cs", |
| | | "ViewState": "AgIAABMAAAAAAAAAAAAiwCMAAABEAAAAAAAAAA==", |
| | | "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", |
| | | "WhenOpened": "2025-04-08T01:06:18.439Z" |
| | | "WhenOpened": "2025-04-27T02:24:11.264Z" |
| | | } |
| | | ] |
| | | } |
| | |
| | | using System.Net; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using FaceAI; |
| | | |
| | | namespace WIDESEAWCS_Common |
| | | { |
| | | public class BaiDuFaceHelper |
| | | { |
| | | #region 人è¸è¯å«API |
| | | /// <summary> |
| | | /// è·åAccessToken |
| | | /// </summary> |
| | |
| | | catch { return ""; } |
| | | } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// äººè¸æ£æµä¸å±æ§åæ |
| | | /// </summary> |
| | |
| | | HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host); |
| | | request.Method = "POST"; |
| | | request.KeepAlive = true; |
| | | String str = "{\"image\":\""+ imgbase64 + "\",\"image_type\":\"BASE64\"}"; |
| | | String str = "{\"image\":\"" + imgbase64 + "\",\"image_type\":\"BASE64\"}"; |
| | | byte[] buffer = encoding.GetBytes(str); |
| | | request.ContentLength = buffer.Length; |
| | | request.GetRequestStream().Write(buffer, 0, buffer.Length); |
| | |
| | | HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host); |
| | | request.Method = "post"; |
| | | request.KeepAlive = true; |
| | | String str = "{\"group_id\":\""+ group + "\"}"; |
| | | String str = "{\"group_id\":\"" + group + "\"}"; |
| | | byte[] buffer = encoding.GetBytes(str); |
| | | request.ContentLength = buffer.Length; |
| | | request.GetRequestStream().Write(buffer, 0, buffer.Length); |
| | |
| | | string result = reader.ReadToEnd(); |
| | | |
| | | NLog.LogManager.GetCurrentClassLogger().Trace("äººè¸æ³¨åï¼" + result); |
| | | CreateUserResult res= JsonConvert.DeserializeObject<CreateUserResult>(result);//éè¦å°log_idåface_tokenä¿åå°ç¨æ·è¡¨ä¸ï¼å¨äººè¸å é¤ä¸éè¦ç¨å° |
| | | CreateUserResult res = JsonConvert.DeserializeObject<CreateUserResult>(result);//éè¦å°log_idåface_tokenä¿åå°ç¨æ·è¡¨ä¸ï¼å¨äººè¸å é¤ä¸éè¦ç¨å° |
| | | |
| | | return res; |
| | | } |
| | |
| | | /// äººè¸æç´¢ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public static SearchResult FaceSearch(string path,string group_id_list) |
| | | public static SearchResult FaceSearch(string path, string group_id_list) |
| | | { |
| | | string token = GetAccessToken(); |
| | | var imgbase64 = GetFileContentAsBase64(path); |
| | |
| | | HttpWebRequest request = (HttpWebRequest)WebRequest.Create(host); |
| | | request.Method = "POST"; |
| | | request.KeepAlive = true; |
| | | String str = "{\"image\":\"" + imgbase64 + "\",\"image_type\":\"BASE64\",\"group_id_list\":\""+ group_id_list + "\",\"quality_control\":\"LOW\",\"liveness_control\":\"NORMAL\"}"; |
| | | String str = "{\"image\":\"" + imgbase64 + "\",\"image_type\":\"BASE64\",\"group_id_list\":\"" + group_id_list + "\",\"quality_control\":\"LOW\",\"liveness_control\":\"NORMAL\"}"; |
| | | byte[] buffer = encoding.GetBytes(str); |
| | | request.ContentLength = buffer.Length; |
| | | request.GetRequestStream().Write(buffer, 0, buffer.Length); |
| | |
| | | |
| | | return searchResult; |
| | | } |
| | | #endregion |
| | | |
| | | } |
| | | |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections; |
| | | using System.Runtime.InteropServices; |
| | | using System.Runtime.InteropServices.ComTypes; |
| | | |
| | | namespace FaceAI |
| | | { |
| | | [ComVisible(false)] |
| | | public class FilterCategory // uuids.h : CLSID_* |
| | | { |
| | | /// <summary> CLSID_AudioInputDeviceCategory, audio capture category </summary> |
| | | public static readonly Guid AudioInputDevice = new Guid(0x33d9a762, 0x90c8, 0x11d0, 0xbd, 0x43, 0x00, 0xa0, 0xc9, 0x11, 0xce, 0x86); |
| | | |
| | | /// <summary> CLSID_VideoInputDeviceCategory, video capture category </summary> |
| | | public static readonly Guid VideoInputDevice = new Guid(0x860BB310, 0x5D01, 0x11d0, 0xBD, 0x3B, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86); |
| | | } |
| | | |
| | | [ComVisible(false)] |
| | | public class Clsid // uuids.h : CLSID_* |
| | | { |
| | | /// <summary> CLSID_SystemDeviceEnum for ICreateDevEnum </summary> |
| | | public static readonly Guid SystemDeviceEnum = new Guid(0x62BE5D10, 0x60EB, 0x11d0, 0xBD, 0x3B, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86); |
| | | |
| | | /// <summary> CLSID_FilterGraph, filter Graph </summary> |
| | | public static readonly Guid FilterGraph = new Guid(0xe436ebb3, 0x524f, 0x11ce, 0x9f, 0x53, 0x00, 0x20, 0xaf, 0x0b, 0xa7, 0x70); |
| | | |
| | | /// <summary> CLSID_CaptureGraphBuilder2, new Capture graph building </summary> |
| | | public static readonly Guid CaptureGraphBuilder2 = new Guid(0xBF87B6E1, 0x8C27, 0x11d0, 0xB3, 0xF0, 0x0, 0xAA, 0x00, 0x37, 0x61, 0xC5); |
| | | |
| | | /// <summary> CLSID_SampleGrabber, Sample Grabber filter </summary> |
| | | public static readonly Guid SampleGrabber = new Guid(0xC1F400A0, 0x3F08, 0x11D3, 0x9F, 0x0B, 0x00, 0x60, 0x08, 0x03, 0x9E, 0x37); |
| | | |
| | | /// <summary> CLSID_DvdGraphBuilder, DVD graph builder </summary> |
| | | public static readonly Guid DvdGraphBuilder = new Guid(0xFCC152B7, 0xF372, 0x11d0, 0x8E, 0x00, 0x00, 0xC0, 0x4F, 0xD7, 0xC0, 0x8B); |
| | | |
| | | } |
| | | |
| | | [ComVisible(false)] |
| | | public class DevEnum |
| | | { |
| | | public static bool GetDevicesOfCat(Guid cat, out ArrayList devs) |
| | | { |
| | | devs = null; |
| | | int hr; |
| | | object comObj = null; |
| | | ICreateDevEnum enumDev = null; |
| | | IEnumMoniker enumMon = null; |
| | | IMoniker[] mon = new IMoniker[1]; |
| | | try |
| | | { |
| | | Type srvType = Type.GetTypeFromCLSID(Clsid.SystemDeviceEnum); |
| | | if (srvType == null) |
| | | throw new NotImplementedException("System Device Enumerator"); |
| | | |
| | | comObj = Activator.CreateInstance(srvType); |
| | | enumDev = (ICreateDevEnum)comObj; |
| | | hr = enumDev.CreateClassEnumerator(ref cat, out enumMon, 0); |
| | | if (hr != 0) |
| | | throw new NotSupportedException("No devices of the category"); |
| | | |
| | | int /*f, */count = 0; |
| | | IntPtr ptr = new IntPtr(); |
| | | do |
| | | { |
| | | hr = enumMon.Next(1, mon, ptr); |
| | | if ((hr != 0) || (mon[0] == null)) |
| | | break; |
| | | DsDevice dev = new DsDevice(); |
| | | GetFriendlyName(mon[0], ref dev.Name, ref dev.Path); |
| | | if (devs == null) |
| | | devs = new ArrayList(); |
| | | dev.id = count; |
| | | dev.Mon = mon[0]; mon[0] = null; |
| | | devs.Add(dev); dev = null; |
| | | count++; |
| | | } |
| | | while (true); |
| | | |
| | | return count > 0; |
| | | } |
| | | catch (Exception) |
| | | { |
| | | if (devs != null) |
| | | { |
| | | foreach (DsDevice d in devs) |
| | | d.Dispose(); |
| | | devs = null; |
| | | } |
| | | return false; |
| | | } |
| | | finally |
| | | { |
| | | enumDev = null; |
| | | if (mon[0] != null) |
| | | Marshal.ReleaseComObject(mon[0]); mon[0] = null; |
| | | if (enumMon != null) |
| | | Marshal.ReleaseComObject(enumMon); enumMon = null; |
| | | if (comObj != null) |
| | | Marshal.ReleaseComObject(comObj); comObj = null; |
| | | } |
| | | |
| | | } |
| | | |
| | | private static bool GetFriendlyName(IMoniker mon, ref string devname, ref string devpath) |
| | | { |
| | | object bagObj = null; |
| | | IPropertyBag bag = null; |
| | | try |
| | | { |
| | | Guid bagId = typeof(IPropertyBag).GUID; |
| | | mon.BindToStorage(null, null, ref bagId, out bagObj); |
| | | bag = (IPropertyBag)bagObj; |
| | | object val = ""; |
| | | int hr = bag.Read("Description", ref val, IntPtr.Zero); |
| | | if(hr != 0) |
| | | hr = bag.Read("FriendlyName", ref val, IntPtr.Zero); |
| | | if (hr != 0) |
| | | Marshal.ThrowExceptionForHR(hr); |
| | | devname = val as string; |
| | | if ((devname == null) || (devname.Length < 1)) |
| | | throw new NotImplementedException("Device FriendlyName"); |
| | | val = ""; |
| | | hr = bag.Read("DevicePath", ref val, IntPtr.Zero); |
| | | if (hr != 0) |
| | | Marshal.ThrowExceptionForHR(hr); |
| | | devpath = val as string; |
| | | if((devpath == null) || (devpath.Length < 1)) |
| | | throw new NotImplementedException("Device Path"); |
| | | return true; |
| | | } |
| | | catch (Exception) |
| | | { |
| | | return false; |
| | | } |
| | | finally |
| | | { |
| | | bag = null; |
| | | if (bagObj != null) |
| | | Marshal.ReleaseComObject(bagObj); bagObj = null; |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | [ComVisible(false)] |
| | | public class DsDevice : IDisposable |
| | | { |
| | | public int id; |
| | | public string Name; |
| | | public string Path; |
| | | public IMoniker Mon; |
| | | |
| | | |
| | | public void Dispose() |
| | | { |
| | | if (Mon != null) |
| | | Marshal.ReleaseComObject(Mon); Mon = null; |
| | | } |
| | | } |
| | | |
| | | [ComVisible(true), ComImport, |
| | | Guid("29840822-5B84-11D0-BD3B-00A0C911CE86"), |
| | | InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] |
| | | public interface ICreateDevEnum |
| | | { |
| | | [PreserveSig] |
| | | int CreateClassEnumerator( |
| | | [In] ref Guid pType, |
| | | [Out] out IEnumMoniker ppEnumMoniker, |
| | | [In] int dwFlags); |
| | | } |
| | | |
| | | |
| | | |
| | | [ComVisible(true), ComImport, |
| | | Guid("55272A00-42CB-11CE-8135-00AA004BB851"), |
| | | InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] |
| | | public interface IPropertyBag |
| | | { |
| | | [PreserveSig] |
| | | int Read( |
| | | [In, MarshalAs(UnmanagedType.LPWStr)] string pszPropName, |
| | | [In, Out, MarshalAs(UnmanagedType.Struct)] ref object pVar, |
| | | IntPtr pErrorLog); |
| | | |
| | | [PreserveSig] |
| | | int Write( |
| | | [In, MarshalAs(UnmanagedType.LPWStr)] string pszPropName, |
| | | [In, MarshalAs(UnmanagedType.Struct)] ref object pVar); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using System.Runtime.InteropServices; |
| | | using System.Drawing.Imaging; |
| | | using System.IO; |
| | | using System.Threading; |
| | | using OpenCvSharp; |
| | | |
| | | // sdkä½¿ç¨æ³¨æäºé¡¹ï¼ä½¿ç¨sdkåï¼è¯·åèææ¡£è¿è¡æææ¿æ´»ï¼å¦å |
| | | // sdkåå§åå¯è½å¤±è´¥ï¼å¯éè¿æå¼æ¥å¿face_conf.jsonï¼å段æ¹ä¸ºtrueã |
| | | // æ¥æ¾æ¯å¦éè¿äºæææ¿æ´»ææ¿æ´»å¤±è´¥çåå |
| | | |
| | | // 人è¸c#å
¥å£ç±» |
| | | namespace FaceAI |
| | | { |
| | | public class Face |
| | | { |
| | | // sdkåå§å |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "sdk_init", CharSet =CharSet.Ansi |
| | | , CallingConvention =CallingConvention.Cdecl)] |
| | | public static extern int sdk_init(string model_path); |
| | | // æ¯å¦ææ |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "is_auth", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | private static extern bool is_auth(); |
| | | // sdk鿝 |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "sdk_destroy" , CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | private static extern void sdk_destroy(); |
| | | |
| | | // è·åè®¾å¤æçº¹ |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "get_device_id", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | private static extern IntPtr get_device_id(); |
| | | |
| | | // è·åsdkçæ¬å· |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "sdk_version", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | private static extern IntPtr sdk_version(); |
| | | |
| | | // è·åsdkä¿¡æ¯å¦è®¾å¤æçº¹ï¼çæ¬å· |
| | | static void get_sdk_info() |
| | | { |
| | | // è·åè®¾å¤æçº¹ |
| | | IntPtr ptr = get_device_id(); |
| | | string buf = Marshal.PtrToStringAnsi(ptr); |
| | | Console.WriteLine("device id is:" + buf); |
| | | // è·åsdkçæ¬å· |
| | | IntPtr ptr_v = sdk_version(); |
| | | string vbuf = Marshal.PtrToStringAnsi(ptr_v); |
| | | Console.WriteLine("sdk version is:" + vbuf); |
| | | } |
| | | |
| | | // 人è¸c#å
¥å£æ¹æ³ |
| | | public static void Main() |
| | | { |
| | | //Console.WriteLine("in main"); |
| | | // model_path为模åæä»¶å¤¹è·¯å¾ï¼å³modelsæä»¶å¤¹ï¼éé¢åçæ¯äººè¸è¯å«ç模åæä»¶ï¼ |
| | | // ä¼ ç©ºä¸ºéç¨é»è®¤è·¯å¾ï¼è¥æ³å®ç½®åè·¯å¾ï¼è¯·å¡«åå
¨å±è·¯å¾å¦ï¼d:\\face ï¼models模åæä»¶å¤¹ç®å½æ¾ç½®å为d:\\face\\modelsï¼ |
| | | // è¥æ¨¡åæä»¶å¤¹éç¨å®ç½®åè·¯å¾ï¼åæ¿æ´»æä»¶(license.ini, license.key)ä¹å¯éç¨å®å¶åè·¯å¾æ¾ç½®å°è¯¥ç®å½å¦d:\\face\\license |
| | | // 亦å¯å¨æ¿æ´»æä»¶é»è®¤çæçè·¯å¾ |
| | | string model_path = null; |
| | | // string model_path="d:\\face"; |
| | | long time_begin = TimeUtil.get_time_stamp(); |
| | | int n = sdk_init(model_path); |
| | | long time_end = TimeUtil.get_time_stamp(); |
| | | Console.WriteLine("sdk init cost {0:D}", time_end- time_begin); |
| | | //è¥æ²¡éè¿åå§åï¼ånä¸ä¸º0, è¿åçé误ç ååå å¯åèè¯´æææ¡£ |
| | | if (n != 0) |
| | | { |
| | | Console.WriteLine("sdk init fail and errcode is {0:D}", n); |
| | | |
| | | Console.ReadLine(); |
| | | return; |
| | | } |
| | | |
| | | Console.WriteLine("Main: æå"); |
| | | // è·åè®¾å¤æçº¹ |
| | | get_sdk_info(); |
| | | // éªè¯æ¯å¦ææ |
| | | bool authed = is_auth(); |
| | | Console.WriteLine("authed res is:"+authed); |
| | | long t_begin = TimeUtil.get_time_stamp(); |
| | | // 以ä¸ä¸ºdemo示ä¾,请åèFaceDemoæå¼ç¸å
³æ³¨éæµè¯éªè¯ |
| | | //FaceDemo demo = new FaceDemo(); |
| | | //demo.face_demo(); |
| | | long t_end = TimeUtil.get_time_stamp(); |
| | | Console.WriteLine("time cost is:"+(t_end-t_begin)); |
| | | // 使ç¨å®æ¯ï¼éæ¯sdkï¼éæ¾å
å |
| | | sdk_destroy(); |
| | | Console.WriteLine("end main"); |
| | | Console.ReadLine(); |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Runtime.InteropServices; |
| | | using OpenCvSharp; |
| | | |
| | | namespace FaceAI |
| | | { |
| | | /** |
| | | * @brief 人è¸è¡¨æ
屿§æä¸¾ |
| | | */ |
| | | enum BDFaceAttributeEmotionType |
| | | { |
| | | BDFACE_ATTRIBUTE_EMOTION_FROWN = 0, // ç±ç |
| | | BDFACE_ATTRIBUTE_EMOTION_SMILE = 1, // ç¬ |
| | | BDFACE_ATTRIBUTE_EMOTION_CALM = 2, // å¹³é |
| | | }; |
| | | |
| | | /** |
| | | * @brief 人è¸ç§æå±æ§æä¸¾ |
| | | */ |
| | | enum BDFaceRace |
| | | { |
| | | BDFACE_RACE_YELLOW = 0, // é»ç§äºº |
| | | BDFACE_RACE_WHITE = 1, // ç½ç§äºº |
| | | BDFACE_RACE_BLACK = 2, // é»ç§äºº |
| | | BDFACE_RACE_INDIAN = 3, // å°ç¬¬å®äºº |
| | | }; |
| | | |
| | | /** |
| | | * @brief ç¼éç¶æå±æ§æä¸¾ |
| | | */ |
| | | enum BDFaceGlasses |
| | | { |
| | | BDFACE_NO_GLASSES = 0, // æ ç¼é |
| | | BDFACE_GLASSES = 1, // æç¼é |
| | | BDFACE_SUN_GLASSES = 2, // 墨é |
| | | }; |
| | | |
| | | /** |
| | | * @brief æ§å«å±æ§æä¸¾ |
| | | */ |
| | | enum BDFaceGender |
| | | { |
| | | BDFACE_GENDER_FEMAILE = 0, // å¥³æ§ |
| | | BDFACE_GENDER_MALE = 1, // ç·æ§ |
| | | }; |
| | | |
| | | |
| | | /** |
| | | * @brief 人è¸å±æ§ç»æä½ |
| | | */ |
| | | [StructLayout(LayoutKind.Sequential, Pack = 1)] |
| | | struct BDFaceAttribute |
| | | { |
| | | public int age; // å¹´é¾ |
| | | public BDFaceRace race; // ç§æ |
| | | public BDFaceAttributeEmotionType emotion; // 表æ
|
| | | public BDFaceGlasses glasses; // æ´ç¼éç¶æ |
| | | public BDFaceGender gender; // æ§å« |
| | | }; |
| | | |
| | | // 人è¸å±æ§ç¤ºä¾åæ¥å£ |
| | | class FaceAttr |
| | | { |
| | | // è·å人è¸å±æ§ |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "face_attr", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | public static extern int face_attr(IntPtr ptr, IntPtr mat); |
| | | |
| | | // æµè¯è·å人è¸å±æ§ |
| | | public void test_get_face_attr() |
| | | { |
| | | int max_face_num = 5; // 设置æå¤æ£æµè·è¸ªäººæ°ï¼å¤äººè¸æ£æµï¼ï¼é»è®¤ä¸º1ï¼æå¤å¯è®¾ä¸º50 |
| | | |
| | | BDFaceAttribute[] attr_info = new BDFaceAttribute[max_face_num]; |
| | | int size = Marshal.SizeOf(typeof(BDFaceAttribute)); |
| | | IntPtr ptT = Marshal.AllocHGlobal(size * max_face_num); |
| | | string img_path = "../images/rgb.png"; |
| | | Mat mat = Cv2.ImRead(img_path); |
| | | int faceNum = face_attr(ptT, mat.CvPtr); |
| | | Console.WriteLine("faceNum is:" + faceNum); |
| | | for (int index = 0; index < faceNum; index++) |
| | | { |
| | | IntPtr ptr = new IntPtr(); |
| | | if (8 == IntPtr.Size) |
| | | { |
| | | ptr = (IntPtr)(ptT.ToInt64() + size * index); |
| | | } |
| | | else if (4 == IntPtr.Size) |
| | | { |
| | | ptr = (IntPtr)(ptT.ToInt32() + size * index); |
| | | } |
| | | |
| | | attr_info[index] = (BDFaceAttribute)Marshal.PtrToStructure(ptr, typeof(BDFaceAttribute)); |
| | | // å¹´é¾ |
| | | Console.WriteLine("age is {0}:", attr_info[index].age); |
| | | // ç§æ |
| | | Console.WriteLine("race is:{0}", attr_info[index].race); |
| | | // 表æ
|
| | | Console.WriteLine("emotion is:{0}", attr_info[index].emotion); |
| | | // æ´ç¼éç¶æ |
| | | Console.WriteLine("glasses is:{0}", attr_info[index].glasses); |
| | | // æ§å« |
| | | Console.WriteLine("gender is:{0}", attr_info[index].gender); |
| | | } |
| | | Marshal.FreeHGlobal(ptT); |
| | | } |
| | | |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Runtime.InteropServices; |
| | | using System.IO; |
| | | using OpenCvSharp; |
| | | |
| | | // äººè¸æ¯å¯¹ï¼å¤æ³¨ï¼äººè¸æ¯å¯¹ï¼å®é
䏿¯äººè¸çç¹å¾å¼æ¯å¯¹ï¼æååºäººè¸ç¹å¾å¼ï¼ç¨compare_featureæ¹æ³æ¯å¯¹) |
| | | namespace FaceAI |
| | | { |
| | | // äººè¸æ¯è¾1:1ã1:Nãæ½å人è¸ç¹å¾å¼ãæç¹å¾å¼æ¯è¾ç |
| | | public class FaceCompare |
| | | { |
| | | // æå人è¸ç¹å¾å¼(ä¼ å¾çæä»¶è·¯å¾) |
| | | /// <summary> |
| | | /// æå人è¸ç¹å¾å¼ï¼ä¸º512个浮ç¹å¼ï¼å·²å å¯ |
| | | /// </summary> |
| | | /// <param name="file_name">å¾çä¿¡æ¯ï¼æ°æ®å¤§å°å°äº10Mï¼ä¼ å
¥å¾çæä»¶è·¯å¾</param> |
| | | /// <param name="length">éè¿å¼ç¨è¿åç¹å¾å¼çé¿åº¦ï¼è¥ä¸º2048表示æåæ£ç¡®ï¼å
¶ä»å¼è¡¨ç¤ºæåäºé误çç¹å¾å¼</param> |
| | | /// <returns></returns> |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "get_face_feature", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | private static extern IntPtr get_face_feature(string file_name, ref int length); |
| | | // æå人è¸ç¹å¾å¼(ä¼ äºè¿å¶å¾çbufferï¼ |
| | | /// <summary> |
| | | /// æå人è¸ç¹å¾å¼ï¼ä¸º2048个byte (ä¼ å
¥äºè¿å¶å¾çbuffer) |
| | | /// </summary> |
| | | /// <param name="buf"></param> |
| | | /// <param name="size"></param> |
| | | /// <param name="length"></param> |
| | | /// <returns></returns> |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "get_face_feature_by_buf", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | private static extern IntPtr get_face_feature_by_buf(byte[] buf, int size, ref int length); |
| | | //// è·å人è¸ç¹å¾å¼ï¼ä¼ å
¥opencvè§é¢å¸§å人è¸ä¿¡æ¯ï¼éåºäºå¤äººè¸ï¼ |
| | | ///// <summary> |
| | | ///// è·å人è¸ç¹å¾å¼ï¼ä¼ å
¥opencvè§é¢å¸§å人è¸ä¿¡æ¯ï¼éåºäºå¤äººè¸ï¼ |
| | | ///// </summary> |
| | | ///// <param name="mat"></param> |
| | | ///// <param name="info"></param> |
| | | ///// <param name="feaptr"></param> |
| | | ///// <returns></returns> |
| | | //[DllImport("BaiduFaceApi.dll", EntryPoint = "get_face_feature_by_face", CharSet = CharSet.Ansi |
| | | // , CallingConvention = CallingConvention.Cdecl)] |
| | | //public static extern int get_face_feature_by_face(IntPtr mat, ref TrackFaceInfo info, ref IntPtr feaptr); |
| | | // 人è¸1:1æ¯å¯¹(ä¼ å¾çæä»¶è·¯å¾) |
| | | /// <summary> |
| | | /// 人è¸å¯¹æ¯æ¥å£ï¼ä¼ å
¥å¾çæä»¶è·¯å¾ï¼ |
| | | /// </summary> |
| | | /// <param name="file_name1">éè¦å¯¹æ¯ç第ä¸å¼ å¾çï¼å°äº10Mï¼ä¼ å
¥å¾çæä»¶è·¯å¾</param> |
| | | /// <param name="file_name2">éè¦å¯¹æ¯ç第äºå¼ å¾çï¼å°äº10Mï¼ä¼ å
¥å¾çæä»¶è·¯å¾</param> |
| | | /// <returns></returns> |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "match", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | private static extern IntPtr match(string file_name1, string file_name2); |
| | | // 人è¸1:1æ¯å¯¹ï¼ä¼ äºè¿å¶å¾çbufferï¼ |
| | | /// <summary> |
| | | /// 人è¸å¯¹æ¯æ¥å£ï¼ä¼ å
¥äºè¿å¶å¾çbufferï¼ |
| | | /// </summary> |
| | | /// <param name="buf1">éè¦å¯¹æ¯ç第ä¸å¼ å¾çï¼å°äº10M</param> |
| | | /// <param name="size1">å¾ç1ç大å°</param> |
| | | /// <param name="buf2">éè¦å¯¹æ¯ç第äºå¼ å¾çï¼å°äº10M</param> |
| | | /// <param name="size2">å¾ç2ç大å°</param> |
| | | /// <returns></returns> |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "match_by_buf", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | private static extern IntPtr match_by_buf(byte[] buf1, int size1, byte[] buf2, int size2); |
| | | // 人è¸1:1æ¯å¯¹ï¼ä¼ opencvè§é¢å¸§ï¼ |
| | | /// <summary> |
| | | /// 人è¸1:1æ¯å¯¹ï¼ä¼ opencvè§é¢å¸§ï¼ |
| | | /// </summary> |
| | | /// <param name="img1"></param> |
| | | /// <param name="img2"></param> |
| | | /// <returns></returns> |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "match_by_mat", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | private static extern IntPtr match_by_mat(IntPtr img1, IntPtr img2);// byte[] buf1, int size1, byte[] buf2, int size2); |
| | | // 人è¸1:1æ¯å¯¹ï¼ä¼ 人è¸ç¹å¾å¼åäºè¿å¶å¾çbuffer) |
| | | /// <summary> |
| | | /// 人è¸å¯¹æ¯æ¥å£(ä¼ å
¥äºè¿å¶å¾çbuffer) |
| | | /// </summary> |
| | | /// <param name="feature">æä»¶ç¹å¾</param> |
| | | /// <param name="fea_len"></param> |
| | | /// <param name="buf2"></param> |
| | | /// <param name="size2"></param> |
| | | /// <returns></returns> |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "match_by_feature", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | private static extern IntPtr match_by_feature(byte[] feature, int fea_len, byte[] buf2, int size2); |
| | | // ç¹å¾å¼æ¯å¯¹ï¼ä¼ 2个人è¸çç¹å¾å¼ï¼ |
| | | /// <summary> |
| | | /// ç¹å¾å¼æ¯å¯¹ |
| | | /// </summary> |
| | | /// <param name="f1"></param> |
| | | /// <param name="f1_len"></param> |
| | | /// <param name="f2"></param> |
| | | /// <param name="f2_len"></param> |
| | | /// <returns></returns> |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "compare_feature", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | private static extern float compare_feature(byte[] f1, int f1_len, byte[] f2, int f2_len); |
| | | // 1:N人è¸è¯å«ï¼ä¼ å¾çæä»¶è·¯å¾ååºéçæ¯å¯¹ï¼ |
| | | /// <summary> |
| | | /// 人è¸è¯å«ï¼æä¾1ï¼Næ¥æ¾ (ä¼ å
¥å¾çæä»¶è·¯å¾) |
| | | /// </summary> |
| | | /// <param name="image">å¾çä¿¡æ¯ï¼æ°æ®å¤§å°å°äº10Mï¼ä¼ å
¥å¾çæä»¶è·¯å¾</param> |
| | | /// <param name="group_id_list">ç»idå表ãé»è®¤è³å°å¡«åä¸ä¸ªgroup_idï¼ä»æå®çgroupä¸è¿è¡æ¥æ¾ãéè¦åæ¶æ¥è¯¢å¤ä¸ªgroupï¼ç¨éå·åéï¼ä¸é10个</param> |
| | | /// <param name="user_id">ç¨æ·idï¼è¥æå®äºæä¸ªuserï¼ååªä¼ä¸æå®groupä¸çè¿ä¸ªuserè¿è¡å¯¹æ¯ï¼è¥user_idä¼ ç©ºå符串â âï¼åä¼ä¸æ¤groupä¸çææuserè¿è¡1ï¼Nè¯å«</param> |
| | | /// <param name="user_top_num">è¯å«åè¿åçç¨æ·topæ°ï¼é»è®¤ä¸º1ï¼æå¤è¿å50ä¸ªç»æ</param> |
| | | /// <returns></returns> |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "identify", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | private static extern IntPtr identify(string image, string group_id_list, string user_id, int user_top_num = 1); |
| | | // 1:N人è¸è¯å«ï¼ä¼ å¾çäºè¿å¶æä»¶bufferååºéçæ¯å¯¹ï¼ |
| | | /// <summary> |
| | | /// 人è¸è¯å«ï¼æä¾1ï¼Næ¥æ¾ (ä¼ å
¥äºè¿å¶å¾çbufferï¼ |
| | | /// </summary> |
| | | /// <param name="buf">äºè¿å¶å¾çä¿¡æ¯ï¼æ°æ®å¤§å°å°äº10M</param> |
| | | /// <param name="size">å¾ç大å°</param> |
| | | /// <param name="group_id_list">ç»idå表ãé»è®¤è³å°å¡«åä¸ä¸ªgroup_idï¼ä»æå®çgroupä¸è¿è¡æ¥æ¾ãéè¦åæ¶æ¥è¯¢å¤ä¸ªgroupï¼ç¨éå·åéï¼ä¸é10个</param> |
| | | /// <param name="user_id">ç¨æ·idï¼è¥æå®äºæä¸ªuserï¼ååªä¼ä¸æå®groupä¸çè¿ä¸ªuserè¿è¡å¯¹æ¯ï¼è¥user_idä¼ ç©ºå符串â âï¼åä¼ä¸æ¤groupä¸çææuserè¿è¡1ï¼Nè¯å«</param> |
| | | /// <param name="user_top_num">è¯å«åè¿åçç¨æ·topæ°ï¼é»è®¤ä¸º1ï¼æå¤è¿å50ä¸ªç»æ</param> |
| | | /// <returns></returns> |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "identify_by_buf", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | private static extern IntPtr identify_by_buf(byte[] buf, int size, string group_id_list, |
| | | string user_id, int user_top_num = 1); |
| | | // 1:N人è¸è¯å«ï¼ä¼ 人è¸ç¹å¾å¼ååºéçæ¯å¯¹ï¼ |
| | | /// <summary> |
| | | /// 1:N人è¸è¯å«ï¼ä¼ 人è¸ç¹å¾å¼ååºéçæ¯å¯¹ï¼ |
| | | /// </summary> |
| | | /// <param name="feature"></param> |
| | | /// <param name="fea_len"></param> |
| | | /// <param name="group_id_list">ç»idå表ãé»è®¤è³å°å¡«åä¸ä¸ªgroup_idï¼ä»æå®çgroupä¸è¿è¡æ¥æ¾ãéè¦åæ¶æ¥è¯¢å¤ä¸ªgroupï¼ç¨éå·åéï¼ä¸é10个</param> |
| | | /// <param name="user_id">ç¨æ·idï¼è¥æå®äºæä¸ªuserï¼ååªä¼ä¸æå®groupä¸çè¿ä¸ªuserè¿è¡å¯¹æ¯ï¼è¥user_idä¼ ç©ºå符串â âï¼åä¼ä¸æ¤groupä¸çææuserè¿è¡1ï¼Nè¯å«</param> |
| | | /// <param name="user_top_num">è¯å«åè¿åçç¨æ·topæ°ï¼é»è®¤ä¸º1ï¼æå¤è¿å50ä¸ªç»æ</param> |
| | | /// <returns></returns> |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "identify_by_feature", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | private static extern IntPtr identify_by_feature(byte[] feature, int fea_len, string group_id_list, |
| | | string user_id, int user_top_num = 1); |
| | | |
| | | // æåå è½½åºéæææ°æ®å°å
åä¸ |
| | | /// <summary> |
| | | /// æåå è½½åºéæææ°æ®å°å
åä¸ |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "load_db_face", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | public static extern bool load_db_face(); |
| | | |
| | | // 1:N人è¸è¯å«ï¼ä¼ 人è¸å¾çæä»¶åå
åå·²å è½½çæ´ä¸ªåºæ°æ®æ¯å¯¹ï¼ |
| | | /// <summary> |
| | | /// 1:N人è¸è¯å«ï¼ä¼ 人è¸å¾çæä»¶åå
åå·²å è½½çæ´ä¸ªåºæ°æ®æ¯å¯¹ï¼ |
| | | /// </summary> |
| | | /// <param name="image"></param> |
| | | /// <param name="user_top_num"></param> |
| | | /// <returns></returns> |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "identify_with_all", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | private static extern IntPtr identify_with_all(string image, int user_top_num = 1); |
| | | |
| | | // 1:N人è¸è¯å«ï¼ä¼ 人è¸å¾çæä»¶åå
åå·²å è½½çæ´ä¸ªåºæ°æ®æ¯å¯¹ï¼ |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | | /// <param name="image">å¾ççäºè¿å¶æä»¶</param> |
| | | /// <param name="size"></param> |
| | | /// <param name="user_top_num"></param> |
| | | /// <returns></returns> |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "identify_by_buf_with_all", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | private static extern IntPtr identify_by_buf_with_all(byte[] image, int size, int user_top_num = 1); |
| | | |
| | | // 1:N人è¸è¯å«ï¼ä¼ 人è¸ç¹å¾å¼åå
åå·²å è½½çæ´ä¸ªåºæ°æ®æ¯å¯¹ï¼ |
| | | /// <summary> |
| | | /// 1:N人è¸è¯å«ï¼ä¼ 人è¸ç¹å¾å¼åå
åå·²å è½½çæ´ä¸ªåºæ°æ®æ¯å¯¹ï¼ |
| | | /// </summary> |
| | | /// <param name="feature"></param> |
| | | /// <param name="fea_len"></param> |
| | | /// <param name="user_top_num"></param> |
| | | /// <returns></returns> |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "identify_by_feature_with_all", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | private static extern IntPtr identify_by_feature_with_all(byte[] feature, int fea_len, int user_top_num = 1); |
| | | |
| | | |
| | | // æµè¯è·å人è¸ç¹å¾å¼(2048个byteï¼ |
| | | public void test_get_face_feature() |
| | | { |
| | | byte[] fea = new byte[2048]; |
| | | string file_name = "G:\\Development\\Application\\testface\\img\\beckham\\2.jpg"; |
| | | int len = 0; |
| | | IntPtr ptr = get_face_feature(file_name, ref len); |
| | | if (ptr == IntPtr.Zero) |
| | | { |
| | | Console.WriteLine("get face feature error"); |
| | | } |
| | | else |
| | | { |
| | | if (len == 2048) |
| | | { |
| | | Console.WriteLine("get face feature success"); |
| | | Marshal.Copy(ptr, fea, 0, 2048); |
| | | // å¯ä¿åç¹å¾å¼2048个åèçfeaå°æä»¶ä¸ |
| | | // FileUtil.byte2file("G:\\Development\\Application\\testface\\img\\beckham\\fea1.txt",fea, 2048); |
| | | } |
| | | else |
| | | { |
| | | Console.WriteLine("get face feature error"); |
| | | } |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// è·å人è¸ç¹å¾å¼(2048个byteï¼ |
| | | /// </summary> |
| | | /// <param name="fileName"></param> |
| | | /// <returns></returns> |
| | | public string GetFaceFeature(string fileName) |
| | | { |
| | | try |
| | | { |
| | | byte[] fea = new byte[2048]; |
| | | string file_name = fileName == null ? fileName : "G:\\Development\\Application\\testface\\img\\beckham\\2.jpg"; |
| | | int len = 0; |
| | | IntPtr ptr = get_face_feature(file_name, ref len); |
| | | if (ptr == IntPtr.Zero) |
| | | { |
| | | Console.WriteLine("get face feature error"); |
| | | return "error"; |
| | | } |
| | | else |
| | | { |
| | | if (len == 2048) |
| | | { |
| | | Console.WriteLine("get face feature success"); |
| | | Marshal.Copy(ptr, fea, 0, 2048); |
| | | return fea.ToString(); |
| | | // å¯ä¿åç¹å¾å¼2048个åèçfeaå°æä»¶ä¸ |
| | | // FileUtil.byte2file("G:\\Development\\Application\\testface\\img\\beckham\\fea1.txt",fea, 2048); |
| | | } |
| | | else |
| | | { |
| | | Console.WriteLine("get face feature error"); |
| | | return "error"; |
| | | } |
| | | } |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | throw e; |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// è·å人è¸ç¹å¾å¼ 2048Byte |
| | | /// </summary> |
| | | /// <param name="file_name">å¾çä¿¡æ¯ï¼æ°æ®å¤§å°å°äº10Mï¼ä¼ å
¥å¾çæä»¶è·¯å¾</param> |
| | | /// <param name="length">éè¿å¼ç¨è¿åç¹å¾å¼çé¿åº¦ï¼è¥ä¸º2048表示æåæ£ç¡®ï¼å
¶ä»å¼è¡¨ç¤ºæåäºé误çç¹å¾å¼</param> |
| | | /// <returns></returns> |
| | | public string GetFaceFeature(string file_name, ref int length) |
| | | { |
| | | byte[] fea = new byte[2048]; |
| | | int len = length == 0 ? 0 : length; //defalut=0 |
| | | string result = ""; |
| | | IntPtr ptr = get_face_feature(file_name, ref len); |
| | | if (ptr == IntPtr.Zero) |
| | | { |
| | | result = ("get face feature error"); |
| | | } |
| | | else |
| | | { |
| | | if (len == 2048) |
| | | { |
| | | result = ("get face feature success"); |
| | | Marshal.Copy(ptr, fea, 0, 2048); |
| | | // å¯ä¿åç¹å¾å¼2048个åèçfeaå°æä»¶ä¸ |
| | | // FileUtil.byte2file("G:\\Development\\Application\\testface\\img\\beckham\\fea1.txt",fea, 2048); |
| | | } |
| | | else |
| | | { |
| | | result = ("get face feature error"); |
| | | } |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | |
| | | //// æµè¯è·å人è¸ç¹å¾å¼(2048个byteï¼ |
| | | //public void test_get_face_feature_by_buf() |
| | | //{ |
| | | // byte[] fea = new byte[2048]; |
| | | // System.Drawing.Image img = System.Drawing.Image.FromFile("G:\\Development\\Application\\testface\\img\\beckham\\2.jpg"); |
| | | // byte[] img_bytes = ImageUtil.img2byte(img); |
| | | // int len = 0; |
| | | // IntPtr ptr = get_face_feature_by_buf(img_bytes, img_bytes.Length, ref len); |
| | | // if (ptr == IntPtr.Zero) |
| | | // { |
| | | // Console.WriteLine("get face feature error"); |
| | | // } |
| | | // else |
| | | // { |
| | | // if (len == 2048) |
| | | // { |
| | | // Console.WriteLine("get face feature success"); |
| | | // Marshal.Copy(ptr, fea, 0, 2048); |
| | | // // å¯ä¿åç¹å¾å¼2048个åèçfeaå°æä»¶ä¸ |
| | | // // FileUtil.byte2file("G:\\Development\\Application\\testface\\img\\beckham\\fea2.txt",fea, 2048); |
| | | // } |
| | | // else |
| | | // { |
| | | // Console.WriteLine("get face feature error"); |
| | | // } |
| | | // } |
| | | //} |
| | | |
| | | ///// <summary> |
| | | ///// è·å人è¸ç¹å¾å¼ 2048byte |
| | | ///// </summary> |
| | | ///// <param name="filePath"></param> |
| | | ///// <returns></returns> |
| | | //public string GetFaceFeatureByBuffer(string filePath) |
| | | //{ |
| | | // byte[] fea = new byte[2048]; |
| | | // string result = ""; |
| | | // System.Drawing.Image img = System.Drawing.Image.FromFile(filePath); |
| | | // byte[] img_bytes = ImageUtil.img2byte(img); |
| | | // int len = 0; |
| | | // IntPtr ptr = get_face_feature_by_buf(img_bytes, img_bytes.Length, ref len); |
| | | // if (ptr == IntPtr.Zero) |
| | | // { |
| | | // result = ("get face feature error"); |
| | | // } |
| | | // else |
| | | // { |
| | | // if (len == 2048) |
| | | // { |
| | | // result = ("get face feature success"); |
| | | // Marshal.Copy(ptr, fea, 0, 2048); |
| | | // // å¯ä¿åç¹å¾å¼2048个åèçfeaå°æä»¶ä¸ |
| | | // // FileUtil.byte2file("G:\\Development\\Application\\testface\\img\\beckham\\fea2.txt",fea, 2048); |
| | | // } |
| | | // else |
| | | // { |
| | | // result = ("get face feature error"); |
| | | // } |
| | | // } |
| | | // return result; |
| | | //} |
| | | |
| | | |
| | | // æµè¯1:1æ¯è¾ï¼ä¼ å
¥å¾çæä»¶è·¯å¾ |
| | | public void test_match() |
| | | { |
| | | string file1 = "G:\\Development\\Application\\testface\\img\\beckham\\1.jpg"; |
| | | string file2 = "G:\\Development\\Application\\testface\\img\\beckham\\9.jpg"; |
| | | IntPtr ptr = match(file1, file2); |
| | | string buf = Marshal.PtrToStringAnsi(ptr); |
| | | Console.WriteLine("match res is:" + buf); |
| | | } |
| | | /// <summary> |
| | | /// 1:1æ¯è¾ ä¼ å
¥å¾çæä»¶è·¯å¾ |
| | | /// </summary> |
| | | /// <param name="file1"></param> |
| | | /// <param name="file2"></param> |
| | | /// <returns></returns> |
| | | public string FaceMatch(string file1, string file2) |
| | | { |
| | | IntPtr ptr = match(file1, file2); |
| | | string buf = Marshal.PtrToStringAnsi(ptr); |
| | | Console.WriteLine("match res is:" + buf); |
| | | return buf; |
| | | } |
| | | // æµè¯1:1æ¯è¾ï¼ä¼ å
¥å¾çæä»¶äºè¿å¶buffer |
| | | //public void test_match_by_buf() |
| | | //{ |
| | | // System.Drawing.Image img1 = System.Drawing.Image.FromFile("d:\\444.bmp"); |
| | | // byte[] img_bytes1 = ImageUtil.img2byte(img1); |
| | | |
| | | // System.Drawing.Image img2 = System.Drawing.Image.FromFile("d:\\555.png"); |
| | | // byte[] img_bytes2 = ImageUtil.img2byte(img2); |
| | | // Console.WriteLine("IntPtr ptr = match_by_buf"); |
| | | // IntPtr ptr = match_by_buf(img_bytes1, img_bytes1.Length, img_bytes2, img_bytes2.Length); |
| | | // string buf = Marshal.PtrToStringAnsi(ptr); |
| | | // Console.WriteLine("match_by_buf res is:" + buf); |
| | | //} |
| | | /// <summary> |
| | | /// 1:1æ¯è¾ ä¼ å¾çäºè¿å¶Buffer |
| | | /// </summary> |
| | | /// <param name="file1"></param> |
| | | /// <param name="file2"></param> |
| | | /// <returns></returns> |
| | | public string FaceMatchByBuffer(byte[] file1, byte[] file2) |
| | | { |
| | | // System.Drawing.Image img1 = System.Drawing.Image.FromFile(file1); |
| | | byte[] img_bytes1 = file1; // ImageUtil.img2byte(img1); |
| | | |
| | | // System.Drawing.Image img2 = System.Drawing.Image.FromFile(file2); |
| | | byte[] img_bytes2 = file2; // ImageUtil.img2byte(img2); |
| | | Console.WriteLine("IntPtr ptr = match_by_buf"); |
| | | IntPtr ptr = match_by_buf(img_bytes1, img_bytes1.Length, img_bytes2, img_bytes2.Length); |
| | | string buf = Marshal.PtrToStringAnsi(ptr); |
| | | return ("match_by_buf res is:" + buf); |
| | | } |
| | | // æµè¯1:1æ¯è¾ï¼ä¼ å
¥opencvè§é¢å¸§ |
| | | public void test_match_by_mat() |
| | | { |
| | | Mat img1 = Cv2.ImRead("d:\\444.bmp"); |
| | | Mat img2 = Cv2.ImRead("d:\\555.png"); |
| | | IntPtr ptr = match_by_mat(img1.CvPtr, img2.CvPtr);// img_bytes1, img_bytes1.Length, img_bytes2, img_bytes2.Length); |
| | | string buf = Marshal.PtrToStringAnsi(ptr); |
| | | Console.WriteLine("match_by_buf res is:" + buf); |
| | | } |
| | | /// <summary> |
| | | /// 1:1æ¯è¾ï¼ä¼ å
¥opencvè§é¢å¸§ |
| | | /// </summary> |
| | | /// <param name="file1"></param> |
| | | /// <param name="file2"></param> |
| | | /// <returns></returns> |
| | | public string FaceMatchByMat(string file1, string file2) |
| | | { |
| | | Mat img1 = Cv2.ImRead(file1); |
| | | Mat img2 = Cv2.ImRead(file2); |
| | | IntPtr ptr = match_by_mat(img1.CvPtr, img2.CvPtr);// img_bytes1, img_bytes1.Length, img_bytes2, img_bytes2.Length); |
| | | string buf = Marshal.PtrToStringAnsi(ptr); |
| | | return ("match_by_buf res is:" + buf); |
| | | |
| | | } |
| | | // æµè¯æ ¹æ®ç¹å¾å¼åå¾çäºè¿å¶bufæ¯è¾ |
| | | //public void test_match_by_feature() |
| | | //{ |
| | | // // è·åç¹å¾å¼2048个åè |
| | | // byte[] fea = new byte[2048]; |
| | | // string file_name = "G:\\Development\\Application\\testface\\img\\beckham\\2.jpg"; |
| | | // int len = 0; |
| | | // IntPtr ptr = get_face_feature(file_name, ref len); |
| | | // if (len != 2048) |
| | | // { |
| | | // Console.WriteLine("get face feature error!"); |
| | | // return; |
| | | // } |
| | | // Marshal.Copy(ptr, fea, 0, 2048); |
| | | // // è·åå¾çäºè¿å¶buffer |
| | | // System.Drawing.Image img2 = System.Drawing.Image.FromFile("G:\\Development\\Application\\testface\\img\\beckham\\8.jpg"); |
| | | // byte[] img_bytes2 = ImageUtil.img2byte(img2); |
| | | |
| | | // IntPtr ptr_res = match_by_feature(fea, fea.Length, img_bytes2, img_bytes2.Length); |
| | | // string buf = Marshal.PtrToStringAnsi(ptr_res); |
| | | // Console.WriteLine("match_by_feature res is:" + buf); |
| | | |
| | | //} |
| | | /// <summary> |
| | | /// æ ¹æ®ç¹å¾å¼åå¾çäºè¿å¶bufæ¯è¾ |
| | | /// </summary> |
| | | /// <param name="file_name">éè¦å¯¹æ¯çç¹å¾å¼</param> |
| | | /// <param name="file_buffer">éè¦å¯¹æ¯ç第äºå¼ å¾çï¼å°äº10M</param> |
| | | /// <returns></returns> |
| | | public string FaceMatchByFeature(byte[] file_name, byte[] file_buffer) |
| | | { |
| | | // è·åç¹å¾å¼2048个åè |
| | | byte[] fea = file_name; // new byte[2048]; |
| | | //int len = 0; |
| | | //IntPtr ptr = get_face_feature(file_name, ref len); |
| | | //if (len != 2048) |
| | | //{ |
| | | // return ("get face feature error!"); |
| | | //} |
| | | //Marshal.Copy(ptr, fea, 0, 2048); |
| | | //// è·åå¾çäºè¿å¶buffer |
| | | //System.Drawing.Image img2 = System.Drawing.Image.FromFile(file_buffer); |
| | | byte[] img_bytes2 = file_buffer; // ImageUtil.img2byte(img2); |
| | | |
| | | IntPtr ptr_res = match_by_feature(fea, fea.Length, img_bytes2, img_bytes2.Length); |
| | | string buf = Marshal.PtrToStringAnsi(ptr_res); |
| | | Console.WriteLine("match_by_feature res is:" + buf); |
| | | return buf; |
| | | |
| | | } |
| | | |
| | | // æµè¯1:Næ¯è¾ï¼ä¼ å
¥å¾çæä»¶è·¯å¾ |
| | | public /*void*/string test_identify(string str, string usr_grp, string usr_id) |
| | | { |
| | | string file1 = str;//"G:\\Development\\Application\\testface\\img\\beckham\\6.jpg"; |
| | | string user_group = usr_grp;//"test_group"; |
| | | string user_id = usr_id;//"test_user"; |
| | | IntPtr ptr = identify(file1, user_group, user_id); |
| | | string buf = Marshal.PtrToStringAnsi(ptr); |
| | | Console.WriteLine("identify res is:" + buf); |
| | | return buf; |
| | | } |
| | | /// <summary> |
| | | /// 1:Næ¯è¾ï¼ä¼ å
¥å¾çæä»¶è·¯å¾ |
| | | /// </summary> |
| | | /// <param name="file">å¾çä¿¡æ¯ï¼æ°æ®å¤§å°å°äº10Mï¼ä¼ å
¥å¾çæä»¶è·¯å¾</param> |
| | | /// <param name="user_group">ç»idå表ãé»è®¤è³å°å¡«åä¸ä¸ªgroup_idï¼ä»æå®çgroupä¸è¿è¡æ¥æ¾ãéè¦åæ¶æ¥è¯¢å¤ä¸ªgroupï¼ç¨éå·åéï¼ä¸é10个</param> |
| | | /// <param name="user_id">ç¨æ·idï¼è¥æå®äºæä¸ªuserï¼ååªä¼ä¸æå®groupä¸çè¿ä¸ªuserè¿è¡å¯¹æ¯ï¼è¥user_idä¼ ç©ºå符串â âï¼åä¼ä¸æ¤groupä¸çææuserè¿è¡1ï¼Nè¯å«</param> |
| | | /// <returns></returns> |
| | | public static string FaceIdentify(string file, string user_group, string user_id) |
| | | { |
| | | string file1 = file; |
| | | IntPtr ptr = identify(file1, user_group, user_id); |
| | | string buf = Marshal.PtrToStringAnsi(ptr); |
| | | Console.WriteLine("identify res is:" + buf); |
| | | return buf; |
| | | } |
| | | |
| | | // æµè¯1:Næ¯è¾ï¼ä¼ å
¥å¾çæä»¶äºè¿å¶buffer |
| | | //public void test_identify_by_buf(string str, string usr_grp, string usr_id) |
| | | //{ |
| | | // System.Drawing.Image img = System.Drawing.Image.FromFile(str);//"G:\\Development\\Application\\testface\\img\\beckham\\2.jpg"); |
| | | // byte[] img_bytes = ImageUtil.img2byte(img); |
| | | |
| | | // string user_group = usr_grp;//"test_group"; |
| | | // string user_id = usr_id;// "test_user"; |
| | | // IntPtr ptr = identify_by_buf(img_bytes, img_bytes.Length, user_group, user_id); |
| | | // string buf = Marshal.PtrToStringAnsi(ptr); |
| | | // Console.WriteLine("identify_by_buf res is:" + buf); |
| | | //} |
| | | /// <summary> |
| | | /// 1:Næ¯è¾ï¼ä¼ å
¥å¾çæä»¶äºè¿å¶buffer |
| | | /// </summary> |
| | | /// <param name="str">äºè¿å¶å¾çä¿¡æ¯ï¼æ°æ®å¤§å°å°äº10M</param> |
| | | /// <param name="usr_grp">ç»idå表ãé»è®¤è³å°å¡«åä¸ä¸ªgroup_idï¼ä»æå®çgroupä¸è¿è¡æ¥æ¾ãéè¦åæ¶æ¥è¯¢å¤ä¸ªgroupï¼ç¨éå·åéï¼ä¸é10个</param> |
| | | /// <param name="usr_id">ç¨æ·idï¼è¥æå®äºæä¸ªuserï¼ååªä¼ä¸æå®groupä¸çè¿ä¸ªuserè¿è¡å¯¹æ¯ï¼è¥user_idä¼ ç©ºå符串â âï¼åä¼ä¸æ¤groupä¸çææuserè¿è¡1ï¼Nè¯å«</param> |
| | | /// <returns></returns> |
| | | public string FaceIdentifyByBuffer(byte[] str, string usr_grp, string usr_id) |
| | | { |
| | | // System.Drawing.Image img = System.Drawing.Image.FromFile(str); |
| | | byte[] img_bytes = str; // ImageUtil.img2byte(img); |
| | | |
| | | string user_group = usr_grp;//"test_group"; |
| | | string user_id = usr_id;// "test_user"; |
| | | IntPtr ptr = identify_by_buf(img_bytes, img_bytes.Length, user_group, user_id); |
| | | string buf = Marshal.PtrToStringAnsi(ptr); |
| | | Console.WriteLine("identify_by_buf res is:" + buf); |
| | | return buf; |
| | | } |
| | | |
| | | // æµè¯1:Næ¯è¾ï¼ä¼ å
¥æåç人è¸ç¹å¾å¼ |
| | | public void test_identify_by_feature() |
| | | { |
| | | // è·åç¹å¾å¼2048个åè |
| | | byte[] fea = new byte[2048]; |
| | | string file_name = "G:\\Development\\Application\\testface\\img\\beckham\\2.jpg"; |
| | | int len = 0; |
| | | IntPtr ptr = get_face_feature(file_name, ref len); |
| | | if (len != 2048) |
| | | { |
| | | Console.WriteLine("get face feature error!"); |
| | | return; |
| | | } |
| | | Marshal.Copy(ptr, fea, 0, 2048); |
| | | |
| | | string user_group = "test_group"; |
| | | string user_id = "test_user"; |
| | | IntPtr ptr_res = identify_by_feature(fea, fea.Length, user_group, user_id); |
| | | string buf = Marshal.PtrToStringAnsi(ptr_res); |
| | | Console.WriteLine("identify_by_feature res is:" + buf); |
| | | } |
| | | /// <summary> |
| | | /// 1:Næ¯è¾ï¼ä¼ å
¥æåç人è¸ç¹å¾å¼ |
| | | /// </summary> |
| | | /// <param name="file_name">ä¼ å
¥å¾çç¹å¾</param> |
| | | /// <param name="userGroup">ç»idå表ãé»è®¤è³å°å¡«åä¸ä¸ªgroup_idï¼ä»æå®çgroupä¸è¿è¡æ¥æ¾ãéè¦åæ¶æ¥è¯¢å¤ä¸ªgroupï¼ç¨éå·åéï¼ä¸é10个</param> |
| | | /// <param name="userId">ç¨æ·idï¼è¥æå®äºæä¸ªuserï¼ååªä¼ä¸æå®groupä¸çè¿ä¸ªuserè¿è¡å¯¹æ¯ï¼è¥user_idä¼ ç©ºå符串â âï¼åä¼ä¸æ¤groupä¸çææuserè¿è¡1ï¼Nè¯å«</param> |
| | | /// |
| | | public static string FaceIdentifyByFeature(string file_name, string userGroup, string userId) |
| | | { |
| | | // è·åç¹å¾å¼2048个åè |
| | | byte[] fea = new byte[2048]; |
| | | int len = 0; |
| | | IntPtr ptr = get_face_feature(file_name, ref len); |
| | | if (len != 2048) |
| | | { |
| | | return ("get face feature error!"); |
| | | } |
| | | Marshal.Copy(ptr, fea, 0, 2048); |
| | | |
| | | string user_group = userGroup == null ? "test_group" : userGroup; |
| | | string user_id = userId == null ? "test_user" : userId; |
| | | IntPtr ptr_res = identify_by_feature(fea, fea.Length, user_group, user_id); |
| | | string buf = Marshal.PtrToStringAnsi(ptr_res); |
| | | Console.WriteLine("identify_by_feature res is:" + buf); |
| | | return buf; |
| | | } |
| | | |
| | | // éè¿ç¹å¾å¼æ¯å¯¹ï¼1:1ï¼ |
| | | public void test_compare_feature() |
| | | { |
| | | // è·åç¹å¾å¼1 å
±2048个åè |
| | | byte[] fea1 = new byte[2048]; |
| | | string file_name1 = "G:\\Development\\Application\\testface\\img\\beckham\\2.jpg"; |
| | | int len1 = 0; |
| | | IntPtr ptr1 = get_face_feature(file_name1, ref len1); |
| | | if (len1 != 2048) |
| | | { |
| | | Console.WriteLine("get face feature error!"); |
| | | return; |
| | | } |
| | | Marshal.Copy(ptr1, fea1, 0, 2048); |
| | | |
| | | // è·åç¹å¾å¼2 å
±2048个åè |
| | | byte[] fea2 = new byte[2048]; |
| | | string file_name2 = "G:\\Development\\Application\\testface\\img\\beckham\\8.jpg"; |
| | | int len2 = 0; |
| | | IntPtr ptr2 = get_face_feature(file_name2, ref len2); |
| | | if (len2 != 2048) |
| | | { |
| | | Console.WriteLine("get face feature error!"); |
| | | return; |
| | | } |
| | | Marshal.Copy(ptr2, fea2, 0, 2048); |
| | | // æ¯å¯¹ |
| | | float score = compare_feature(fea1, len1, fea2, len2); |
| | | Console.WriteLine("compare_feature score is:" + score); |
| | | } |
| | | /// <summary> |
| | | /// éè¿ç¹å¾å¼æ¯å¯¹ï¼1:1ï¼ å¯¹äººè¸ç¹å¾å¼è¿è¡æ¯è¾ï¼å¯è¿å人è¸ç¹å¾ç¸ä¼¼åå¼ï¼ç¾åå¶ï¼ |
| | | /// </summary> |
| | | /// <param name="file_name1">2048个byteæ°ç»çç¹å¾å¼(ä¼ å¾çè·¯å¾)</param> |
| | | /// <param name="file_name2">2048个byteæ°ç»çç¹å¾å¼ï¼ä¼ å¾çè·¯å¾ï¼</param> |
| | | /// <returns></returns> |
| | | public static string FaceCompareFeature(string file_name1, string file_name2) |
| | | { |
| | | string mes = "å
¥ï¼"; |
| | | try |
| | | { |
| | | |
| | | // è·åç¹å¾å¼1 å
±2048个åè |
| | | byte[] fea1 = new byte[2048]; |
| | | int len1 = 0; |
| | | IntPtr ptr1 = get_face_feature(file_name1, ref len1); |
| | | if (len1 != 2048) |
| | | { |
| | | return mes += "get face feature error!"; |
| | | } |
| | | Marshal.Copy(ptr1, fea1, 0, 2048); |
| | | |
| | | // è·åç¹å¾å¼2 å
±2048个åè |
| | | byte[] fea2 = new byte[2048]; |
| | | int len2 = 0; |
| | | IntPtr ptr2 = get_face_feature(file_name2, ref len2); |
| | | if (len2 != 2048) |
| | | { |
| | | return mes += "get face feature error!"; |
| | | } |
| | | Marshal.Copy(ptr2, fea2, 0, 2048); |
| | | // æ¯å¯¹ |
| | | // len1 ç¹å¾å¼1çé¿åº¦ |
| | | float score = compare_feature(fea1, len1, fea2, len2); |
| | | Console.WriteLine("compare_feature score is:" + score); |
| | | return mes += score.ToString(); |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return mes += ex; |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// éè¿ç¹å¾å¼æ¯å¯¹ï¼1:1ï¼ å¯¹äººè¸ç¹å¾å¼è¿è¡æ¯è¾ï¼å¯è¿å人è¸ç¹å¾ç¸ä¼¼åå¼ï¼ç¾åå¶ï¼ |
| | | /// </summary> |
| | | /// <param name="face1">2048个byteæ°ç»çç¹å¾å¼</param> |
| | | /// <param name="face2">2048个byteæ°ç»çç¹å¾å¼</param> |
| | | /// <returns></returns> |
| | | public string FaceCompareFeatureByBuffer(byte[] face1, byte[] face2) |
| | | { |
| | | if (face1.Length == 2048 && face2.Length == 2048) |
| | | { |
| | | // è·åç¹å¾å¼1 å
±2048个åè |
| | | byte[] fea1 = new byte[2048]; |
| | | fea1 = face1; |
| | | int len1 = 0; |
| | | // è·åç¹å¾å¼1 å
±2048个åè |
| | | byte[] fea2 = new byte[2048]; |
| | | fea2 = face2; |
| | | int len2 = 0; |
| | | // æ¯å¯¹ |
| | | // len1 ç¹å¾å¼1çé¿åº¦ |
| | | float score = compare_feature(fea1, len1, fea2, len2); |
| | | Console.WriteLine("compare_feature score is:" + score); |
| | | return score.ToString(); |
| | | } |
| | | else |
| | | { |
| | | return "byte should be 2048"; |
| | | } |
| | | } |
| | | |
| | | // æµè¯1:Næ¯è¾ï¼ä¼ å
¥æåç人è¸ç¹å¾å¼åå·²å è½½çå
å䏿´ä¸ªåºæ¯è¾ |
| | | public void test_identify_by_feature_with_all() |
| | | { |
| | | // å è½½æ´ä¸ªæ°æ®åºå°å
åä¸ |
| | | load_db_face(); |
| | | // è·åç¹å¾å¼2048个åè |
| | | byte[] fea = new byte[2048]; |
| | | string file_name = "G:\\Development\\Application\\testface\\img\\beckham\\2.jpg"; |
| | | int len = 0; |
| | | IntPtr ptr = get_face_feature(file_name, ref len); |
| | | if (len != 2048) |
| | | { |
| | | Console.WriteLine("get face feature error!"); |
| | | return; |
| | | } |
| | | Marshal.Copy(ptr, fea, 0, 2048); |
| | | IntPtr ptr_res = identify_by_feature_with_all(fea, fea.Length); |
| | | string buf = Marshal.PtrToStringAnsi(ptr_res); |
| | | Console.WriteLine("identify_by_feature_with_all res is:" + buf); |
| | | } |
| | | /// <summary> |
| | | /// 1:Næ¯è¾ï¼ä¼ å
¥æåç人è¸ç¹å¾å¼åå·²å è½½çå
å䏿´ä¸ªåºæ¯è¾ |
| | | /// </summary> |
| | | /// <param name="file_name">ä¼ å
¥äººè¸æä»¶ç¹å¾å¼</param> |
| | | /// <returns></returns> |
| | | public string FaceIdentifyByFeatureWithAll(byte[] file_name) |
| | | { |
| | | // å è½½æ´ä¸ªæ°æ®åºå°å
åä¸ |
| | | load_db_face(); |
| | | // è·åç¹å¾å¼2048个åè |
| | | byte[] fea = new byte[2048]; |
| | | fea = file_name; |
| | | int len = 0; |
| | | //IntPtr ptr = get_face_feature(file_name, ref len); |
| | | //if (len != 2048) |
| | | //{ |
| | | // Console.WriteLine("get face feature error!"); |
| | | // return "error"; |
| | | //} |
| | | // Marshal.Copy(ptr, fea, 0, 2048); |
| | | IntPtr ptr_res = identify_by_feature_with_all(fea, fea.Length); |
| | | string buf = Marshal.PtrToStringAnsi(ptr_res); |
| | | Console.WriteLine("identify_by_feature_with_all res is:" + buf); |
| | | return buf; |
| | | } |
| | | |
| | | // æµè¯1:Næ¯è¾ï¼ä¼ å
¥å¾çæä»¶è·¯å¾åå·²å è½½çå
å䏿´ä¸ªåºæ¯è¾ |
| | | public void test_identify_with_all() |
| | | { |
| | | // å è½½æ´ä¸ªæ°æ®åºå°å
åä¸ |
| | | load_db_face(); |
| | | // 1:N |
| | | string file1 = "G:\\Development\\Application\\testface\\img\\beckham\\3.jpg"; |
| | | IntPtr ptr = identify_with_all(file1); |
| | | string buf = Marshal.PtrToStringAnsi(ptr); |
| | | Console.WriteLine("identify_with_all res is:" + buf); |
| | | } |
| | | /// <summary> |
| | | /// 1:Næ¯è¾ï¼ä¼ å
¥å¾çæä»¶è·¯å¾åå·²å è½½çå
å䏿´ä¸ªåºæ¯è¾ |
| | | /// </summary> |
| | | /// <param name="file1">ä¼ å
¥å¾çè·¯å¾</param> |
| | | /// <returns></returns> |
| | | public string FaceIndentifyWithAll(string file1) |
| | | { |
| | | // å è½½æ´ä¸ªæ°æ®åºå°å
åä¸ |
| | | load_db_face(); |
| | | // 1:N |
| | | IntPtr ptr = identify_with_all(file1); |
| | | string buf = Marshal.PtrToStringAnsi(ptr); |
| | | Console.WriteLine("identify_with_all res is:" + buf); |
| | | return buf; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 1:Næ¯è¾ï¼ä¼ å
¥å¾çæä»¶äºè¿å¶bufferåå·²å è½½çå
å䏿´ä¸ªåºæ¯è¾ |
| | | /// </summary> |
| | | /// <param name="file_name"></param> |
| | | /// <returns></returns> |
| | | public string FaceIdentifyByBufferWithAll(byte[] file_name) |
| | | { |
| | | // å è½½æ´ä¸ªæ°æ®åºå°å
åä¸ |
| | | load_db_face(); |
| | | // 1:N |
| | | // System.Drawing.Image img = System.Drawing.Image.FromFile(file_name); |
| | | byte[] img_bytes = file_name;// ImageUtil.img2byte(img); |
| | | |
| | | IntPtr ptr = identify_by_buf_with_all(img_bytes, img_bytes.Length); |
| | | string buf = Marshal.PtrToStringAnsi(ptr); |
| | | Console.WriteLine("identify_by_buf_with_all res is:" + buf); |
| | | return buf; |
| | | } |
| | | |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using OpenCvSharp; |
| | | // ç»å¶ç±»ï¼ç»äººè¸æ¡ï¼ç»å
³é®ç¹ç |
| | | namespace FaceAI |
| | | { |
| | | class FaceDraw |
| | | { |
| | | // ç»äººè¸æ¡ |
| | | public static int draw_rects(ref Mat img, int face_num, BDFaceBBox[] info) |
| | | { |
| | | if (face_num <= 0) |
| | | { |
| | | return 0; |
| | | } |
| | | Scalar color = new Scalar(0, 255, 0); |
| | | for (int i = 0; i < face_num; i++) |
| | | { |
| | | int x = Convert.ToInt32(info[i].center_x - info[i].width / 2.0); |
| | | int y = Convert.ToInt32(info[i].center_y - info[i].height / 2.0); |
| | | int w = Convert.ToInt32(info[i].width); |
| | | int h = Convert.ToInt32(info[i].height); |
| | | Rect rect = new Rect(x, y, w, h); |
| | | Cv2.Rectangle(img, rect, color); |
| | | } |
| | | return 0; |
| | | } |
| | | // ç»äººè¸æ¡ |
| | | public static int draw_rects(ref Mat img, int face_num, BDFaceTrackInfo[] track_info) |
| | | { |
| | | if (face_num <= 0) |
| | | { |
| | | return 0; |
| | | } |
| | | Scalar color = new Scalar(0, 255, 0); |
| | | for(int i = 0; i < face_num; i++) |
| | | { |
| | | int x = Convert.ToInt32(track_info[i].box.center_x- track_info[i].box.width / 2.0); |
| | | int y = Convert.ToInt32(track_info[i].box.center_y - track_info[i].box.height / 2.0); |
| | | int w = Convert.ToInt32(track_info[i].box.width); |
| | | int h = Convert.ToInt32(track_info[i].box.height); |
| | | Rect rect = new Rect(x,y,w,h); |
| | | Cv2.Rectangle(img, rect, color); |
| | | } |
| | | return 0; |
| | | } |
| | | // ç»äººè¸å
³é®ç¹ |
| | | public static int draw_shape(ref Mat img, int face_num, BDFaceTrackInfo[] track_info) |
| | | { |
| | | if (face_num <= 0) |
| | | { |
| | | return 0; |
| | | } |
| | | int face_id = 0; |
| | | Scalar color = new Scalar(0, 255, 255); |
| | | Scalar color2 = new Scalar(0, 0, 255); |
| | | for (int i = 0; i < face_num; ++i) |
| | | { |
| | | int point_size = track_info[i].landmark.size / 2; |
| | | int radius = 2; |
| | | face_id = track_info[i].face_id; |
| | | for (int j = 0; j < point_size; ++j) |
| | | { |
| | | Cv2.Circle(img, (int)track_info[i].landmark.data[j * 2], (int)track_info[i].landmark.data[j * 2 + 1], radius, color); |
| | | } |
| | | if (point_size == 72) |
| | | { |
| | | const int components = 9; |
| | | int[] comp1 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; |
| | | int[] comp2 = { 13, 14, 15, 16, 17, 18, 19, 20, 13, 21 }; |
| | | int[] comp3 = { 22, 23, 24, 25, 26, 27, 28, 29, 22 }; |
| | | int[] comp4 = { 30, 31, 32, 33, 34, 35, 36, 37, 30, 38 }; |
| | | int[] comp5 = { 39, 40, 41, 42, 43, 44, 45, 46, 39 }; |
| | | int[] comp6 = { 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 47 }; |
| | | int[] comp7 = { 51, 57, 52 }; |
| | | int[] comp8 = { 58, 59, 60, 61, 62, 63, 64, 65, 58 }; |
| | | int[] comp9 = { 58, 66, 67, 68, 62, 69, 70, 71, 58 }; |
| | | int[][] idx = { comp1, comp2, comp3, comp4, comp5, comp6, comp7, comp8, comp9 }; |
| | | int[] npoints = { 13, 10, 9, 10, 9, 11, 3, 9, 9 }; |
| | | |
| | | for (int m = 0; m < components; ++m) |
| | | { |
| | | for (int n = 0; n < npoints[m] - 1; ++n) |
| | | { |
| | | Point p1 = new Point(track_info[i].landmark.data[idx[m][n] * 2], track_info[i].landmark.data[idx[m][n] * 2 + 1]); |
| | | Point p2 = new Point(track_info[i].landmark.data[idx[m][n + 1] * 2], track_info[i].landmark.data[idx[m][n + 1] * 2 + 1]); |
| | | Cv2.Line(img, p1, p2, color2); |
| | | } |
| | | } |
| | | } |
| | | string s_face_id = face_id.ToString(); |
| | | double font_scale = 2; |
| | | Point pos = new Point(track_info[i].box.center_x, track_info[i].box.center_y); |
| | | Cv2.PutText(img, s_face_id, pos, HersheyFonts.HersheyComplex, font_scale, new Scalar(0, 255, 255)); |
| | | } |
| | | |
| | | return 0; |
| | | } |
| | | |
| | | // ç»äººè¸å
³é®ç¹ |
| | | public static int draw_landmark(ref Mat img, int face_num, BDFaceLandmark[] landmark) |
| | | { |
| | | if (face_num <= 0) |
| | | { |
| | | return 0; |
| | | } |
| | | Scalar color = new Scalar(0, 255, 255); |
| | | Scalar color2 = new Scalar(0, 0, 255); |
| | | for (int i = 0; i < face_num; ++i) |
| | | { |
| | | int point_size = landmark[i].size / 2; |
| | | int radius = 2; |
| | | for (int j = 0; j < point_size; ++j) |
| | | { |
| | | Cv2.Circle(img, (int)landmark[i].data[j * 2], (int)landmark[i].data[j * 2 + 1], radius, color); |
| | | } |
| | | if (point_size == 72) |
| | | { |
| | | const int components = 9; |
| | | int[] comp1 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 }; |
| | | int[] comp2 = { 13, 14, 15, 16, 17, 18, 19, 20, 13, 21 }; |
| | | int[] comp3 = { 22, 23, 24, 25, 26, 27, 28, 29, 22 }; |
| | | int[] comp4 = { 30, 31, 32, 33, 34, 35, 36, 37, 30, 38 }; |
| | | int[] comp5 = { 39, 40, 41, 42, 43, 44, 45, 46, 39 }; |
| | | int[] comp6 = { 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 47 }; |
| | | int[] comp7 = { 51, 57, 52 }; |
| | | int[] comp8 = { 58, 59, 60, 61, 62, 63, 64, 65, 58 }; |
| | | int[] comp9 = { 58, 66, 67, 68, 62, 69, 70, 71, 58 }; |
| | | int[][] idx = { comp1, comp2, comp3, comp4, comp5, comp6, comp7, comp8, comp9 }; |
| | | int[] npoints = { 13, 10, 9, 10, 9, 11, 3, 9, 9 }; |
| | | |
| | | for (int m = 0; m < components; ++m) |
| | | { |
| | | for (int n = 0; n < npoints[m] - 1; ++n) |
| | | { |
| | | Point p1 = new Point(landmark[i].data[idx[m][n] * 2], landmark[i].data[idx[m][n] * 2 + 1]); |
| | | Point p2 = new Point(landmark[i].data[idx[m][n + 1] * 2], landmark[i].data[idx[m][n + 1] * 2 + 1]); |
| | | Cv2.Line(img, p1, p2, color2); |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | } |
| | | return 0; |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using System.Runtime.InteropServices; |
| | | using System.IO; |
| | | using OpenCvSharp; |
| | | |
| | | // æå人è¸ç¹å¾å¼ |
| | | namespace FaceAI |
| | | { |
| | | // 人è¸ç¹å¾å¼ç»æä½ |
| | | [StructLayout(LayoutKind.Sequential, Pack = 1)] |
| | | public struct BDFaceFeature |
| | | { |
| | | public int size; |
| | | // 人è¸çç¹å¾å¼ï¼æååºæ¥åæ¯128个floatçæµ®ç¹å¼ |
| | | [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)] |
| | | public float[] data;// = new float[128]; |
| | | } |
| | | // 人è¸ç¹å¾å¼ç»æä½ |
| | | [StructLayout(LayoutKind.Sequential, Pack = 1)] |
| | | public struct BDDepthFeature |
| | | { |
| | | public int size; |
| | | // 人è¸ç深度ç¹å¾å¼ï¼æååºæ¥åæ¯256个floatçæµ®ç¹å¼ |
| | | [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] |
| | | public float[] data;// = new float[256]; |
| | | } |
| | | class FaceFeature |
| | | { |
| | | // æå人è¸ç¹å¾å¼ |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "face_feature", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | // è¿ånum为ç¹å¾å¼ç人æ°,type为0表示æåçæ´»ç
§çç¹å¾å¼ï¼1表示nirçç¹å¾å¼ |
| | | public static extern int face_feature(IntPtr feature, IntPtr box, IntPtr mat, int type); |
| | | |
| | | |
| | | |
| | | public void test_face_feature() |
| | | { |
| | | long t_begin = TimeUtil.get_time_stamp(); |
| | | BDFaceFeature[] fea1 = test_get_face_feature_by_path("../images/2.jpg"); |
| | | long t_end = TimeUtil.get_time_stamp(); |
| | | Console.WriteLine("get feature time cost is:" + (t_end - t_begin)); |
| | | } |
| | | |
| | | // è·åç¹å¾å¼ï¼ä¼ å
¥å¾çè·¯å¾ |
| | | public BDFaceFeature[] test_get_face_feature_by_path(string img_path) |
| | | { |
| | | // ç¹å¾å¼çé¿åº¦ï¼128个floatå¼ |
| | | int dim_count = 128; |
| | | Mat mat = Cv2.ImRead(img_path); |
| | | // å设æåç人æ°ï¼éè¦æ¯å®é
ç人æ°å¤ï¼å 为éè¦æååé
å
å |
| | | int faceNum = 5; |
| | | BDFaceFeature[] feaList = new BDFaceFeature[faceNum]; |
| | | for(int i = 0; i < faceNum; i++) |
| | | { |
| | | feaList[i].data = new float[dim_count]; |
| | | feaList[i].size = 0; |
| | | } |
| | | |
| | | if (mat.Empty()) |
| | | { |
| | | return null; |
| | | } |
| | | |
| | | int sizeFeature = Marshal.SizeOf(typeof(BDFaceFeature)); |
| | | IntPtr ptFea = Marshal.AllocHGlobal(sizeFeature * faceNum); |
| | | |
| | | // æé è¿åçäººè¸æ¡æ°æ® |
| | | BDFaceBBox[] info = new BDFaceBBox[faceNum]; |
| | | int sizeBox = Marshal.SizeOf(typeof(BDFaceBBox)); |
| | | IntPtr ptBox = Marshal.AllocHGlobal(sizeBox * faceNum); |
| | | // è¿ånum为ç¹å¾å¼ç人æ°,type为0表示æåçæ´»ç
§çç¹å¾å¼ï¼1表示è¯ä»¶ç
§çç¹å¾å¼ï¼2表示nirçç¹å¾å¼ |
| | | int type = 0; |
| | | int num = face_feature(ptFea, ptBox, mat.CvPtr, type); |
| | | if (num <= 0) |
| | | { |
| | | return null; |
| | | } |
| | | Console.WriteLine("face num is:{0}", num); |
| | | // 请确ä¿faceNum大äºnum, faceNum为c#ææçæ£æµäººæ°ï¼éè¦é¢å
åé
å
åï¼å¦åæ æ³è·å |
| | | if (num > faceNum) |
| | | { |
| | | num = faceNum; |
| | | } |
| | | for (int index = 0; index < num; index++) |
| | | { |
| | | IntPtr ptrF = new IntPtr(); |
| | | IntPtr ptrB = new IntPtr(); |
| | | if (8 == IntPtr.Size) |
| | | { |
| | | ptrF = (IntPtr)(ptFea.ToInt64() + sizeFeature * index); |
| | | ptrB = (IntPtr)(ptBox.ToInt64() + sizeBox * index); |
| | | } |
| | | else if (4 == IntPtr.Size) |
| | | { |
| | | ptrF = (IntPtr)(ptFea.ToInt32() + sizeFeature * index); |
| | | ptrB = (IntPtr)(ptBox.ToInt32() + sizeBox * index); |
| | | } |
| | | feaList[index] = (BDFaceFeature)Marshal.PtrToStructure(ptrF, typeof(BDFaceFeature)); |
| | | Console.WriteLine("feaList[index].size is:{0}", feaList[index].size); |
| | | |
| | | |
| | | for (int k = 0; k < feaList[index].size; k++) |
| | | { |
| | | Console.WriteLine("feature is {0}:", feaList[index].data[k]); |
| | | } |
| | | |
| | | info[index] = (BDFaceBBox)Marshal.PtrToStructure(ptrB, typeof(BDFaceBBox)); |
| | | |
| | | // ç´¢å¼å¼ |
| | | Console.WriteLine("detect score is:{0}", info[index].index); |
| | | // 置信度 |
| | | Console.WriteLine("detect score is:{0}", info[index].score); |
| | | // 人è¸å®½åº¦ |
| | | Console.WriteLine("detect mWidth is:{0}", info[index].width); |
| | | // ä¸å¿ç¹X,Yåæ |
| | | Console.WriteLine("detect mCenter_x is:{0}", info[index].center_x); |
| | | Console.WriteLine("detect mCenter_y is:{0}", info[index].center_y); |
| | | } |
| | | // ç»å¶äººè¸æ¡ |
| | | FaceDraw.draw_rects(ref mat, faceNum, info); |
| | | |
| | | //mat.ImWrite("detect.jpg"); |
| | | mat.Release(); |
| | | return feaList; |
| | | } |
| | | |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.IO; |
| | | using System.Threading; |
| | | using System.Collections; |
| | | using System.Runtime.InteropServices; |
| | | using System.Collections.Generic; |
| | | using OpenCvSharp; |
| | | |
| | | namespace FaceAI |
| | | { |
| | | [StructLayout(LayoutKind.Sequential, Pack = 1)] |
| | | // æ´»ä½åå¼ |
| | | struct BDLivenessScore |
| | | { |
| | | public float score; //åå¼ |
| | | }; |
| | | // æ´»ä½æ£æµ |
| | | class FaceLiveness |
| | | { |
| | | // åç®RGBé黿´»ä½æ£æµ |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "rgb_liveness", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | public static extern int rgb_liveness(IntPtr ptr_boxinfo, IntPtr ptr_score, IntPtr mat); |
| | | |
| | | // åç®è¿çº¢å¤é黿´»ä½æ£æµ |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "nir_liveness", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | public static extern int nir_liveness(IntPtr ptr_boxinfo, IntPtr ptr_score, IntPtr mat); |
| | | |
| | | // åç®æ·±åº¦é黿´»ä½æ£æµ |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "rgb_depth_liveness", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | public static extern int rgb_depth_liveness(IntPtr ptr_boxinfo, IntPtr ptr_rgbscore, IntPtr ptr_depthcore, IntPtr rgb_mat, IntPtr depth_mat); |
| | | |
| | | |
| | | public void test_liveness_by_image() |
| | | { |
| | | // rgb æ´»ä½æ£æµ |
| | | string img_rgb = "../images/rgb.png"; |
| | | liveness_check(img_rgb, 0); |
| | | // nir æ´»ä½æ£æµ |
| | | string img_nir = "../images/nir.png"; |
| | | // liveness_check(img_nir, 1); |
| | | |
| | | } |
| | | |
| | | // æµè¯åç®RGBé黿´»ä½æ£æµï¼ä¼ å
¥å¾çæä»¶è·¯å¾ï¼æ´»ä½ç±»å) |
| | | public void liveness_check(string img_path, int live_type) |
| | | { |
| | | Mat mat = Cv2.ImRead(img_path); |
| | | int max_face_num = 1; // æ´»ä½ä»
è¿åä¸ä¸ªäººè¸ï¼å¤äººåæå¤§äººè¸ |
| | | |
| | | BDFaceBBox[] box_info = new BDFaceBBox[max_face_num]; |
| | | |
| | | int sizeBox = Marshal.SizeOf(typeof(BDFaceBBox)); |
| | | IntPtr ptT = Marshal.AllocHGlobal(sizeBox * max_face_num); |
| | | |
| | | |
| | | BDLivenessScore[] score_info = new BDLivenessScore[max_face_num]; |
| | | int sizeScore = Marshal.SizeOf(typeof(BDLivenessScore)); |
| | | IntPtr ptS = Marshal.AllocHGlobal(sizeScore * max_face_num); |
| | | // faceNum为è¿åçæ£æµå°ç人è¸ä¸ªæ° |
| | | int faceNum = 0; |
| | | if (live_type == 0) |
| | | { |
| | | faceNum = rgb_liveness(ptT, ptS, mat.CvPtr); |
| | | } |
| | | else if (live_type == 1) |
| | | { |
| | | faceNum = nir_liveness(ptT, ptS, mat.CvPtr); |
| | | } |
| | | mat.Release(); |
| | | |
| | | |
| | | Console.WriteLine("faceSize is:" + faceNum); |
| | | for (int index = 0; index < faceNum; index++) |
| | | { |
| | | |
| | | IntPtr ptr = new IntPtr(); |
| | | IntPtr ptrScore = new IntPtr(); |
| | | if (8 == IntPtr.Size) |
| | | { |
| | | ptr = (IntPtr)(ptT.ToInt64() + sizeBox * index); |
| | | ptrScore = (IntPtr)(ptS.ToInt64() + sizeScore * index); |
| | | } |
| | | else if (4 == IntPtr.Size) |
| | | { |
| | | ptr = (IntPtr)(ptT.ToInt32() + sizeBox * index); |
| | | ptrScore = (IntPtr)(ptS.ToInt32() + sizeScore * index); |
| | | } |
| | | |
| | | box_info[index] = (BDFaceBBox)Marshal.PtrToStructure(ptr, typeof(BDFaceBBox)); |
| | | |
| | | score_info[index] = (BDLivenessScore)Marshal.PtrToStructure(ptrScore, typeof(BDLivenessScore)); |
| | | |
| | | // ç´¢å¼å¼ |
| | | Console.WriteLine("track index is:{0}", box_info[index].index); |
| | | // 置信度 |
| | | Console.WriteLine("track score is:{0}", box_info[index].score); |
| | | // 人è¸å®½åº¦ |
| | | Console.WriteLine("track mWidth is:{0}", box_info[index].width); |
| | | // ä¸å¿ç¹X,Yåæ |
| | | Console.WriteLine("track mCenter_x is:{0}", box_info[index].center_x); |
| | | Console.WriteLine("track mCenter_y is:{0}", box_info[index].center_y); |
| | | // rgb æ´»ä½åå¼ |
| | | Console.WriteLine("liveness score is:{0}", score_info[index].score); |
| | | |
| | | } |
| | | Marshal.FreeHGlobal(ptT); |
| | | } |
| | | |
| | | // éæ©usbè§é¢æå头id,æ¹æ³é颿è·åè¿æ¥çæå头å表ï¼å
æ¬idï¼åç§°åè·¯å¾ç |
| | | public int select_usb_device_id() |
| | | { |
| | | ArrayList capDevs = new ArrayList(); |
| | | int device_id = 0; |
| | | try |
| | | { |
| | | if (!File.Exists(Path.Combine(Environment.SystemDirectory, @"dpnhpast.dll"))) |
| | | { |
| | | Console.WriteLine("DirectX NOT installed!"); |
| | | return - 1; |
| | | } |
| | | if (!DevEnum.GetDevicesOfCat(FilterCategory.VideoInputDevice, out capDevs)) |
| | | { |
| | | Console.WriteLine("No video capture devices found!"); |
| | | return -1; |
| | | } |
| | | if (capDevs.Count < 2) |
| | | { |
| | | Console.WriteLine("ir and rgb camera devices needed"); |
| | | return -1; |
| | | } |
| | | foreach (DsDevice d in capDevs) { |
| | | Console.WriteLine("== VIDEO DEVICE (id:{0}) ==", d.id); |
| | | Console.WriteLine("Name: {0}", d.Name); |
| | | Console.WriteLine("Path: {0}", d.Path); |
| | | } |
| | | |
| | | if (capDevs.Count > 0) |
| | | { |
| | | device_id = ((DsDevice)capDevs[0]).id; |
| | | Console.WriteLine("select device id is:{0}", device_id); |
| | | } |
| | | } |
| | | catch(Exception) |
| | | { |
| | | if (capDevs != null) |
| | | { |
| | | foreach (DsDevice d in capDevs) |
| | | d.Dispose(); |
| | | capDevs = null; |
| | | } |
| | | return -1; |
| | | } |
| | | return device_id; |
| | | } |
| | | |
| | | // åç®RGBåIRé黿´»ä½æ£æµï¼å¯ä½¿ç¨è¿ªå¨æ³°æè§æ´¾å°çrgb+niråç®æå头),rgbånirçåå¼é½éè¿å¦0.8æç®æ´»ä½éè¿ |
| | | public bool rgb_ir_liveness_check_mat() |
| | | { |
| | | int max_face_num = 1;//åæå¤§äººè¸çæ´»ä½ |
| | | BDLivenessScore[] rgb_score_info = new BDLivenessScore[max_face_num]; |
| | | BDLivenessScore[] nir_score_info = new BDLivenessScore[max_face_num]; |
| | | int sizeScore = Marshal.SizeOf(typeof(BDLivenessScore)); |
| | | IntPtr ptSRGB = Marshal.AllocHGlobal(sizeScore * max_face_num); |
| | | IntPtr ptSNIR = Marshal.AllocHGlobal(sizeScore * max_face_num); |
| | | |
| | | // åå§årgb è¿åçäººè¸æ°æ® |
| | | BDFaceBBox[] rgb_box_info = new BDFaceBBox[max_face_num]; |
| | | |
| | | int sizeBox = Marshal.SizeOf(typeof(BDFaceBBox)); |
| | | IntPtr ptTRGB = Marshal.AllocHGlobal(sizeBox * max_face_num); |
| | | |
| | | // åå§ånir è¿åçäººè¸æ°æ® |
| | | BDFaceBBox[] nir_box_info = new BDFaceBBox[max_face_num]; |
| | | |
| | | sizeBox = Marshal.SizeOf(typeof(BDFaceBBox)); |
| | | IntPtr ptTNIR = Marshal.AllocHGlobal(sizeBox * max_face_num); |
| | | |
| | | // åºå·0为çµèè¯å«çusbæå头ç¼å·ï¼æ¬demoä¸0为irçº¢å¤æå头 |
| | | // ä¸åæå头åçµèè¯å«å¯è½æåºå« |
| | | // ç¼å·ä¸è¬ä»0-10 */ |
| | | int device = select_usb_device_id(); |
| | | VideoCapture camera1 = VideoCapture.FromCamera(device); |
| | | if(!camera1.IsOpened()) |
| | | { |
| | | Console.WriteLine("camera1 open error"); |
| | | return false; |
| | | } |
| | | |
| | | VideoCapture camera2 = VideoCapture.FromCamera(device+1); |
| | | if (!camera2.IsOpened()) |
| | | { |
| | | Console.WriteLine("camera2 open error"); |
| | | return false; |
| | | } |
| | | |
| | | Mat frame1 = new Mat(); |
| | | Mat frame2 = new Mat(); |
| | | Mat rgb_mat = new Mat(); |
| | | Mat ir_mat = new Mat(); |
| | | var window_ir = new Window("ir_face"); |
| | | var window_rgb = new Window("rgb_face"); |
| | | while (true) |
| | | { |
| | | camera1.Read(frame1); |
| | | camera2.Read(frame2); |
| | | if(!frame1.Empty() && !frame2.Empty()) |
| | | { |
| | | if (frame1.Channels() == 3) |
| | | { |
| | | rgb_mat = frame1; |
| | | ir_mat = frame2; |
| | | } |
| | | else |
| | | { |
| | | rgb_mat = frame2; |
| | | ir_mat = frame1; |
| | | } |
| | | float rgb_score = 0; |
| | | float ir_score = 0; |
| | | |
| | | int face_size = 0; |
| | | int nir_size = nir_liveness(ptTNIR, ptSNIR, ir_mat.CvPtr); |
| | | int rgb_size = rgb_liveness(ptTRGB, ptSRGB, rgb_mat.CvPtr); |
| | | |
| | | face_size = nir_size <= rgb_size?nir_size:rgb_size; |
| | | // è·åçäººè¸æ° |
| | | Console.WriteLine("faceNum is:{0}", face_size); |
| | | for (int index = 0; index < face_size; index++) |
| | | { |
| | | |
| | | IntPtr ptrBox = new IntPtr(); |
| | | IntPtr ptrRGBScore = new IntPtr(); |
| | | IntPtr ptrNIRScore = new IntPtr(); |
| | | if (8 == IntPtr.Size) |
| | | { |
| | | ptrBox = (IntPtr)(ptTRGB.ToInt64() + sizeBox * index); |
| | | ptrRGBScore = (IntPtr)(ptSRGB.ToInt64() + sizeScore * index); |
| | | ptrNIRScore = (IntPtr)(ptSNIR.ToInt64() + sizeScore * index); |
| | | } |
| | | else if (4 == IntPtr.Size) |
| | | { |
| | | ptrBox = (IntPtr)(ptTRGB.ToInt32() + sizeBox * index); |
| | | ptrRGBScore = (IntPtr)(ptSRGB.ToInt32() + sizeScore * index); |
| | | ptrNIRScore = (IntPtr)(ptSNIR.ToInt32() + sizeScore * index); |
| | | } |
| | | |
| | | rgb_box_info[index] = (BDFaceBBox)Marshal.PtrToStructure(ptrBox, typeof(BDFaceBBox)); |
| | | |
| | | rgb_score_info[index] = (BDLivenessScore)Marshal.PtrToStructure(ptrRGBScore, typeof(BDLivenessScore)); |
| | | nir_score_info[index] = (BDLivenessScore)Marshal.PtrToStructure(ptrNIRScore, typeof(BDLivenessScore)); |
| | | rgb_score = rgb_score_info[index].score; |
| | | ir_score = nir_score_info[index].score; |
| | | if (rgb_score <= 0.1f) |
| | | { |
| | | rgb_score = 0; |
| | | } |
| | | if (ir_score <= 0.1f) |
| | | { |
| | | ir_score = 0; |
| | | } |
| | | Console.WriteLine("demo ccccc"); |
| | | // 人è¸å®½åº¦ |
| | | Console.WriteLine("mWidth is:{0:f}", rgb_box_info[index].width); |
| | | // ä¸å¿ç¹X,Yåæ |
| | | Console.WriteLine("mCenter_x is:{0:f}", rgb_box_info[index].center_x); |
| | | Console.WriteLine("mCenter_y is:{0:f}", rgb_box_info[index].center_y); |
| | | |
| | | } |
| | | |
| | | string msg_depth = "ir score is:" + ir_score.ToString(); |
| | | |
| | | Cv2.PutText(ir_mat, msg_depth, new Point(20, 50), HersheyFonts.HersheyComplex, 1, new Scalar(255, 100, 0)); |
| | | |
| | | string msg_rgb = "rgb score is:" + rgb_score.ToString(); |
| | | Cv2.PutText(rgb_mat, msg_rgb, new Point(20, 50), HersheyFonts.HersheyComplex, 1, new Scalar(255, 100, 0)); |
| | | if (face_size > 0) |
| | | { |
| | | // ç»äººè¸æ¡ |
| | | FaceDraw.draw_rects(ref rgb_mat, face_size, rgb_box_info); |
| | | // ç»å
³é®ç¹ |
| | | // FaceDraw.draw_shape(ref rgb_mat, face_size, rgb_track_info); |
| | | } |
| | | window_rgb.ShowImage(rgb_mat); |
| | | window_ir.ShowImage(ir_mat); |
| | | Cv2.WaitKey(1); |
| | | } |
| | | } |
| | | Marshal.FreeHGlobal(ptTRGB); |
| | | Marshal.FreeHGlobal(ptTNIR); |
| | | rgb_mat.Release(); |
| | | ir_mat.Release(); |
| | | frame1.Release(); |
| | | frame2.Release(); |
| | | Cv2.DestroyWindow("ir_face"); |
| | | Cv2.DestroyWindow("rgb_face"); |
| | | return true; |
| | | } |
| | | // åç®æå头è¿è¡rgb,depthæ´»ä½æ£æµ(æ¤å¤éé
äºåæ°è¾ç±³çåç®æå头)rgbådepthçåå¼é½éè¿å¦0.8æç®æ´»ä½éè¿ |
| | | public bool rgb_depth_liveness_check_hjimi() |
| | | { |
| | | int max_face_num = 1;//åæå¤§äººè¸çæ´»ä½ |
| | | |
| | | BDLivenessScore[] rgb_score_info = new BDLivenessScore[max_face_num]; |
| | | BDLivenessScore[] depth_score_info = new BDLivenessScore[max_face_num]; |
| | | int sizeScore = Marshal.SizeOf(typeof(BDLivenessScore)); |
| | | IntPtr ptRGBS = Marshal.AllocHGlobal(sizeScore * max_face_num); |
| | | IntPtr ptDepthS = Marshal.AllocHGlobal(sizeScore * max_face_num); |
| | | |
| | | BDFaceBBox[] box_info = new BDFaceBBox[max_face_num]; |
| | | |
| | | int sizeBox = Marshal.SizeOf(typeof(BDFaceBBox)); |
| | | IntPtr ptT = Marshal.AllocHGlobal(sizeBox * max_face_num); |
| | | IntPtr phjimi = HjimiCamera.new_hjimi(); |
| | | var rgb_win = new Window("rgb", WindowMode.AutoSize); |
| | | var depth_win = new Window("depth", WindowMode.Normal); |
| | | float rgb_score = 0; |
| | | float depth_score = 0; |
| | | Mat cv_depth = new Mat(); |
| | | Mat cv_rgb = new Mat(); |
| | | while (true) |
| | | { |
| | | bool ok = HjimiCamera.open_hjimimat(phjimi, cv_rgb.CvPtr, cv_depth.CvPtr); |
| | | if (!ok) |
| | | { |
| | | depth_score = 0; |
| | | rgb_score = depth_score; |
| | | Console.WriteLine("open camera faile"); |
| | | continue; |
| | | } |
| | | if(cv_rgb.Empty()) |
| | | { |
| | | continue; |
| | | } |
| | | if (cv_depth.Empty()) |
| | | { |
| | | continue; |
| | | } |
| | | // è¿å人è¸ä¸ªæ° |
| | | int face_size = rgb_depth_liveness(ptT, ptRGBS, ptDepthS, cv_rgb.CvPtr, cv_depth.CvPtr); |
| | | |
| | | Console.WriteLine("res is:{0}", face_size); |
| | | depth_score = 0; |
| | | rgb_score = depth_score; |
| | | for (int index = 0; index < face_size; index++) |
| | | { |
| | | IntPtr ptrBox = new IntPtr(); |
| | | IntPtr ptrRGBScore = new IntPtr(); |
| | | IntPtr ptrDepthScore = new IntPtr(); |
| | | if (8 == IntPtr.Size) |
| | | { |
| | | ptrBox = (IntPtr)(ptT.ToInt64() + sizeBox * index); |
| | | ptrRGBScore = (IntPtr)(ptRGBS.ToInt64() + sizeScore * index); |
| | | ptrDepthScore = (IntPtr)(ptDepthS.ToInt64() + sizeScore * index); |
| | | } |
| | | else if (4 == IntPtr.Size) |
| | | { |
| | | ptrBox = (IntPtr)(ptT.ToInt32() + sizeBox * index); |
| | | ptrRGBScore = (IntPtr)(ptRGBS.ToInt32() + sizeScore * index); |
| | | ptrDepthScore = (IntPtr)(ptDepthS.ToInt32() + sizeScore * index); |
| | | } |
| | | |
| | | box_info[index] = (BDFaceBBox)Marshal.PtrToStructure(ptrBox, typeof(BDFaceBBox)); |
| | | |
| | | rgb_score_info[index] = (BDLivenessScore)Marshal.PtrToStructure(ptrRGBScore, typeof(BDLivenessScore)); |
| | | rgb_score = rgb_score_info[index].score; |
| | | depth_score_info[index] = (BDLivenessScore)Marshal.PtrToStructure(ptrDepthScore, typeof(BDLivenessScore)); |
| | | depth_score = depth_score_info[index].score; |
| | | // åå¼å¤ªä½ï¼ä¼æ¾ç¤ºå°æ°ç¹å¤ªé¿ï¼ç´æ¥èµå¼0 |
| | | if (depth_score <= 0.1f) |
| | | { |
| | | depth_score = 0; |
| | | } |
| | | if (rgb_score <= 0.1f) |
| | | { |
| | | rgb_score = 0; |
| | | } |
| | | // 人è¸å®½åº¦ |
| | | Console.WriteLine("mWidth is:{0:f}", box_info[index].width); |
| | | // ä¸å¿ç¹X,Yåæ |
| | | Console.WriteLine("mCenter_x is:{0:f}", box_info[index].center_x); |
| | | Console.WriteLine("mCenter_y is:{0:f}", box_info[index].center_y); |
| | | |
| | | } |
| | | |
| | | |
| | | Mat depth_img = new Mat(); |
| | | cv_depth.ConvertTo(depth_img, MatType.CV_8UC1, 255.0 / 4500); |
| | | string msg_depth = "depth score is:" + depth_score.ToString(); |
| | | Cv2.PutText(depth_img, msg_depth, new Point(20, 50), HersheyFonts.HersheyComplex, 1, new Scalar(255, 100, 0)); |
| | | |
| | | string msg_rgb = "rgb score is:" + rgb_score.ToString(); |
| | | Cv2.PutText(cv_rgb, msg_rgb, new Point(20, 50), HersheyFonts.HersheyComplex, 1, new Scalar(255, 100, 0)); |
| | | if (face_size > 0) |
| | | { |
| | | // ç»äººè¸æ¡ |
| | | FaceDraw.draw_rects(ref cv_rgb, face_size, box_info); |
| | | |
| | | } |
| | | |
| | | rgb_win.ShowImage(cv_rgb); |
| | | depth_win.ShowImage(depth_img); |
| | | Cv2.WaitKey(1); |
| | | depth_img.Release(); |
| | | } |
| | | Marshal.FreeHGlobal(ptT); |
| | | cv_rgb.Release(); |
| | | cv_depth.Release(); |
| | | Cv2.DestroyWindow("rgb"); |
| | | Cv2.DestroyWindow("depth"); |
| | | HjimiCamera.hjimi_release(phjimi); |
| | | return true; |
| | | } |
| | | //åç®RGBåDEPTHé黿´»ä½æ£æµï¼ä¼ å
¥opencvè§é¢å¸§)éé
奥æ¯ä¸å
æµ·ççåç®æå头 |
| | | public bool rgb_depth_liveness_check_orbe() |
| | | { |
| | | int max_face_num = 1;//åæå¤§äººè¸çæ´»ä½ |
| | | |
| | | BDLivenessScore[] rgb_score_info = new BDLivenessScore[max_face_num]; |
| | | BDLivenessScore[] depth_score_info = new BDLivenessScore[max_face_num]; |
| | | int sizeScore = Marshal.SizeOf(typeof(BDLivenessScore)); |
| | | IntPtr ptRGBS = Marshal.AllocHGlobal(sizeScore * max_face_num); |
| | | IntPtr ptDepthS = Marshal.AllocHGlobal(sizeScore * max_face_num); |
| | | |
| | | BDFaceBBox[] box_info = new BDFaceBBox[max_face_num]; |
| | | |
| | | int sizeBox = Marshal.SizeOf(typeof(BDFaceTrackInfo)); |
| | | IntPtr ptT = Marshal.AllocHGlobal(sizeBox * max_face_num); |
| | | |
| | | IntPtr porbe = OrbeCamera.new_orbe(); |
| | | var rgb_win = new Window("rgb", WindowMode.AutoSize); |
| | | var depth_win = new Window("depth", WindowMode.Normal); |
| | | float rgb_score = 0; |
| | | float depth_score = 0; |
| | | Mat cv_depth = new Mat(); |
| | | Mat cv_rgb = new Mat(); |
| | | while (true) |
| | | { |
| | | int res_ok = OrbeCamera.open_orbe(porbe, cv_rgb.CvPtr, cv_depth.CvPtr); |
| | | if (res_ok != 0) |
| | | { |
| | | depth_score = 0; |
| | | rgb_score = depth_score; |
| | | Console.WriteLine("open camera faile"); |
| | | continue; |
| | | } |
| | | if (cv_rgb.Empty()) |
| | | { |
| | | continue; |
| | | } |
| | | if (cv_depth.Empty()) |
| | | { |
| | | continue; |
| | | } |
| | | // è¿å人è¸ä¸ªæ° |
| | | int face_size = rgb_depth_liveness(ptT, ptRGBS, ptDepthS, cv_rgb.CvPtr, cv_depth.CvPtr); |
| | | |
| | | Console.WriteLine("res is:{0}", face_size); |
| | | depth_score = 0; |
| | | rgb_score = depth_score; |
| | | for (int index = 0; index < face_size; index++) |
| | | { |
| | | IntPtr ptrBox = new IntPtr(); |
| | | IntPtr ptrRGBScore = new IntPtr(); |
| | | IntPtr ptrDepthScore = new IntPtr(); |
| | | if (8 == IntPtr.Size) |
| | | { |
| | | ptrBox = (IntPtr)(ptT.ToInt64() + sizeBox * index); |
| | | ptrRGBScore = (IntPtr)(ptRGBS.ToInt64() + sizeScore * index); |
| | | ptrDepthScore = (IntPtr)(ptDepthS.ToInt64() + sizeScore * index); |
| | | } |
| | | else if (4 == IntPtr.Size) |
| | | { |
| | | ptrBox = (IntPtr)(ptT.ToInt32() + sizeBox * index); |
| | | ptrRGBScore = (IntPtr)(ptRGBS.ToInt32() + sizeScore * index); |
| | | ptrDepthScore = (IntPtr)(ptDepthS.ToInt32() + sizeScore * index); |
| | | } |
| | | |
| | | box_info[index] = (BDFaceBBox)Marshal.PtrToStructure(ptrBox, typeof(BDFaceBBox)); |
| | | |
| | | rgb_score_info[index] = (BDLivenessScore)Marshal.PtrToStructure(ptrRGBScore, typeof(BDLivenessScore)); |
| | | rgb_score = rgb_score_info[index].score; |
| | | depth_score_info[index] = (BDLivenessScore)Marshal.PtrToStructure(ptrDepthScore, typeof(BDLivenessScore)); |
| | | depth_score = depth_score_info[index].score; |
| | | // åå¼å¤ªä½ï¼ä¼æ¾ç¤ºå°æ°ç¹å¤ªé¿ï¼ç´æ¥èµå¼0 |
| | | if (depth_score <= 0.1f) |
| | | { |
| | | depth_score = 0; |
| | | } |
| | | if (rgb_score <= 0.1f) |
| | | { |
| | | rgb_score = 0; |
| | | } |
| | | // 人è¸å®½åº¦ |
| | | Console.WriteLine("mWidth is:{0:f}", box_info[index].width); |
| | | // ä¸å¿ç¹X,Yåæ |
| | | Console.WriteLine("mCenter_x is:{0:f}", box_info[index].center_x); |
| | | Console.WriteLine("mCenter_y is:{0:f}", box_info[index].center_y); |
| | | |
| | | } |
| | | |
| | | |
| | | Mat depth_img = new Mat(); |
| | | cv_depth.ConvertTo(depth_img, MatType.CV_8UC1, 255.0 / 4500); |
| | | string msg_depth = "depth score is:" + depth_score.ToString(); |
| | | Cv2.PutText(depth_img, msg_depth, new Point(20, 50), HersheyFonts.HersheyComplex, 1, new Scalar(255, 100, 0)); |
| | | |
| | | string msg_rgb = "rgb score is:" + rgb_score.ToString(); |
| | | Cv2.PutText(cv_rgb, msg_rgb, new Point(20, 50), HersheyFonts.HersheyComplex, 1, new Scalar(255, 100, 0)); |
| | | if (face_size > 0) |
| | | { |
| | | // ç»äººè¸æ¡ |
| | | FaceDraw.draw_rects(ref cv_rgb, face_size, box_info); |
| | | } |
| | | rgb_win.ShowImage(cv_rgb); |
| | | depth_win.ShowImage(depth_img); |
| | | Cv2.WaitKey(1); |
| | | depth_img.Release(); |
| | | } |
| | | Marshal.FreeHGlobal(ptT); |
| | | cv_rgb.Release(); |
| | | cv_depth.Release(); |
| | | Cv2.DestroyWindow("rgb"); |
| | | Cv2.DestroyWindow("depth"); |
| | | OrbeCamera.orbe_release(porbe); |
| | | return true; |
| | | } |
| | | |
| | | public void test_rgb_ir_liveness_check_by_opencv() |
| | | { |
| | | rgb_ir_liveness_check_mat(); |
| | | } |
| | | |
| | | // åç®RGBåDEPTHé黿´»ä½æ£æµ,éé
奥æ¯ä¸å
æµ·ççåç®æå头 |
| | | public void test_rgb_depth_liveness_check_by_orbe() |
| | | { |
| | | rgb_depth_liveness_check_orbe(); |
| | | } |
| | | |
| | | // åç®æå头è¿è¡rgb,depthæ´»ä½æ£æµ(æ¤å¤éé
äºåæ°è¾ç±³çåç®æå头) |
| | | public void test_rgb_depth_liveness_check_by_hjimi() |
| | | { |
| | | rgb_depth_liveness_check_hjimi(); |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Runtime.InteropServices; |
| | | using OpenCvSharp; |
| | | /** |
| | | * 夿³¨ï¼äººè¸æ°æ®åºç®¡ç说æï¼ï¼ |
| | | * äººè¸æ°æ®åºä¸ºéç¨sqlite3çæ°æ®åºï¼ä¼èªå¨çæä¸ä¸ªdbç®å½å¤¹ï¼ä¸é¢ææ°æ®åºface.dbæä»¶ä¿åæ°æ®åº |
| | | * å¯ç¨sqliteExpertä¹ç±»çå¯è§åå·¥å
·æå¼æ¥ç,亦å¯ç¨å½ä»¤è¡ï¼æ¹æ³è¯·èªè¡ç¾åº¦ã |
| | | * è¯¥æ°æ®åºä»
ä»
å¯éåºäº5w人左å³ç人è¸åºï¼ä¸è®¾è®¡è¡¨æ ¼çå±äºå°åéç¨åã |
| | | * è¥ä¸è½æ»¡è¶³å®¢æ·ä¸ªæ§åéæ±ï¼å®¢æ·å¯èªè¡è®¾è®¡æ°æ®åºä¿åæ°æ®ã宿¨å°±æ¯æ¯ä¸ªäººè¸å¾çæåä¸ä¸ªç¹å¾å¼ä¿åã |
| | | * 人è¸1:1,1:Næ¯å¯¹åè¯å«å®é
å°±æ¯ç¹å¾å¼çæ¯å¯¹ã1:1åªè¦æå2å¼ ä¸åçå¾çç¹å¾å¼è°ç¨compare_featureæ¯å¯¹ã |
| | | * 1ï¼Næ¯æåä¸ä¸ªç¹å¾å¼åæ°æ®åºä¸å·²ä¿åçN个ç¹å¾å¼ä¸ä¸æ¯å¯¹(æ¯å¯¹é度å¾å¿«ï¼ä¸ç¨æ
å¿æçé®é¢)ï¼ |
| | | * æç»ååæ°é«çå¼ä¸ºæé«ç¸ä¼¼åº¦ã |
| | | * ç¸ä¼¼åº¦è¯å«çåæ°å¯èªè¡æµè¯æ ¹æ®å®éªç»ææå®ï¼ä¸è¬æ¨èç¸ä¼¼åº¦å¤§äº80å为åä¸äººã |
| | | * |
| | | */ |
| | | namespace FaceAI |
| | | { |
| | | class FaceManager |
| | | { |
| | | // äººè¸æ³¨å(ä¼ ç¹å¾å¼,ç¹å¾å¼å¯åèFaceFeature.csæåï¼äº¦å¯åèFaceCompare.csæ¥çç¹å¾å¼çæ¯å¯¹) |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "user_add", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | private static extern IntPtr user_add(ref BDFaceFeature f1, string user_id, string group_id, |
| | | string user_info=""); |
| | | |
| | | // äººè¸æ³¨å(ä¼ opencvå¾ç帧,ç¹å¾å¼å¯åèFaceFeature.csæåï¼äº¦å¯åèFaceCompare.csæ¥çç¹å¾å¼çæ¯å¯¹) |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "user_add_by_mat", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | private static extern IntPtr user_add_by_mat(IntPtr mat, string user_id, string group_id, |
| | | string user_info = ""); |
| | | |
| | | // äººè¸æ´æ°(ä¼ å¾ç帧) |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "user_update", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | private static extern IntPtr user_update(IntPtr mat, string user_id, string group_id, |
| | | string user_info = ""); |
| | | |
| | | // ç¨æ·å é¤ |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "user_delete", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | private static extern IntPtr user_delete(string user_id, string group_id); |
| | | // ç»æ·»å |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "group_add", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | private static extern IntPtr group_add(string group_id); |
| | | // ç»å é¤ |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "group_delete", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | private static extern IntPtr group_delete(string group_id); |
| | | // æ¥è¯¢ç¨æ·ä¿¡æ¯ |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "get_user_info", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | private static extern IntPtr get_user_info(string user_id, string group_id); |
| | | |
| | | // æ¥è¯¢ç¨æ·å¾ç |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "get_user_image", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | private static extern int get_user_image(IntPtr out_mat, string user_id, string group_id); |
| | | |
| | | // ç¨æ·ç»å表æ¥è¯¢ |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "get_user_list", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | private static extern IntPtr get_user_list(string group_id, int start = 0, int length = 100); |
| | | // ç»å表æ¥è¯¢ |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "get_group_list", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | private static extern IntPtr get_group_list(int start = 0, int length = 100); |
| | | |
| | | // æ°æ®åºäººè¸æ°éæ¥è¯¢ |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "db_face_count", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | private static extern int db_face_count(string group_id); |
| | | |
| | | |
| | | // æµè¯äººè¸æ³¨å |
| | | public void test_user_add() |
| | | { |
| | | // äººè¸æ³¨å |
| | | string user_id = "test_user"; |
| | | string group_id = "test_group"; |
| | | string file_name = "../images/1.jpg"; |
| | | |
| | | string user_info = "user_info"; |
| | | // æå人è¸ç¹å¾å¼æ°ç»ï¼å¤äººä¼æåå¤ä¸ªäººçç¹å¾å¼ï¼ |
| | | /* |
| | | FaceFeature feature = new FaceFeature(); |
| | | BDFaceFeature[] feaList1 = feature.test_get_face_feature_by_path(file_name |
| | | if (feaList1 == null) |
| | | { |
| | | Console.WriteLine("get feature fail"); |
| | | return; |
| | | } |
| | | // å设æµè¯çå¾çæ¯1ä¸ªäººï¼ |
| | | BDFaceFeature f1 = feaList1[0]; |
| | | // äººè¸æ³¨å (ä¼ ç¹å¾å¼äººè¸æ³¨åï¼è¯¥æ¹æ³æ³¨åä¸ä¿å人è¸å¾çå
¥åº) |
| | | IntPtr ptr = user_add(ref f1, user_id, group_id, user_info); |
| | | string buf = Marshal.PtrToStringAnsi(ptr); |
| | | Console.WriteLine("user_add res is:" + buf); |
| | | */ |
| | | // éè¿å¾çå¸§äººè¸æ³¨åï¼åªæè¯¥æ¹æ³è¿è¡çäººè¸æ³¨åï¼äººè¸åºæä¼ä¿å人è¸å¾ç) |
| | | Mat mat = Cv2.ImRead(file_name); |
| | | IntPtr mptr = user_add_by_mat(mat.CvPtr, user_id, group_id, user_info); |
| | | string mbuf = Marshal.PtrToStringAnsi(mptr); |
| | | Console.WriteLine("user_add_by_mat res is:" + mbuf); |
| | | } |
| | | |
| | | // æµè¯äººè¸æ´æ° |
| | | public void test_user_update() |
| | | { |
| | | string user_id = "test_user"; |
| | | string group_id = "test_group"; |
| | | string file_name = "../images/1.jpg"; |
| | | Mat mat = Cv2.ImRead(file_name); |
| | | string user_info = "user_info"; |
| | | // äººè¸æ´æ° |
| | | IntPtr ptr = user_update(mat.CvPtr, user_id, group_id, user_info); |
| | | string buf = Marshal.PtrToStringAnsi(ptr); |
| | | Console.WriteLine("user_update res is:" + buf); |
| | | } |
| | | |
| | | // æµè¯ç¨æ·å é¤ ï¼ç¨æ·å é¤åï¼äººè¸æ°æ®ä¹è¢«å é¤ï¼ |
| | | public void test_user_delete() |
| | | { |
| | | string user_id = "test_user"; |
| | | string group_id = "test_group"; |
| | | IntPtr ptr = user_delete(user_id, group_id); |
| | | string buf = Marshal.PtrToStringAnsi(ptr); |
| | | Console.WriteLine("user_delete res is:" + buf); |
| | | } |
| | | |
| | | // ç»æ·»å |
| | | public void test_group_add() |
| | | { |
| | | string group_id = "test_group2"; |
| | | IntPtr ptr = group_add(group_id); |
| | | string buf = Marshal.PtrToStringAnsi(ptr); |
| | | Console.WriteLine("group_add res is:" + buf); |
| | | } |
| | | |
| | | // ç»å é¤ |
| | | public void test_group_delete() |
| | | { |
| | | string group_id = "test_group2"; |
| | | IntPtr ptr = group_delete(group_id); |
| | | string buf = Marshal.PtrToStringAnsi(ptr); |
| | | Console.WriteLine("group_delete res is:" + buf); |
| | | } |
| | | |
| | | // æ¥è¯¢ç¨æ·ä¿¡æ¯ |
| | | public void test_get_user_info() |
| | | { |
| | | string user_id = "test_user"; |
| | | string group_id = "test_group"; |
| | | IntPtr ptr = get_user_info(user_id , group_id); |
| | | string buf = Marshal.PtrToStringAnsi(ptr); |
| | | Console.WriteLine("get_user_info res is:" + buf); |
| | | } |
| | | |
| | | // æ¥è¯¢ç¨æ·å¾ç |
| | | public void test_get_user_image() |
| | | { |
| | | string user_id = "test_user"; |
| | | string group_id = "test_group"; |
| | | Mat out_mat = new Mat(); |
| | | int res = get_user_image(out_mat.CvPtr, user_id, group_id); |
| | | if (res == 0) |
| | | { |
| | | Console.WriteLine("get_user_image success"); |
| | | // å¾çä¿åå°æ¬å° |
| | | out_mat.ImWrite("user.jpg"); |
| | | } |
| | | else |
| | | { |
| | | Console.WriteLine("get_user_image error{0}:", res); |
| | | } |
| | | |
| | | } |
| | | |
| | | // ç¨æ·ç»å表æ¥è¯¢ |
| | | public void test_get_user_list() |
| | | { |
| | | string group_id = "test_group"; |
| | | IntPtr ptr = get_user_list(group_id); |
| | | string buf = Marshal.PtrToStringAnsi(ptr); |
| | | Console.WriteLine("get_user_list res is:" + buf); |
| | | } |
| | | |
| | | // ç»å表æ¥è¯¢ |
| | | public void test_get_group_list() |
| | | { |
| | | IntPtr ptr = get_group_list(); |
| | | string buf = Marshal.PtrToStringAnsi(ptr); |
| | | Console.WriteLine("get_group_list res is:" + buf); |
| | | } |
| | | |
| | | // 人è¸åºæ°éæ¥è¯¢ |
| | | public void test_db_face_count() |
| | | { |
| | | string group_id = "test_group"; |
| | | // åæ°ä¼ ç»id表示æ¥è¯¥ç»é½äººè¸æ°é |
| | | int count = db_face_count(group_id); |
| | | Console.WriteLine("count is:" + count); |
| | | string group_id2 = null; |
| | | // åæ°ä¼ nullè¡¨ç¤ºæ¥æ´ä¸ªåº |
| | | int count2 = db_face_count(group_id2); |
| | | Console.WriteLine("all count is:" + count2); |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Runtime.InteropServices; |
| | | using System.Collections.Generic; |
| | | using OpenCvSharp; |
| | | |
| | | // 人è¸è·è¸ª |
| | | namespace FaceAI |
| | | { |
| | | // 人è¸è·è¸ªé
ç½®ç»æä½ |
| | | [StructLayout(LayoutKind.Sequential, Pack = 1)] |
| | | struct BDFaceTrackConf |
| | | { |
| | | public float detect_intv_before_track; // æªè·è¸ªå°äººè¸åçæ£æµæ¶é´é´é |
| | | public float detect_intv_during_track; // å·²è·è¸ªå°äººè¸åçæ£æµæ¶é´é´é |
| | | }; |
| | | |
| | | [StructLayout(LayoutKind.Sequential, Pack = 1)] |
| | | public struct BDFaceBBox |
| | | { |
| | | public int index; // 人è¸ç´¢å¼å¼ |
| | | public float center_x; // 人è¸ä¸å¿ç¹xåæ |
| | | public float center_y; // 人è¸ä¸å¿ç¹yåæ |
| | | public float width; // 人è¸å®½åº¦ |
| | | public float height; // 人è¸é«åº¦ |
| | | public float score; // 人è¸ç½®ä¿¡åº¦ |
| | | } |
| | | |
| | | [StructLayout(LayoutKind.Sequential, Pack = 1)] |
| | | public struct BDFaceLandmark |
| | | { |
| | | public int index; // 人è¸å
³é®ç¹ç´¢å¼å¼ |
| | | public int size; // 人è¸å
³é®ç¹æ°é |
| | | [MarshalAs(UnmanagedType.ByValArray, SizeConst = 144)] |
| | | public float[] data;// = new float[144]; |
| | | public float score; // 人è¸å
³é®ç¹ç½®ä¿¡åº¦ |
| | | } |
| | | [StructLayout(LayoutKind.Sequential, Pack = 1)] |
| | | public struct BDFaceTrackInfo |
| | | { |
| | | public int face_id; |
| | | [MarshalAs(UnmanagedType.Struct)] |
| | | public BDFaceBBox box; |
| | | [MarshalAs(UnmanagedType.Struct)] |
| | | public BDFaceLandmark landmark; |
| | | } |
| | | |
| | | // 人è¸è·è¸ª |
| | | class FaceTrack |
| | | { |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "track", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | // type 为0æ¶åæ§è¡RGB人è¸è·è¸ªï¼1æ¶åæ§è¡NIR人è¸è·è¸ª |
| | | public static extern int track(IntPtr ptr, IntPtr mat, int type); |
| | | |
| | | [DllImport("BaiduFaceApi.dll", EntryPoint = "clear_track_history", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | // type 为0æ¶åæ§è¡RGB人è¸è·è¸ªï¼1æ¶åæ§è¡NIR人è¸è·è¸ª |
| | | public static extern void clear_track_history(int type); |
| | | |
| | | // æµè¯äººè¸è·è¸ª |
| | | public void image_track() |
| | | { |
| | | Console.WriteLine("test_track"); |
| | | int max_track_num = 50; // 设置æå¤æ£æµè·è¸ªäººæ°ï¼å¤äººè¸æ£æµï¼ï¼é»è®¤ä¸º1ï¼æå¤å¯è®¾ä¸º50 |
| | | |
| | | BDFaceTrackInfo[] track_info = new BDFaceTrackInfo[max_track_num]; |
| | | for (int i = 0; i < max_track_num; i++) |
| | | { |
| | | track_info[i] = new BDFaceTrackInfo(); |
| | | track_info[i].box = new BDFaceBBox(); |
| | | track_info[i].box.score = 0; |
| | | track_info[i].box.width = 0; |
| | | track_info[i].landmark.data = new float[144]; |
| | | track_info[i].face_id = 0; |
| | | } |
| | | int sizeTrack = Marshal.SizeOf(typeof(BDFaceTrackInfo)); |
| | | IntPtr ptT = Marshal.AllocHGlobal(sizeTrack * max_track_num); |
| | | Mat mat = Cv2.ImRead("../images/2.jpg"); |
| | | // faceNum为è¿åçæ£æµå°ç人è¸ä¸ªæ° |
| | | int type = 0; |
| | | int faceNum = track(ptT, mat.CvPtr, type); |
| | | Console.WriteLine("faceSize is:" + faceNum); |
| | | // å 为éé¢åé
å
åï¼æä»¥è¿åçäººè¸æ°è¥å¤§äºé¢å
åé
çå
åæ°ï¼åä»
ä»
æ¾ç¤ºé¢åé
çäººè¸æ° |
| | | if (faceNum > max_track_num) |
| | | { |
| | | faceNum = max_track_num; |
| | | } |
| | | for (int index = 0; index < faceNum; index++) { |
| | | |
| | | IntPtr ptr = new IntPtr(); |
| | | if (8 == IntPtr.Size) |
| | | { |
| | | ptr = (IntPtr)(ptT.ToInt64() + sizeTrack * index); |
| | | } |
| | | else if (4 == IntPtr.Size) |
| | | { |
| | | ptr = (IntPtr)(ptT.ToInt32() + sizeTrack * index); |
| | | } |
| | | |
| | | track_info[index] = (BDFaceTrackInfo)Marshal.PtrToStructure(ptr, typeof(BDFaceTrackInfo)); |
| | | Console.WriteLine("track face_id is {0}:", track_info[index].face_id); |
| | | Console.WriteLine("track landmarks is:"); |
| | | |
| | | for(int i = 0; i < 144; i++) |
| | | { |
| | | Console.WriteLine("lanmark data is {0}:", track_info[index].landmark.data[i]); |
| | | } |
| | | Console.WriteLine("track landmarks score is:{0}", track_info[index].landmark.score); |
| | | Console.WriteLine("track landmarks index is:{0}", track_info[index].landmark.index); |
| | | |
| | | // ç´¢å¼å¼ |
| | | Console.WriteLine("track score is:{0}", track_info[index].box.index); |
| | | // 置信度 |
| | | Console.WriteLine("track score is:{0}", track_info[index].box.score); |
| | | // 人è¸å®½åº¦ |
| | | Console.WriteLine("track mWidth is:{0}", track_info[index].box.width); |
| | | // ä¸å¿ç¹X,Yåæ |
| | | Console.WriteLine("track mCenter_x is:{0}", track_info[index].box.center_x); |
| | | Console.WriteLine("track mCenter_y is:{0}", track_info[index].box.center_y); |
| | | } |
| | | // ç»äººè¸æ¡ |
| | | FaceDraw.draw_rects(ref mat, faceNum, track_info); |
| | | // å¾çç»æ¡ä¿å |
| | | mat.ImWrite("track.jpg"); |
| | | Marshal.FreeHGlobal(ptT); |
| | | } |
| | | |
| | | //usbæå头宿¶äººè¸æ£æµç¤ºä¾ |
| | | public void usb_video_track() |
| | | { |
| | | // é»è®¤çµèèªå¸¦æå头ï¼deviceå¯è½ä¸º0ï¼è¥å¤æ¥usbæå头ï¼ådeviceå¯è½ä¸º1. |
| | | int dev = 0; |
| | | using (var window = new Window("face")) |
| | | using (VideoCapture cap = VideoCapture.FromCamera(dev)) |
| | | { |
| | | if (!cap.IsOpened()) |
| | | { |
| | | Console.WriteLine("open camera error"); |
| | | return; |
| | | } |
| | | // Frame image buffer |
| | | Mat image = new Mat(); |
| | | // When the movie playback reaches end, Mat.data becomes NULL. |
| | | while (true) |
| | | { |
| | | cap.Read(image); // same as cvQueryFrame |
| | | if (!image.Empty()) |
| | | { |
| | | int ilen = 10;//ä¼ å
¥çäººè¸æ° |
| | | BDFaceTrackInfo[] track_info = new BDFaceTrackInfo[ilen]; |
| | | for (int i = 0; i < ilen; i++) |
| | | { |
| | | track_info[i].box = new BDFaceBBox(); |
| | | track_info[i].box.score = 0; |
| | | track_info[i].box.width = 0; |
| | | track_info[i].landmark.data = new float[144]; |
| | | track_info[i].face_id = 0; |
| | | } |
| | | int sizeTrack = Marshal.SizeOf(typeof(BDFaceTrackInfo)); |
| | | IntPtr ptT = Marshal.AllocHGlobal(sizeTrack* ilen); |
| | | //Cv2.ImWrite("usb_track_Cv2.jpg", image); |
| | | /* trackMat |
| | | * ä¼ å
¥åæ°: maxTrackObjNum:æ£æµå°çæå¤§äººè¸æ°ï¼ä¼ å
¥å¤é¨åé
äººè¸æ°ï¼éè¦åé
对åºçå
å大å°ã |
| | | * ä¼ åºæ£æµå°çæå¤§äººè¸æ° |
| | | * è¿åå¼: ä¼ å
¥çäººè¸æ° å æ£æµå°çäººè¸æ° ä¸çæå°å¼,å®é
è¿åç人è¸ã |
| | | ****/ |
| | | int faceSize = ilen;//è¿åäººè¸æ° åé
äººè¸æ°åæ£æµå°äººè¸æ°çæå°å¼ |
| | | int curSize = ilen;//å½åäººè¸æ° è¾å
¥åé
çäººè¸æ°ï¼è¾åºå®é
æ£æµå°çäººè¸æ° |
| | | int type = 0; |
| | | faceSize = track(ptT, image.CvPtr, type); |
| | | for (int index = 0; index < faceSize; index++) |
| | | { |
| | | IntPtr ptr = new IntPtr(); |
| | | if( 8 == IntPtr.Size) |
| | | { |
| | | ptr = (IntPtr)(ptT.ToInt64() + sizeTrack * index); |
| | | } |
| | | else if(4 == IntPtr.Size) |
| | | { |
| | | ptr = (IntPtr)(ptT.ToInt32() + sizeTrack * index); |
| | | } |
| | | |
| | | track_info[index] = (BDFaceTrackInfo)Marshal.PtrToStructure(ptr, typeof(BDFaceTrackInfo)); |
| | | //face_info[index] = (BDFaceBBox)Marshal.PtrToStructure(info_ptr, typeof(BDFaceBBox)); |
| | | Console.WriteLine("in Liveness::usb_track face_id is {0}:",track_info[index].face_id); |
| | | Console.WriteLine("in Liveness::usb_track landmarks is:"); |
| | | |
| | | Console.WriteLine("in Liveness::usb_track score is:{0:f}", track_info[index].box.score); |
| | | // 人è¸å®½åº¦ |
| | | Console.WriteLine("in Liveness::usb_track mWidth is:{0:f}", track_info[index].box.width); |
| | | // ä¸å¿ç¹X,Yåæ |
| | | Console.WriteLine("in Liveness::usb_track mCenter_x is:{0:f}", track_info[index].box.center_x); |
| | | Console.WriteLine("in Liveness::usb_track mCenter_y is:{0:f}", track_info[index].box.center_y); |
| | | |
| | | } |
| | | |
| | | FaceDraw.draw_rects(ref image, faceSize, track_info); |
| | | // FaceDraw.draw_shape(ref image, faceSize, track_info); |
| | | Marshal.FreeHGlobal(ptT); |
| | | window.ShowImage(image); |
| | | Cv2.WaitKey(1); |
| | | Console.WriteLine("mat not empty"); |
| | | } |
| | | else |
| | | { |
| | | Console.WriteLine("mat is empty"); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | // æ¸
é¤è·è¸ªç人è¸ä¿¡æ¯ |
| | | public void test_clear_tracked_faces() |
| | | { |
| | | int type = 0; |
| | | clear_track_history(type); |
| | | Console.WriteLine("after clear tracked faces"); |
| | | } |
| | | |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using System.IO; |
| | | |
| | | namespace FaceAI |
| | | { |
| | | class FileUtil |
| | | { |
| | | // æbyteä¿åæäºè¿å¶æä»¶ |
| | | public static void byte2file(string file_name, byte[] b, int len) |
| | | { |
| | | FileStream fs = new FileStream(file_name, FileMode.OpenOrCreate); |
| | | BinaryWriter bw = new BinaryWriter(fs); |
| | | bw.Write(b, 0, len); |
| | | bw.Close(); |
| | | fs.Close(); |
| | | |
| | | } |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.IO; |
| | | using System.Collections; |
| | | using System.Runtime.InteropServices; |
| | | using System.Collections.Generic; |
| | | using OpenCvSharp; |
| | | |
| | | namespace FaceAI |
| | | { |
| | | class HjimiCamera |
| | | { |
| | | // åæ°è¾ç±³ è·åæå头设å¤å¯¹è±¡ |
| | | [DllImport("AimiCamera.dll", EntryPoint = "new_hjimi", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | public static extern IntPtr new_hjimi(); |
| | | // åæ°è¾ç±³ éæ¾æå头设å¤å¯¹è±¡ |
| | | [DllImport("AimiCamera.dll", EntryPoint = "hjimi_release", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | public static extern void hjimi_release(IntPtr hjimi); |
| | | // åæ°è¾ç±³ æå¼æå头设å¤å¯¹è±¡ ä¼ å
¥opencvè§é¢å¸§rgbådepthçmat |
| | | [DllImport("AimiCamera.dll", EntryPoint = "open_hjimimat", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | public static extern bool open_hjimimat(IntPtr hjimi, IntPtr rgb_mat, IntPtr depth_mat); |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.IO; |
| | | using OpenCvSharp; |
| | | using System.Drawing; |
| | | |
| | | |
| | | namespace FaceAI |
| | | { |
| | | class ImageUtil |
| | | { |
| | | // å¾çæä»¶è½¬Base64String |
| | | public static string img2byte(string filePath) |
| | | { |
| | | // åªä¿çæä»¶åï¼é¿å
è·¯å¾é误 |
| | | string fileName = Path.GetFileName(filePath); |
| | | |
| | | // è·åæä»¶ç宿´è·¯å¾ |
| | | string fullPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "image", fileName); |
| | | |
| | | if (!File.Exists(fullPath)) |
| | | { |
| | | throw new FileNotFoundException("æä»¶ä¸åå¨ï¼" + fullPath); |
| | | } |
| | | |
| | | using (FileStream filestream = new FileStream(fullPath, FileMode.Open, FileAccess.Read)) |
| | | { |
| | | byte[] arr = new byte[filestream.Length]; |
| | | filestream.Read(arr, 0, arr.Length); |
| | | return Convert.ToBase64String(arr); |
| | | } |
| | | |
| | | ////å°Imageè½¬æ¢ææµæ°æ®ï¼å¹¶ä¿å为byte[] |
| | | //MemoryStream mstream = new MemoryStream(); |
| | | //img.Save(mstream, System.Drawing.Imaging.ImageFormat.Jpeg); |
| | | //byte[] byData = new Byte[mstream.Length]; |
| | | //mstream.Position = 0; |
| | | //mstream.Read(byData, 0, byData.Length); |
| | | //mstream.Close(); |
| | | //return byData; |
| | | } |
| | | // å¾çæä»¶è½¬bytes |
| | | public static byte[] get_img_data(string img_path) |
| | | { |
| | | //æ ¹æ®å¾çæä»¶çè·¯å¾ä½¿ç¨æä»¶æµæå¼ï¼å¹¶ä¿å为byte[] |
| | | FileStream fs = new FileStream(img_path, FileMode.Open);//å¯ä»¥æ¯å
¶ä»éè½½æ¹æ³ |
| | | byte[] byData = new byte[fs.Length]; |
| | | fs.Read(byData, 0, byData.Length); |
| | | fs.Close(); |
| | | return byData; |
| | | } |
| | | // bytes转å¾çæä»¶ |
| | | //public static void byte2img(byte[] b, int len, string file_name) |
| | | //{ |
| | | // MemoryStream ms = new MemoryStream(b); |
| | | // ms.Position = 0; |
| | | // System.Drawing.Image img = System.Drawing.Image.FromStream(ms); |
| | | // img.Save(file_name); |
| | | // ms.Close(); |
| | | //} |
| | | //// äºè¿å¶byteå¾çæµè½¬matç¤ºä¾ |
| | | //public static Mat image2mat(string img_path) |
| | | //{ |
| | | // System.Drawing.Image img = System.Drawing.Image.FromFile(img_path); |
| | | // byte[] img_bytes = ImageUtil.img2byte(img); |
| | | // Mat mat = Cv2.ImDecode(img_bytes, ImreadModes.Color); |
| | | // return mat; |
| | | //} |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Runtime.InteropServices; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | // éé
奥æ¯ä¸å
é头 |
| | | namespace FaceAI |
| | | { |
| | | class OrbeCamera |
| | | { |
| | | // è·åorbeCamera对象 奥æ¯ä¸å
æµ·ççä¼å¤å¥¥æ¯é头 |
| | | [DllImport("OrbeCamera.dll", EntryPoint = "new_orbe", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | public static extern IntPtr new_orbe(); |
| | | |
| | | // æå¼å¥¥æ¯ä¸å
|
| | | [DllImport("OrbeCamera.dll", EntryPoint = "open_orbe", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | public static extern int open_orbe(IntPtr porbe, IntPtr cv_rgb, IntPtr cv_depth); |
| | | |
| | | // 鿾奥æ¯ä¸å
|
| | | [DllImport("OrbeCamera.dll", EntryPoint = "orbe_release", CharSet = CharSet.Ansi |
| | | , CallingConvention = CallingConvention.Cdecl)] |
| | | public static extern void orbe_release(IntPtr orbe); |
| | | |
| | | } |
| | | } |
¶Ô±ÈÐÂÎļþ |
| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | |
| | | namespace FaceAI |
| | | { |
| | | class TimeUtil |
| | | { |
| | | public static long get_time_stamp() |
| | | { |
| | | TimeSpan ts = DateTime.Now.ToUniversalTime() - new DateTime(1970, 1, 1); |
| | | return (long)ts.TotalMilliseconds; |
| | | } |
| | | } |
| | | } |
| | |
| | | </PropertyGroup> |
| | | |
| | | <ItemGroup> |
| | | <PackageReference Include="Baidu.AI" Version="4.15.16" /> |
| | | <PackageReference Include="Newtonsoft.Json" Version="13.0.3" /> |
| | | <PackageReference Include="NLog" Version="5.4.0" /> |
| | | </ItemGroup> |
| | | |
| | | <ItemGroup> |
| | | <Reference Include="OpenCvSharp"> |
| | | <HintPath>bin\Release\face-resource\x86\OpenCvSharp.dll</HintPath> |
| | | </Reference> |
| | | </ItemGroup> |
| | | |
| | | </Project> |
| | |
| | | WebResponseContent DeleteUserIsface(string account); |
| | | |
| | | |
| | | |
| | | string FaceCompareFeature(string file1, string file2); |
| | | |
| | | } |
| | | } |
| | |
| | | { |
| | | _httpContextAccessor = httpContextAccessor; |
| | | } |
| | | [HttpPost, Route("FaceCompareFeature"), AllowAnonymous] |
| | | public WebResponseContent FaceCompareFeature(string file1, string file2) |
| | | { |
| | | var score = Service.FaceCompareFeature(file1, file2); |
| | | return WebResponseContent.Instance.OK(data: "data:" + score); |
| | | } |
| | | |
| | | [HttpPost, Route("swgLogin"), AllowAnonymous] |
| | | public dynamic SwgLogin([FromBody] SwaggerLoginRequest loginRequest) |
| | | { |
| | |
| | | using WIDESEAWCS_Server.HostedService; |
| | | using WIDESEAWCS_Server.Filter; |
| | | using WIDESEAWCS_Tasks.OHT; |
| | | using Baidu.Aip.Face; |
| | | |
| | | var builder = WebApplication.CreateBuilder(args); |
| | | |
| | |
| | | app.UseApplicationSetup();//å¯å¨é
ç½® |
| | | |
| | | app.UseAllServicesMiddle(builder.Services); |
| | | |
| | | FaceAI.Face.Main(); |
| | | app.UseSession(); |
| | | //if (app.Environment.IsDevelopment()) |
| | | { |
| | |
| | | </ItemGroup> |
| | | |
| | | <ItemGroup> |
| | | <ProjectReference Include="..\WIDESEAWCS_Common\WIDESEAWCS_Common.csproj" /> |
| | | <ProjectReference Include="..\WIDESEAWCS_SystemServices\WIDESEAWCS_SystemServices.csproj" /> |
| | | <ProjectReference Include="..\WIDESEAWCs_TaskInfoService\WIDESEAWCs_TaskInfoService.csproj" /> |
| | | <ProjectReference Include="..\WIDESEAWCS_Tasks\WIDESEAWCS_Tasks.csproj" /> |
| | |
| | | //5.PostgreSQL |
| | | "DBType": "SqlServer", |
| | | //è¿æ¥å符串 |
| | | "ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWCS_MXSSG;User ID=sa;Password=123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | "ConnectionString": "Data Source=.;Initial Catalog=WIDESEAWCS_MXSSG;User ID=sa;Password=sa123456;Integrated Security=False;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False", |
| | | |
| | | |
| | | |
| | |
| | | "ExpMinutes": 120, |
| | | "QuartzJobAutoStart": true, |
| | | "LogDeubgEnable": true, //æ¯å¦è®°å½è°è¯æ¥å¿ |
| | | "PrintSql": true, //æå°SQLè¯å¥ |
| | | "PrintSql": false, //æå°SQLè¯å¥ |
| | | "LogAOPEnable": true, //æ¯å¦è®°å½AOPæ¥å¿ |
| | | "WebSocketEnable": true, |
| | | "WebSocketPort": 9260 |
| | |
| | | using Microsoft.AspNetCore.Http; |
| | | using Newtonsoft.Json; |
| | | using WIDESEAWCS_Common; |
| | | using FaceAI; |
| | | |
| | | namespace WIDESEAWCS_SystemServices |
| | | { |
| | |
| | | } |
| | | |
| | | var faceResult = BaiDuFaceHelper.FaceSearch(loginInfo.path, groupId); |
| | | |
| | | |
| | | |
| | | if (faceResult != null && faceResult.error_code == 0) |
| | | { |
| | | var bestMatch = faceResult.result.user_list.OrderByDescending(u => u.score).FirstOrDefault(); |
| | |
| | | return content; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 1:N äººè¸æç´¢æ¥å£ |
| | | /// </summary> |
| | | /// <param name="image">å¾çä¿¡æ¯(**æ»æ°æ®å¤§å°åºå°äº10M**)ï¼å¾çä¸ä¼ æ¹å¼æ ¹æ®image_typeæ¥å¤æ</param> |
| | | /// <param name="imageType">å¾çç±»å <br> **BASE64**:å¾ççbase64å¼ï¼base64ç¼ç åçå¾çæ°æ®ï¼ç¼ç åçå¾ç大å°ä¸è¶
è¿2Mï¼ <br>**URL**:å¾çç URLå°å( å¯è½ç±äºç½ç»çåå 导è´ä¸è½½å¾çæ¶é´è¿é¿)ï¼ <br>**FACE_TOKEN**: 人è¸å¾ççå¯ä¸æ è¯ï¼è°ç¨äººè¸æ£æµæ¥å£æ¶ï¼ä¼ä¸ºæ¯ä¸ªäººè¸å¾çèµäºä¸ä¸ªå¯ä¸çFACE_TOKENï¼åä¸å¼ å¾ç夿¬¡æ£æµå¾å°çFACE_TOKENæ¯åä¸ä¸ªã</param> |
| | | /// <param name="groupIdList">仿å®çgroupä¸è¿è¡æ¥æ¾ ç¨éå·åéï¼**ä¸é20个**</param> |
| | | /// </param> |
| | | /// <return>JObject</return> |
| | | /// |
| | | public string FaceSearch(string image, string imageType, string groupIdList, string userId) |
| | | { |
| | | string result = ""; |
| | | switch (imageType) |
| | | { |
| | | case "base64": |
| | | //result = FaceCompare.FaceIdentifyByBuffer(image, groupIdList, userId); |
| | | break; |
| | | case "url": |
| | | result = FaceCompare.FaceIdentify(image, groupIdList, userId); |
| | | break; |
| | | case "token": |
| | | result = FaceCompare.FaceIdentifyByFeature(image, groupIdList, userId); |
| | | break; |
| | | default: |
| | | break; |
| | | } |
| | | return result; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// éè¿ç¹å¾å¼æ¯å¯¹ï¼1:1ï¼ å¯¹äººè¸ç¹å¾å¼è¿è¡æ¯è¾ï¼å¯è¿å人è¸ç¹å¾ç¸ä¼¼åå¼ï¼ç¾åå¶ï¼ |
| | | /// </summary> |
| | | /// <param name="file1">ä¼ å¾çè·¯å¾</param> |
| | | /// <param name="file2">ä¼ å¾çè·¯å¾</param> |
| | | /// <returns></returns> |
| | | public string FaceCompareFeature(string file1, string file2) |
| | | { |
| | | try |
| | | { |
| | | string result = FaceCompare.FaceCompareFeature(file1, file2); |
| | | return result; |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | throw e; |
| | | } |
| | | } |
| | | public override WebResponseContent UpdateData(SaveModel saveModel) |
| | | { |
| | | UpdateIgnoreColOnExecute = x => |
| | |
| | | </PropertyGroup> |
| | | |
| | | <ItemGroup> |
| | | <ProjectReference Include="..\WIDESEAWCS_Common\WIDESEAWCS_Common.csproj" /> |
| | | <ProjectReference Include="..\WIDESEAWCS_ITelescopicService\WIDESEAWCS_ITelescopicService.csproj" /> |
| | | </ItemGroup> |
| | | |