海康 智能相机二开 绘制底图+测试工具应用框 - 指南

news/2025/10/29 18:08:41/文章来源:https://www.cnblogs.com/gccbuaa/p/19175085

测试型号: 智能相机 MV-SC3050XC-12M-WBN

项目下载:海康智能相机二开资源

官方的二开资源中,只显示了基础图片

在官方的基础上,增加了OK/NG的渲染,已经测试工具的区域边框显示,已经工具结果的显示

左上角 方案结果的显示 OK或NG

物料上的边框,一个是检测区域,一个是工具结果,OK-绿色边框  NG-红色边框

目录

官方流程

渲染实现

Json解析

获取数据

底图渲染


官方流程

文档中,介绍了二开的流程

1.先枚举到相机

2.登录相机,默认账号密码: Admin   Abc1234

3.设置相机属性

4.开始运行

5.循环取图

6.运行结束

枚举相机和登录这里就不多说了。官方有详细介绍

渲染实现

主要说下工具边框的渲染

Json解析

1.在取图线程中,除了返回拍照的底图外,还有测试工具结果等数据返回,Json格式的数据

第一步就是取数据出来,解析成Json数据,此处使用的JObject来做处理。

  // 获取Json数据长度Array.Copy(arrChunkData, (int)(stFrameData.nChunkDataLen - 4), arrConvertEndian, 0, 4);nChunkJsonLen = BitConverter.ToInt32(arrConvertEndian.Reverse().ToArray(), 0);// 拷贝Json数据if (arrChunkJson.Length < nChunkJsonLen){arrChunkJson = new byte[nChunkJsonLen];}Array.Copy(arrChunkData, (int)stFrameData.nChunkDataLen - 8/*4-8中间是ChunkID*/- nChunkJsonLen, arrChunkJson, 0, nChunkJsonLen);// 解析Json,更新图像方案数据var jsonObj = JObject.Parse(Encoding.UTF8.GetString(arrChunkJson, 0, nChunkJsonLen));// 方案运行结果,1-NG、0-OK,其他值直接显示strResult = jsonObj["ScDeviceSolutionRunningResult"].ToString();if ("1" == strResult){strResult = "NG";}else if ("0" == strResult){strResult = "OK";}var CurrentData = jsonObj["CurrentData"] as JArray;

解析好后,你就能得到一个Json的对象,可以ToString() 出来,拷贝到文本中查看

文档中有对Json字段的解析,但不是全部,自己对字段名称琢磨琢磨也基本能知道对应啥意思

