// 删除 部分轨迹
void MainWindow::on_draw_re_guiji_clicked() {// 当有删除轨迹点的时候,显示轨迹点的时候,不能把删除的点显示出来,特别是缩放拖动图像的时候 , 0可以,1不可以m_tmp_flg->insert("delede_guiji_flag", 0);// 允许显示最终的轨迹m_tmp_flg->insert("watch_guiji", 0);HObject ho_CrossS, ho_Cross1;HObject ho_Cross2;HObject* ho_ImageScaled2 = new HObject;// Local control variablesHTuple hv_Width1, hv_Height1, draw_guiji_imgeName;HTuple hv_RowS_zuo, hv_ColumnS_zuo, hv_row_tup, hv_col_tup;HTuple hv_Length, hv_I, hv_Row11, hv_Column11, hv_Row21, hv_adsd, hv_adsdAA;HTuple hv_Column21, hv_num_tup, hv_start_s, hv_end_s, hv_CircleRow;HTuple hv_CircleColumn, hv_RoiPram1, hv_Row4, hv_Column4;HTuple hv_cha, hv_rs_start, hv_cs_start, hv_Length6, hv_Length7;HTuple hv_rs_end, hv_cs_end, hv_Length8, hv_row_ValueA;HTuple hv_row_ValueAB, hv_Length10, hv_Length11, hv_col_ValueA;HTuple hv_col_ValueAB, hv_Length12, hv_Length13;try {// Rgb1ToGray(ho_Image, &ho_GrayImage);QMessageBox::information(this, QString::fromLocal8Bit("info"), QStringLiteral("one"));DrawRectangle1(WindowHandle2d, &hv_Row11, &hv_Column11, &hv_Row21, &hv_Column21);cout << "hv_Row11" << hv_Row11.D();cout << "hv_Column11" << hv_Column11.D();cout << "hv_Row21" << hv_Row21.D();cout << "hv_Column21" << hv_Column21.D();//  GenRectangle1(&ho_Rectangle, hv_Row1, hv_Column1, hv_Row2, hv_Column2);HTuple ModelObjectFile, row_FileName, col_FileName, moudel_num1, RowS, ColumnS;HObject ho_Cross1_zuo;// 发动机型号int moudel_num = ui->num_fadongji->value();moudel_num1 = moudel_num;cout << "moudel_num" << moudel_num;ModelObjectFile = "./data/model/model" + moudel_num1;// 页面展示的图像draw_guiji_imgeName = ModelObjectFile + "/draw_guiji.bmp";ReadImage(ho_ImageScaled2, draw_guiji_imgeName);m_hobj->insert("show_ui_image", ho_ImageScaled2);// 这里要判断 有多少个文件夹的名字以 Draw_guiji 开头的// 判断有几段轨迹int gui_num = num_dir(moudel_num);cout << "model" << moudel_num << "guiji duan num = " << gui_num;for (int I = 1; I <= gui_num; I++) {row_FileName = ModelObjectFile + "/Draw_guiji" + I + "/x_draw.tup";col_FileName = ModelObjectFile + "/Draw_guiji" + I + "/y_draw.tup";// 画的轨迹ReadTuple(row_FileName, &hv_RowS_zuo);ReadTuple(col_FileName, &hv_ColumnS_zuo);// ************************ 开始替换 轨迹点hv_row_tup = hv_RowS_zuo;hv_col_tup = hv_ColumnS_zuo;// 写入临时文件GenEmptyObj(&ho_CrossS);TupleLength(hv_ColumnS_zuo, &hv_Length);cout << "123";hv_adsd = 0;//* 记录需要去除掉的元素的索引hv_num_tup = HTuple();{HTuple end_val32 = (hv_RowS_zuo.TupleLength()) - 1;HTuple step_val32 = 1;for (hv_I = 0; hv_I.Continue(end_val32, step_val32); hv_I += step_val32) {if (0 != (hv_I < (hv_RowS_zuo.TupleLength()))) {if (0 != (HTuple(hv_Row11 <= HTuple(hv_RowS_zuo[hv_I])).TupleAnd(HTuple(hv_RowS_zuo[hv_I]) <= hv_Row21))) {if (0 != (HTuple(hv_Column11 <= HTuple(hv_ColumnS_zuo[hv_I])).TupleAnd(HTuple(hv_ColumnS_zuo[hv_I]) <= hv_Column21))) {hv_adsd += 1;hv_num_tup = hv_num_tup.TupleConcat(hv_I);// tuple_remove (RowS_zuo, I, RowS_zuo)// tuple_remove (ColumnS_zuo, I, ColumnS_zuo)}}}}}//   m_tmp->insert()cout << "hv_adsd" << hv_adsd.D();int de_num = (int)hv_adsd.D();if (de_num >= 1) {QString guijiduan = "gui_ji_";// 记录是哪段轨迹 被修改了m_tmp->insert("delete_gui_ji_num", QString::number(I));qDebug() << "delete_gui_ji_num" << I;// 需要替换点 的 起始 和结束的 索引hv_start_s = ((const HTuple&)hv_num_tup)[0];cout << "hv_start_s" << hv_start_s.D();hv_end_s = ((const HTuple&)hv_num_tup)[(hv_num_tup.TupleLength()) - 1];cout << "hv_end_s" << hv_end_s.D();m_tmp_flg->insert("delede_guiji_start", (int)hv_start_s.D());m_tmp_flg->insert("delede_guiji_end", (int)hv_end_s.D());}}  // 循环遍历 删除 轨迹截止ClearWindow(WindowHandle2d);DispObj((*ho_ImageScaled2), WindowHandle2d);SetColor(WindowHandle2d, "green");SetLineWidth(WindowHandle2d, 1);// 记录是哪段轨迹 被修改了int guiji_num = m_tmp->value("delete_gui_ji_num").toInt();// 循环遍历 显示没有被删除的轨迹for (int I = 1; I <= gui_num; I++) {row_FileName = ModelObjectFile + "/Draw_guiji" + I + "/x_draw.tup";col_FileName = ModelObjectFile + "/Draw_guiji" + I + "/y_draw.tup";// 画的轨迹ReadTuple(row_FileName, &hv_RowS_zuo);ReadTuple(col_FileName, &hv_ColumnS_zuo);// 展示没有被选中的点hv_adsd = 0;GenEmptyObj(&ho_CrossS);{HTuple end_val55 = (hv_RowS_zuo.TupleLength()) - 1;HTuple step_val55 = 1;for (hv_I = 0; hv_I.Continue(end_val55, step_val55); hv_I += step_val55) {if (I == guiji_num) {// 如果 是被删除的轨迹段,那么就不能显示被删除的部分if (0 != (HTuple(hv_start_s <= hv_I).TupleAnd(hv_I <= hv_end_s))) {continue;} else {hv_adsd += 1;GenCrossContourXld(&ho_Cross2, HTuple(hv_RowS_zuo[hv_I]), HTuple(hv_ColumnS_zuo[hv_I]), 10,0.785398);ConcatObj(ho_CrossS, ho_Cross2, &ho_CrossS);}} else {// 如果 不是被删除的轨迹段,那么就全部显示hv_adsd += 1;GenCrossContourXld(&ho_Cross2, HTuple(hv_RowS_zuo[hv_I]), HTuple(hv_ColumnS_zuo[hv_I]), 10,0.785398);ConcatObj(ho_CrossS, ho_Cross2, &ho_CrossS);}// disp_message (3600, I, 'image', RowS_zuo[I], ColumnS_zuo[I], 'black', 'true')}cout << "hv_adsd" << hv_adsd.D();DispObj(ho_CrossS, WindowHandle2d);}}} catch (HException& exception) {// 出错算子的名字QString errname = exception.ProcName().Text();// 出错算子的异常信息QString errmsg = exception.ErrorMessage().Text();QStringList list = errmsg.split(":");  // QString字符串分割函数QMessageBox::warning(this, "提示", errname.append("==").append(list[1]).append("==").append(errname));}
}