{"ScDeviceSolutionRunningTime": 3245,"ScDeviceCurrentSolutionName": "识别有无项目","ScDeviceSolutionTotalNumber": 2,"ScDeviceSolutionNgNumber": 1,"ScDeviceSolutionRunningResult": 1,"ScDeviceSolutionProcessTime": 239,"FlowId": 30,"CurrentData": [{"nStatus": 1,"nModuleID": 6,"ModuleName": "colorarea","DisplayName": "colorarea","fModuleTime": 51,"fAlgorithmTime": 21,"ModuleResultDrawEnable": 0,"pInfo": [{"nValueStatus": 1,"strParamName": "SINGLE_status","strResultTypeName": "SINGLE_status","strEnName": "status","nParamType": 1,"pIntValue": [1],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_param_status","strResultTypeName": "SINGLE_param_status","strEnName": "param_status","nParamType": 1,"pIntValue": [0],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_param_status_string","strResultTypeName": "SINGLE_param_status_string","strEnName": "param_status_string","nParamType": 3,"pStringValue": [{"nLen": 2,"strValue": "NG"}],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "BOX_det_box_cx","strResultTypeName": "BOX_det_box_cx","strEnName": "det_box_cx","nParamType": 2,"pFloatValue": [1170.0799561],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "BOX_det_box_cy","strResultTypeName": "BOX_det_box_cy","strEnName": "det_box_cy","nParamType": 2,"pFloatValue": [1289.8068848],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "BOX_det_box_w","strResultTypeName": "BOX_det_box_w","strEnName": "det_box_w","nParamType": 2,"pFloatValue": [252.4647064],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "BOX_det_box_h","strResultTypeName": "BOX_det_box_h","strEnName": "det_box_h","nParamType": 2,"pFloatValue": [217.52771],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "BOX_det_box_ang","strResultTypeName": "BOX_det_box_ang","strEnName": "det_box_ang","nParamType": 2,"pFloatValue": [94.8396912],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "RAWIMAGE_bin_draw_raw_img","strResultTypeName": "RAWIMAGE_bin_draw_raw_img","strEnName": "bin_draw_raw_img","nParamType": 3,"pStringValue": [{"nLen": 20,"strValue": "0x7ed3d92320_4980736"}],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_total_area","strResultTypeName": "SINGLE_total_area","strEnName": "total_area","nParamType": 1,"pIntValue": [0],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_rst_module_type","strResultTypeName": "SINGLE_rst_module_type","strEnName": "rst_module_type","nParamType": 1,"pIntValue": [4],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_rst_measure","strResultTypeName": "SINGLE_rst_measure","strEnName": "rst_measure","nParamType": 2,"pFloatValue": [0],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_rst_measure_limit_l","strResultTypeName": "SINGLE_rst_measure_limit_l","strEnName": "rst_measure_limit_l","nParamType": 2,"pFloatValue": [100],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_rst_measure_limit_h","strResultTypeName": "SINGLE_rst_measure_limit_h","strEnName": "rst_measure_limit_h","nParamType": 2,"pFloatValue": [10000000],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_rst_group_num","strResultTypeName": "SINGLE_rst_group_num","strEnName": "rst_group_num","nParamType": 1,"pIntValue": [51],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_rst_group_value_x","strResultTypeName": "SINGLE_rst_group_value_x","strEnName": "rst_group_value_x","nParamType": 1,"pIntValue": [100,196176,392252,588329,784405,980482,1176558,1372635,1568711,1764788,1960864,2156941,2353017,2549094,2745170,2941247,3137323,3333400,3529476,3725553,3921629,4117705,4313782,4509859,4705935,4902011,5098088,5294164,5490241,5686317,5882394,6078470,6274547,6470623,6666700,6862776,7058853,7254929,7451006,7647082,7843159,8039235,8235311,8431388,8627465,8823541,9019618,9215694,9411770,9607847,10000000],"nValueNum": 51},{"nValueStatus": 1,"strParamName": "SINGLE_rst_group_value_y","strResultTypeName": "SINGLE_rst_group_value_y","strEnName": "rst_group_value_y","nParamType": 1,"pIntValue": [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"nValueNum": 51},{"nValueStatus": 1,"strParamName": "SINGLE_show_text_x","strResultTypeName": "SINGLE_show_text_x","strEnName": "show_text_x","nParamType": 2,"pFloatValue": [1170.0799561],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_show_text_y","strResultTypeName": "SINGLE_show_text_y","strEnName": "show_text_y","nParamType": 2,"pFloatValue": [1289.8100586],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_show_text_ang","strResultTypeName": "SINGLE_show_text_ang","strEnName": "show_text_ang","nParamType": 2,"pFloatValue": [94.8399963],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_rst_ok_num","strResultTypeName": "SINGLE_rst_ok_num","strEnName": "rst_ok_num","nParamType": 1,"pIntValue": [0],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_rst_ng_num","strResultTypeName": "SINGLE_rst_ng_num","strEnName": "rst_ng_num","nParamType": 1,"pIntValue": [1],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_rst_string_cn","strResultTypeName": "SINGLE_rst_string_cn","strEnName": "rst_string_cn","nParamType": 3,"pStringValue": [{"nLen": 27,"strValue": "OK范围:100.00-10000000.00"}],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_rst_string_en","strResultTypeName": "SINGLE_rst_string_en","strEnName": "rst_string_en","nParamType": 3,"pStringValue": [{"nLen": 27,"strValue": "OK Range:100.00-10000000.00"}],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_rst_string_x","strResultTypeName": "SINGLE_rst_string_x","strEnName": "rst_string_x","nParamType": 2,"pFloatValue": [0],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_rst_string_y","strResultTypeName": "SINGLE_rst_string_y","strEnName": "rst_string_y","nParamType": 2,"pFloatValue": [0],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_rst_string_ang","strResultTypeName": "SINGLE_rst_string_ang","strEnName": "rst_string_ang","nParamType": 2,"pFloatValue": [0],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_point_type","strResultTypeName": "SINGLE_point_type","strEnName": "point_type","nParamType": 1,"pIntValue": [1],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "FIXTURE_algo_used_init_point_x","strResultTypeName": "FIXTURE_algo_used_init_point_x","strEnName": "algo_used_init_point_x","nParamType": 2,"pFloatValue": []},{"nValueStatus": 1,"strParamName": "FIXTURE_algo_used_init_point_y","strResultTypeName": "FIXTURE_algo_used_init_point_y","strEnName": "algo_used_init_point_y","nParamType": 2,"pFloatValue": []},{"nValueStatus": 1,"strParamName": "FIXTURE_algo_used_init_angle","strResultTypeName": "FIXTURE_algo_used_init_angle","strEnName": "algo_used_init_angle","nParamType": 2,"pFloatValue": []},{"nValueStatus": 1,"strParamName": "FIXTURE_algo_used_run_point_x","strResultTypeName": "FIXTURE_algo_used_run_point_x","strEnName": "algo_used_run_point_x","nParamType": 2,"pFloatValue": [1182.5545654],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "FIXTURE_algo_used_run_point_y","strResultTypeName": "FIXTURE_algo_used_run_point_y","strEnName": "algo_used_run_point_y","nParamType": 2,"pFloatValue": [1018.5428467],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "FIXTURE_algo_used_run_angle","strResultTypeName": "FIXTURE_algo_used_run_angle","strEnName": "algo_used_run_angle","nParamType": 2,"pFloatValue": [94.8182526],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_speckle_num","strResultTypeName": "SINGLE_speckle_num","strEnName": "speckle_num","nParamType": 1,"pIntValue": [0],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "POINT_centroid_x","strResultTypeName": "POINT_centroid_x","strEnName": "centroid_x","nParamType": 2,"pFloatValue": [],"nValueNum": 0},{"nValueStatus": 1,"strParamName": "POINT_centroid_y","strResultTypeName": "POINT_centroid_y","strEnName": "centroid_y","nParamType": 2,"pFloatValue": [],"nValueNum": 0},{"nValueStatus": 1,"strParamName": "SINGLE_area","strResultTypeName": "SINGLE_area","strEnName": "area","nParamType": 2,"pFloatValue": [],"nValueNum": 0},{"nValueStatus": 1,"strParamName": "SINGLE_perimeter","strResultTypeName": "SINGLE_perimeter","strEnName": "perimeter","nParamType": 2,"pFloatValue": [],"nValueNum": 0},{"nValueStatus": 1,"strParamName": "BOX1_blob_box_cx","strResultTypeName": "BOX1_blob_box_cx","strEnName": "blob_box_cx","nParamType": 2,"pFloatValue": [],"nValueNum": 0},{"nValueStatus": 1,"strParamName": "BOX1_blob_box_cy","strResultTypeName": "BOX1_blob_box_cy","strEnName": "blob_box_cy","nParamType": 2,"pFloatValue": [],"nValueNum": 0},{"nValueStatus": 1,"strParamName": "BOX1_blob_box_w","strResultTypeName": "BOX1_blob_box_w","strEnName": "blob_box_w","nParamType": 2,"pFloatValue": [],"nValueNum": 0},{"nValueStatus": 1,"strParamName": "BOX1_blob_box_h","strResultTypeName": "BOX1_blob_box_h","strEnName": "blob_box_h","nParamType": 2,"pFloatValue": [],"nValueNum": 0},{"nValueStatus": 1,"strParamName": "BOX1_blob_box_ang","strResultTypeName": "BOX1_blob_box_ang","strEnName": "blob_box_ang","nParamType": 2,"pFloatValue": [],"nValueNum": 0},{"nValueStatus": 1,"strParamName": "SINGLE_blob_total_area","strResultTypeName": "SINGLE_blob_total_area","strEnName": "blob_total_area","nParamType": 1,"pIntValue": [0],"nValueNum": 1}],"nResultNum": 45},{"nStatus": 1,"nModuleID": 7,"ModuleName": "colorarea","DisplayName": "colorarea","fModuleTime": 72,"fAlgorithmTime": 21,"ModuleResultDrawEnable": 0,"pInfo": [{"nValueStatus": 1,"strParamName": "SINGLE_status","strResultTypeName": "SINGLE_status","strEnName": "status","nParamType": 1,"pIntValue": [1],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_param_status","strResultTypeName": "SINGLE_param_status","strEnName": "param_status","nParamType": 1,"pIntValue": [1],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_param_status_string","strResultTypeName": "SINGLE_param_status_string","strEnName": "param_status_string","nParamType": 3,"pStringValue": [{"nLen": 2,"strValue": "OK"}],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "BOX_det_box_cx","strResultTypeName": "BOX_det_box_cx","strEnName": "det_box_cx","nParamType": 2,"pFloatValue": [1267.1917725],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "BOX_det_box_cy","strResultTypeName": "BOX_det_box_cy","strEnName": "det_box_cy","nParamType": 2,"pFloatValue": [968.9454346],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "BOX_det_box_w","strResultTypeName": "BOX_det_box_w","strEnName": "det_box_w","nParamType": 2,"pFloatValue": [370.5904236],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "BOX_det_box_h","strResultTypeName": "BOX_det_box_h","strEnName": "det_box_h","nParamType": 2,"pFloatValue": [64.7955475],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "BOX_det_box_ang","strResultTypeName": "BOX_det_box_ang","strEnName": "det_box_ang","nParamType": 2,"pFloatValue": [94.8396912],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "RAWIMAGE_bin_draw_raw_img","strResultTypeName": "RAWIMAGE_bin_draw_raw_img","strEnName": "bin_draw_raw_img","nParamType": 3,"pStringValue": [{"nLen": 20,"strValue": "0x7edb966a20_4980736"}],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_total_area","strResultTypeName": "SINGLE_total_area","strEnName": "total_area","nParamType": 1,"pIntValue": [117],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_rst_module_type","strResultTypeName": "SINGLE_rst_module_type","strEnName": "rst_module_type","nParamType": 1,"pIntValue": [4],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_rst_measure","strResultTypeName": "SINGLE_rst_measure","strEnName": "rst_measure","nParamType": 2,"pFloatValue": [64],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_rst_measure_limit_l","strResultTypeName": "SINGLE_rst_measure_limit_l","strEnName": "rst_measure_limit_l","nParamType": 2,"pFloatValue": [10],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_rst_measure_limit_h","strResultTypeName": "SINGLE_rst_measure_limit_h","strEnName": "rst_measure_limit_h","nParamType": 2,"pFloatValue": [10000000],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_rst_group_num","strResultTypeName": "SINGLE_rst_group_num","strEnName": "rst_group_num","nParamType": 1,"pIntValue": [51],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_rst_group_value_x","strResultTypeName": "SINGLE_rst_group_value_x","strEnName": "rst_group_value_x","nParamType": 1,"pIntValue": [10,196088,392166,588244,784322,980401,1176479,1372557,1568635,1764714,1960792,2156870,2352948,2549027,2745105,2941183,3137261,3333340,3529418,3725496,3921574,4117653,4313731,4509809,4705887,4901966,5098044,5294122,5490200,5686279,5882357,6078435,6274513,6470591,6666670,6862748,7058826,7254904,7450983,7647061,7843139,8039217,8235296,8431374,8627452,8823531,9019609,9215687,9411765,9607843,10000000],"nValueNum": 51},{"nValueStatus": 1,"strParamName": "SINGLE_rst_group_value_y","strResultTypeName": "SINGLE_rst_group_value_y","strEnName": "rst_group_value_y","nParamType": 1,"pIntValue": [1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"nValueNum": 51},{"nValueStatus": 1,"strParamName": "SINGLE_show_text_x","strResultTypeName": "SINGLE_show_text_x","strEnName": "show_text_x","nParamType": 2,"pFloatValue": [1267.1899414],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_show_text_y","strResultTypeName": "SINGLE_show_text_y","strEnName": "show_text_y","nParamType": 2,"pFloatValue": [968.9500122],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_show_text_ang","strResultTypeName": "SINGLE_show_text_ang","strEnName": "show_text_ang","nParamType": 2,"pFloatValue": [94.8399963],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_rst_ok_num","strResultTypeName": "SINGLE_rst_ok_num","strEnName": "rst_ok_num","nParamType": 1,"pIntValue": [1],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_rst_ng_num","strResultTypeName": "SINGLE_rst_ng_num","strEnName": "rst_ng_num","nParamType": 1,"pIntValue": [0],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_rst_string_cn","strResultTypeName": "SINGLE_rst_string_cn","strEnName": "rst_string_cn","nParamType": 3,"pStringValue": [{"nLen": 26,"strValue": "OK范围:10.00-10000000.00"}],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_rst_string_en","strResultTypeName": "SINGLE_rst_string_en","strEnName": "rst_string_en","nParamType": 3,"pStringValue": [{"nLen": 26,"strValue": "OK Range:10.00-10000000.00"}],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_rst_string_x","strResultTypeName": "SINGLE_rst_string_x","strEnName": "rst_string_x","nParamType": 2,"pFloatValue": [0],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_rst_string_y","strResultTypeName": "SINGLE_rst_string_y","strEnName": "rst_string_y","nParamType": 2,"pFloatValue": [0],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_rst_string_ang","strResultTypeName": "SINGLE_rst_string_ang","strEnName": "rst_string_ang","nParamType": 2,"pFloatValue": [0],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_point_type","strResultTypeName": "SINGLE_point_type","strEnName": "point_type","nParamType": 1,"pIntValue": [1],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "FIXTURE_algo_used_init_point_x","strResultTypeName": "FIXTURE_algo_used_init_point_x","strEnName": "algo_used_init_point_x","nParamType": 2,"pFloatValue": []},{"nValueStatus": 1,"strParamName": "FIXTURE_algo_used_init_point_y","strResultTypeName": "FIXTURE_algo_used_init_point_y","strEnName": "algo_used_init_point_y","nParamType": 2,"pFloatValue": []},{"nValueStatus": 1,"strParamName": "FIXTURE_algo_used_init_angle","strResultTypeName": "FIXTURE_algo_used_init_angle","strEnName": "algo_used_init_angle","nParamType": 2,"pFloatValue": []},{"nValueStatus": 1,"strParamName": "FIXTURE_algo_used_run_point_x","strResultTypeName": "FIXTURE_algo_used_run_point_x","strEnName": "algo_used_run_point_x","nParamType": 2,"pFloatValue": [1182.5545654],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "FIXTURE_algo_used_run_point_y","strResultTypeName": "FIXTURE_algo_used_run_point_y","strEnName": "algo_used_run_point_y","nParamType": 2,"pFloatValue": [1018.5428467],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "FIXTURE_algo_used_run_angle","strResultTypeName": "FIXTURE_algo_used_run_angle","strEnName": "algo_used_run_angle","nParamType": 2,"pFloatValue": [94.8182526],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_speckle_num","strResultTypeName": "SINGLE_speckle_num","strEnName": "speckle_num","nParamType": 1,"pIntValue": [10],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "POINT_centroid_x","strResultTypeName": "POINT_centroid_x","strEnName": "centroid_x","nParamType": 2,"pFloatValue": [1244.8529053,1287.166626,1253,1281.5,1244.9000244,1285.3000488,1295,1245,1241,1280.5],"nValueNum": 10},{"nValueStatus": 1,"strParamName": "POINT_centroid_y","strResultTypeName": "POINT_centroid_y","strEnName": "centroid_y","nParamType": 2,"pFloatValue": [1089.6176758,1053.277832,1015.5,1119,1057.3000488,1068.5,991,1101,1121,1143.25],"nValueNum": 10},{"nValueStatus": 1,"strParamName": "SINGLE_area","strResultTypeName": "SINGLE_area","strEnName": "area","nParamType": 2,"pFloatValue": [17.0000019,9.000001,6.0000005,6.0000005,5.0000005,5.0000005,4,4,4,4],"nValueNum": 10},{"nValueStatus": 1,"strParamName": "SINGLE_perimeter","strResultTypeName": "SINGLE_perimeter","strEnName": "perimeter","nParamType": 2,"pFloatValue": [21.8994942,12.2426405,6,10,5.4142137,8.8284273,4,4,4,4.8284273],"nValueNum": 10},{"nValueStatus": 1,"strParamName": "BOX1_blob_box_cx","strResultTypeName": "BOX1_blob_box_cx","strEnName": "blob_box_cx","nParamType": 2,"pFloatValue": [1243.6500244,1286.4230957,1252.5,1281,1244.5,1284.8529053,1294.5,1244.5,1240.5,1280],"nValueNum": 10},{"nValueStatus": 1,"strParamName": "BOX1_blob_box_cy","strResultTypeName": "BOX1_blob_box_cy","strEnName": "blob_box_cy","nParamType": 2,"pFloatValue": [1089.0500488,1052.8846436,1015,1118.5,1057,1068.0882568,990.5,1100.5,1120.5,1143],"nValueNum": 10},{"nValueStatus": 1,"strParamName": "BOX1_blob_box_w","strResultTypeName": "BOX1_blob_box_w","strEnName": "blob_box_w","nParamType": 2,"pFloatValue": [9.2219219,5.7149515,3,6,3,5.123106,2,2,2,2.4142137],"nValueNum": 10},{"nValueStatus": 1,"strParamName": "BOX1_blob_box_h","strResultTypeName": "BOX1_blob_box_h","strEnName": "blob_box_h","nParamType": 2,"pFloatValue": [3.8460503,2.9414511,2,1,2,1.7276068,2,2,2,2.4142137],"nValueNum": 10},{"nValueStatus": 1,"strParamName": "BOX1_blob_box_ang","strResultTypeName": "BOX1_blob_box_ang","strEnName": "blob_box_ang","nParamType": 2,"pFloatValue": [18.434948,-33.6900673,90,90,90,-75.9637604,90,90,90,45],"nValueNum": 10},{"nValueStatus": 1,"strParamName": "SINGLE_blob_total_area","strResultTypeName": "SINGLE_blob_total_area","strEnName": "blob_total_area","nParamType": 1,"pIntValue": [64],"nValueNum": 1}],"nResultNum": 45},{"nStatus": 1,"nModuleID": 100,"ModuleName": "tcpstrans","DisplayName": "tcpstrans","fModuleTime": 0,"fAlgorithmTime": 0,"ModuleResultDrawEnable": 0,"pInfo": [{"nValueStatus": 1,"strParamName": "SINGLE_status","strResultTypeName": "SINGLE_status","strEnName": "status","nParamType": 1,"pIntValue": [1],"nValueNum": 1},{"nValueStatus": 1,"strParamName": "SINGLE_obj_string","strResultTypeName": "SINGLE_obj_string","strEnName": "obj_string","nParamType": 3,"pStringValue": []},{"nValueStatus": 1,"strParamName": "SINGLE_param_status","strResultTypeName": "SINGLE_param_status","strEnName": "param_status","nParamType": 1,"pIntValue": [1],"nValueNum": 1}],"nResultNum": 3}]
}

获取数据

数据都在CurrentData里边,渲染的数据都在 "ModuleName": "colorarea" 里边

底图渲染

包括矩形的中心,宽高,角度等

1.循环将colorarea取出,放到列表中

  var modules =new List();foreach(var C_data in CurrentData){if (C_data["ModuleName"].ToString() == "colorarea"){modules.Add(C_data);}}

2.将中心,宽高,角度已经工具测试结果取出

 List> rectangles = new List>();for (int i=0;i< modules.Count();i++){var module =modules[i];var pInfo = module["pInfo"];var BOX_det_box_cx = pInfo.First(x => x["strParamName"].ToString() == "BOX_det_box_cx");var BOX_det_box_cy = pInfo.First(x => x["strParamName"].ToString() == "BOX_det_box_cy");var BOX_det_box_w = pInfo.First(x => x["strParamName"].ToString() == "BOX_det_box_w");var BOX_det_box_h = pInfo.First(x => x["strParamName"].ToString() == "BOX_det_box_h");var BOX_det_box_ang = pInfo.First(x => x["strParamName"].ToString() == "BOX_det_box_ang");var cx = Convert.ToSingle(BOX_det_box_cx["pFloatValue"][0]);var cy = Convert.ToSingle(BOX_det_box_cy["pFloatValue"][0]);var w = Convert.ToSingle(BOX_det_box_w["pFloatValue"][0]);var h = Convert.ToSingle(BOX_det_box_h["pFloatValue"][0]);var ang = Convert.ToSingle(BOX_det_box_ang["pFloatValue"][0]);Rectangle rectangle = new Rectangle();rectangle.X = (int)cx- (int)(w/2.0f);rectangle.Y = (int)cy- (int)(h/2.0f);rectangle.Width = (int)w;rectangle.Height = (int)h;rectangles.Add(new Tuple(rectangle,ang));}