HALCON数组的删除 三相关推荐

  1. php数组中删除元素

    之前如果要在某个数组中删除一个元素,我是直接用的unset,也不管unset之后会发生什么.但今天看到的东西却让我大吃一惊 <?php $arr = array('aaaa','bbbb','c ...

  2. 《C#零基础入门之百识百例》(二十一)数组遍历 -- 删除数组零元素

    C#零基础入门 数组相关 -- 数组遍历 前言 一,数组的介绍 1.1 相关概念 1.2 几个概念 二,数组的使用 2.1 定义初始化 2.2 数组的引用 2.3 数组的遍历 三,实例练习 -- 删除 ...

  3. php 从数组里删除元素,PHP从数组中删除元素的四种方法实例

    PHP从数组中删除元素的四种方法实例 一.总结 一句话总结:unset(),array_splice(),array_diff(),array_diff_key() 二.PHP从数组中删除元素的四种方 ...

  4. JavaScript:数组元素删除

    JavaScript数组元素删除 一.splice()函数 使用splice(index,length)函数 index表示开始删除的元素的下标(数组下标从0开始) length表示从index下标开 ...

  5. JS数组添加元素的三种方法

    JS数组添加元素的三种方法 1.push() 方法可以向数组末尾添加一个或多个元素,并且返回新的长度 语法:arr.push(element1,element2,element3,····) 参数 概 ...

  6. java数组遍历 删除remove

    package com.b;import java.util.ArrayList;//数组遍历删除,添加 public class Core2 {private String name;private ...

  7. 从JS数组中删除重复的值[duplicate]

    本文翻译自:Remove duplicate values from JS array [duplicate] This question already has answers here : 这个问 ...

  8. 从PHP中的数组中删除元素

    有没有一种简单的方法可以使用PHP从数组中删除元素,以便foreach ($array)不再包含该元素? 我认为将其设置为null可以做到,但是显然不起作用. #1楼 如果您有一个数字索引的数组,其中 ...

  9. 在一个数组中删除另一个数组存在的值

    在一个数组中删除另一个数组存在的值 可以在购物车中删除多个商品的时候用此方法 在Vuex实现完整购物车中有涉及,详见 Vuex实现完整购物车 <script type="text/ja ...

最新文章

  1. 机器学习与高维信息检索 - Note 7 - 核主成分分析(Kernel Principal Component Analysis,K-PCA)
  2. linux arm current_thread_info定义,linux中arm/mips架构current_thread_info定义
  3. 记住:用户不是傻*,她是你的老婆大人
  4. C语言学习之将一个二维数组的行和列互换,存到另一个二维数组中
  5. golang笔记——数据类型
  6. 随想录(一种powerpc编译学习的方法)
  7. kitti百度网盘分享 kitti百度云盘,全套kitti分享 自动驾驶
  8. 混淆Android JAR包的方法
  9. linux制作img镜像文件,制作img镜像文件的5种方法 .
  10. 安装SAP HANA单机数据库
  11. matlab数组输出字符,Matlab字符型数组的输入输出
  12. 基于jsp java的计算机英语单词学习系统
  13. Java 代码实现rar解压最全攻略操作
  14. [iOS]Size Class不同尺寸适配的是什么样的机型(实验向)
  15. 国家税务局计算机操作考试~~
  16. (深度神经网络多.py文件)python打包过程遇到的问题记录
  17. 蚂蚁金服阳振坤:用10年时间打造一个“顶天立地”的产品
  18. 论企业上云的三大阻力!
  19. 小程序setData动态传递key
  20. 来源(Provenance)介绍

热门文章

  1. 计算机辅助设计在环境工程中的应用,原创:试论计算机辅助设计在环境工程中的应用原稿...
  2. Flash按键响应-键码值表
  3. win10 更新后蓝牙无法连接以前设备
  4. 电脑本地连接图标不见 怎样找到恢复处理无法创建宽带连接(转)
  5. java 图片 缩略图_java 图片缩略图的两种方法
  6. 三、elasticsearch 实际应用(碎片篇)
  7. 阿里云视频点播播放出错,控制台访问出现code:4400
  8. ECCV2020Workshop-PAN-270k参数量SISR网络 | Efficient Image Super-Resolution Using Pixel Attention
  9. 区块链相关安全名词及常见攻击手法
  10. CTF-Misc-二维码(一)