3.最后对基础图片进行渲染

       var baseData = arrImageData;byte[] modifiedData; // 用于接收处理后的数据using (MemoryStream ms = new MemoryStream(baseData)){using (System.Drawing.Image baseImage = System.Drawing.Image.FromStream(ms)){using (Graphics g = Graphics.FromImage(baseImage)){// 设置高质量绘制模式g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;Pen pen = new Pen(Brushes.Green,2);foreach(var rectangle in rectangles){var rect = rectangle.Item1;PointF center = new PointF(rect.X + rect.Width / 2, rect.Y + rect.Height / 2);// 创建一个新的变换矩阵Matrix matrix = new Matrix();// 设置变换:先平移至中心,然后旋转,最后平移回来matrix.Translate(center.X, center.Y);matrix.Rotate(rectangle.Item2);matrix.Translate(-center.X, -center.Y);// 将矩阵设置为 graphics 的当前变换g.Transform = matrix;// 绘制矩形g.DrawRectangle(pen, rect.X, rect.Y, rect.Width, rect.Height);// 重置变换(或者使用 g.ResetTransform())g.Transform = new Matrix();}//绘制OK NG// 定义矩形参数int rectX = 0; // 左上角X坐标int rectY = 0; // 左上角Y坐标int rectWidth = 150;int rectHeight = 100;// 创建绿色画刷用于填充矩形Brush TextPen = new SolidBrush(Color.Green);if (strResult == "NG"){TextPen = new SolidBrush(Color.Red);}// 绘制矩形g.FillRectangle(TextPen, 0,0, rectWidth, rectHeight);// 设置文本显示string displayText = strResult;Font font = new Font("Arial", 20, FontStyle.Bold);using (Brush textBrush = new SolidBrush(Color.White)){// 测量文本尺寸以计算居中位置SizeF textSize = g.MeasureString(strResult, font);// 计算文本在矩形中的居中位置float textX = rectX + (rectWidth - textSize.Width) / 2;float textY = rectY + (rectHeight - textSize.Height) / 2;// 绘制文本g.DrawString(strResult, font, textBrush, textX, textY);}}// 关键步骤:将修改后的图像保存到新的 MemoryStream,以转换为 byte[]using (MemoryStream msOut = new MemoryStream()){// 保存为PNG格式,避免压缩损失。也可根据需要选择Jpeg等格式baseImage.Save(msOut, System.Drawing.Imaging.ImageFormat.Jpeg);modifiedData = msOut.ToArray(); // 获取新字节数组}}}// 显示图像DisplayImage(ref stFrameData, ref modifiedData);

4.最后将渲染好的图片,返回到你想要显示的控件中

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/950139.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年10月反应釜厂家/反应釜工厂排行榜:江苏永润反应釜荣获第一

2025年10月反应釜厂家/反应釜工厂排行榜:江苏永润反应釜荣获第一一 摘要 反应釜行业在化工、石油、医药等领域持续增长,2025年预计全球市场规模将达到XX亿美元(数据来源:行业报告),驱动因素包括技术创新和环保要…

2025年10月国内锅炉工厂/厂家top10排名与工业应用深度解析

摘要 锅炉行业作为工业生产的核心组成部分,在化工、石油、能源等领域持续发展,2025年预计全球市场规模将增长至数百亿美元,驱动因素包括环保政策升级和能效需求提升。本文基于用户搜索数据和行业调研,整理了口碑好…

EMC of SMPS 开关电源EMC基础

EMC of SMPS 开关电源EMC基础2025-10-29 17:59 斑鸠,一生。 阅读(0) 评论(0) 收藏 举报

备战2025执业兽医资格证培训机构:执业兽医考试网课培训机构/执业兽医考试面授优质培训机构推荐榜出炉,助力考生高效通关

随着我国畜牧业规模化发展、宠物医疗行业持续升温,执业兽医资格证已成为从业者必备的“敲门砖”,其含金量与行业重要性日益凸显。2025年,预计考生规模将进一步扩大,考试竞争愈发激烈。然而,市场上培训机构繁多,课…

2025年锅炉厂家/工厂排名前十:江苏永润锅炉领跑行业

2025年锅炉厂家/工厂排名前十:江苏永润锅炉领跑行业摘要 锅炉行业作为工业生产的核心组成部分,近年来随着环保政策和能效要求的提升,持续向高效、智能、绿色方向发展。2025年,锅炉品牌竞争加剧,用户更关注可靠性、…

Salesforce从业者,下一个10年,你该怎么走?

过去十年,Salesforce生态经历了从高速增长到逐渐成熟的过程。 很多有多年经验的从业者开始感到焦虑:薪资不再像疫情期间那样疯涨,市场竞争变得更激烈,新技术层出不穷。 但这并不是“天花板”,而是一个分水岭。 那…

2025第二届模式识别与图像分析国际学术会议(PRIA 2025)

2025第二届模式识别与图像分析国际学术会议(PRIA 2025) 2025 2nd International Conference on Pattern Recognition and Image Analysis 在这里看会议官网详情 2025年12月26-28日 河南郑州 截稿日期:见官网 征稿主…

2025年闭式冷却塔生产厂家权威推荐榜单:不锈钢冷却塔/循环水冷却塔/工业冷却塔源头厂家精选

在工业制造与商业设施领域,闭式冷却塔作为实现高效热交换的核心设备,其性能直接关系到生产系统的稳定性与运营成本。随着“双碳”战略的深化,市场对闭式冷却塔在节能、节水及环保表现方面提出了更高要求。行业数据显…

093_尚硅谷_for循环注意事项和细节(2)

093_尚硅谷_for循环注意事项和细节(2)1.传统方式遍历字符串,不能含中文 2.for-----range 方式遍历, 可以含中文 3.传统方式遍历中文字符串不显示的原因 4.传统方式遍历中文字符串不显示的解决方案

45岁helloworld!

HelloWorld随便新建一个文件夹,存放代码新建一个java文件文件后缀名为.java hello.java编写代码 public class Hello{public static void main(String[] args){System.out.print("Hello,World!");} };编译 …

ogg升级部署

1.停掉原来的ogg这个过程模拟不停地写入数据源端GGSCI (rac01) 10> stop extepGGSCI (rac01) 13> stop dpepGGSCI (rac01) 15> stop mgr目的端查看已经消费完停掉之前的trail文件后再停掉,可以查看具体的表是…

uniapp开发app打包ios上传AppStore提示SDK版本不兼容

场景: uniapp项目使用HBuilder打ios安装包上架到苹果应用商店AppStore时报错 Validation failed (409) SDK version issue. This app was built with the iOS 17.5 SDK. All iOS and iPadOS apps must be built with …

add_io_buffer——路径

define_proc_arguments add_io_buffer -info "Add repeater for IOs" -define_args { {-insts "Target IO insts" "insts" list required} {-BOX "to core area, last location i…

Stable Diffusion v4.8 超详细下载安装教程:新手零基础学会 AI 绘画工具安装

目录Stable Diffusion安装前言Stable Diffusion 软件介绍Stable Diffusion 下载方式Stable Diffusion 安装步骤步骤 1:解压 Stable Diffusion v4.8 安装包步骤 2:安装 Stable Diffusion 运行依赖步骤 3:移动 Stable…

add_ip_buffer——路径

define_proc_arguments add_ip_buffer -info "Add repeater for IPs" -define_args { {-insts "Target IP insts" "insts" list required} {-BOX "to core area, last location i…

nginx响应超时upstream timed out (110: Connection timed out) while reading response header from upstream

本文介绍了解决Nginx代理超时的问题及优化网络吞吐量的方法。通过调整配置如proxy_connect_timeout、proxy_read_timeout等参数,可以有效提升Nginx性能。 问题描述解决方法 提高nginx网络吞吐量buffers优化指令说明 n…

2025年碳化铬堆焊耐磨板厂家最新推荐:堆焊耐磨板/碳化铬耐磨板/定制耐磨板/复合耐磨板/高硬度耐磨板/耐冲击耐磨板/汇森增材——耐用性与定制化双优之选

随着制造业向高端化、精细化发展,耐磨板作为关键耗材,广泛应用于矿山、冶金、建材、工程机械等领域,其需求随设备耐磨升级、生产强度提升而持续增长。2025 年,耐磨板市场规模预计进一步扩大,但市场中厂商产品质量…

抖音防封搭建方案,青否数字人提供全套的防封方案,能够进行稳定直播带货!

抖音:强调节奏、互动与内容创意 抖音以其快节奏、娱乐化的内容生态著称。在规则上,抖音对直播内容的创新性和趣味性要求极高,鼓励数字人主播在短时间内抓住观众眼球。直播画面需清晰流畅,数字人动作表情要自然生动…

2025年河北电信业务增值许可证培训权威推荐榜单:增值电信经营许可证/电信与信息服务业务经营许可证/电信业务许可证源头公司精选

在数字化经济蓬勃发展的今天,增值电信业务许可证已成为企业合法经营相关业务的必备资质,而专业的培训服务正成为企业高效获证的关键支撑。 据河北省通信管理局官方数据统计,2025年7月至9月期间,河北省新发放的增值…

docker-compose常用命令

启动服务 docker-compose -f ***.yaml up -d-d参数表示后台启动docker-compose -f ***.yaml up -d app1 app2启动指定服务app1 app2停止服务 docker-compose -f ***.yaml down停止所有服务docker-compose -f ***.yaml …