VS2019调试查看变量_机器人调试(六十六)
一、给VS2012MFC添加DOS窗口
在相关的.cpp中添加:
#include #include
添加控制台初始化函数:
需要调用AllocConsole()函数
//控制台初始化void InitConsoleWindow(){ AllocConsole(); HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE); int hCrt = _open_osfhandle((long)handle, _O_TEXT); FILE * hf = _fdopen(hCrt, "w"); *stdout = *hf;}
InitConsoleWindow()需要放在InitInstance()中
BOOL CASIAApp::InitInstance(){ AfxEnableControlContainer(); SetRegistryKey(_T("应用程序向导生成的本地应用程序")); InitConsoleWindow(); printf("欢迎关注微信公众号:马少爷!\n"); }
二、相机坐标系下坐标
X是左右
左负右正
-37~37
Z是上下
近大远小
-25~25
三、窗口设置成动态的
初始化时设置大小
SetWindowPos(0, 0, 0, 1400, 750, SWP_NOZORDER);//设置窗口大小和屏幕大小一致
四、OpenCV显示图像灰色
没有延时显示造成的
需要在imshow()后面添加
system("pause")或waitKey(x);
五、OpenCV 3D显示Viz模块
5.1. OpenCV Viz 模块是什么
OpenCV_Viz 模块是OpenCV的3D 可视化模块,存在于OpenCV 2.4.9 or later 版本中;
它是依赖于VTK(Visualization Toolkit) 进行显示的。
5.2. 如何编译
官方发布的Opencv 安装包中并没有编译Viz 模块,所以如果你想要使用这个功能,需要自己用Cmake 编译。
自行编译需要先编译VTK,再在编译opencv 中添加VTK相关模块;
这里有编译好的opencv310, 32位的release 版本。
5.3. 如何使用
(1)配置opencv 环境,包含头文件
// include opencv header file#include "opencv2/opencv.hpp"#include "opencv2/viz.hpp"
(2)初始化
cv::viz::Viz3d viewer;cv::Mat cloudMat;
(3)代码
#include "opencv2/opencv.hpp"#include "opencv2/viz.hpp"using namespace cv;using namespace std;int main(){ //加载深度图(这里用的kinect2 的深度图) std::string filename="C:\\user\\desktop\\1.png); cv::Mat depth = cv::imread(filename,CV_16UC1); //初始化 viz::Viz3d window("window"); //显示坐标系 window.showWidget("Coordinate", viz::WCoordinateSystem()); int height=depth.rows; int width = depth.cols; //创建一个储存point cloud的图片 Mat point_cloud = Mat::zeros(height, width, CV_32FC3); //point cloud 赋值,其中 fx,fy,cx,cy 为Kinect2 的内参 double fx = 368.096588, fy = 368.096588, cx = 261.696594, cy = 202.522202; for(int row=0; row for (int col = 0; col < depth.cols; col++) { point_cloud.at(row, col)[2] = depth.at(row,col); point_cloud.at(row, col)[0] = depth.at(row, col)*(col - cx) / fx; point_cloud.at(row, col)[1] = depth.at(row, col)*(row - cy) / fy; } cv::viz::WCloud cloud(point_cloud); window.showWidget("cloud",cloud); while (!window.wasStopped()) { window.spinOnce(1, false); } return 0;}
(4)从点云中获取xyz坐标
vector<cx_point3r_t> CenterlaserPoint;cx_point3r_t point;for (unsigned x = 0; x < pc.points.width(); x++){ cx::Point3f dx = pc.points.at<:point3f>(1, x);//(X,y,z,相机坐标系下坐标) //cout< if (dx.z <200 && dx.z >-200) { point.a = x; point.b = 0; point.c = int(10*dx.z); CenterlaserPoint.push_back(point); cout << "point.a" << point.a << endl;//-39.036 //cout << "point.c" << point.c << endl;//-39.036 //cout << "CenterlaserPoint.z" << (int)(CenterlaserPoint[x].c*10) << endl;//-39.036 }}
5.4 测试结果
六、VS2019安装
1、下载最新版的.net
https://dotnet.microsoft.com/download
2、安装VS
https://visualstudio.microsoft.com/zh-hans/
如果运行以后无法打开,
3、打开VS2019
测试完毕!
7、SDK安装
1、SDK安装
以管理员身份运行:
安装完毕:
2、VisionBlox安装
3、Halcon支持安装
参考文献:
http://unanancyowen.com/en/opencv_viz_with_kinectv2/
推荐:机器人实时纠偏系统(一)
机器人实时纠偏(二)OpenCV+VS开发环境配置(三)结构光视觉的焊接机器人纠偏(四)结构光视觉的机器人焊接(五)结构光视觉的机器人焊接(六)机器人初始点导引(七)MATLAB标定相机参数(八)机器人的手眼标定(九)机器人坐标获取(十)机器人调试(十一)TCP/IP客户端API编程(十二)结构光传感器上位机界面多线程编程(十三)TCP&UDP(十四)C/C++ Programing(十五)机器人扫描与跟踪调试(十六)结构光传感器库函数(十七)结构光传感器编程(十八)C/C++ Programing(十九)C/C++ Programing(二十)结构光传感器编程(二十一)DX200操作要领(二十二)DX200操作要领(二十三)工装轴协调(二十四)无夹具协调(二十五)图像处理调试(二十六)STM32MODBUS_CRC编程(二十七)
在C++中调用Matlab函数(二十八)
机器人手眼标定MATLAB及C++实现
机器人位姿运算及Eigen的使用(三十)
OpenCV与Eigen矩阵运算(三十一)
VS中数据读写及OpenCV拟合(三十二)
VS2013配置OpenGL库(三十三)
曲线拟合/插值(三十四)
曲线拟合绘制滤波及机器人平移(三十五)
DX200操作要领—示教1(三十六)
直接打开与平移变换(三十七)PAM与镜像平移变换(三十八)
修改与编辑程序(三十九)
YRC1000 宏程序命令(四十)
程序编辑与试运行(四十一)
程序编辑与再现(四十二)
再现(四十三)
程序管理(四十四)
便捷功能(四十五)
便捷功能(四十六)
椭圆拟合(四十七)
RANSAC直线拟合(四十八)
读写CSV文件类(四十九)
RANSAC直线拟合(五十)
法向量、旋转矩阵计算(五十一)
机器人手眼标定与变量设置调试(五十二)
20200715调试记录(五十三)
20200717调试记录(五十四)
C++~RANSAC拟合圆/随机数产生(五十五)
安川机器人外部轴协调(五十六)
安川机器人Motoplus编程(五十七)
安川机器人Motoplus编程(五十八)
安川机器人Motoplus编程(五十九)
安川机器人Motoplus编程(六十)
安川机器人Motoplus编程(六十一)
机器人调试(六十二)
机器人调试(六十三)
机器人调试(六十四)
机器人调试(六十五)
VS2019调试查看变量_机器人调试(六十六)相关推荐
- VS2019调试查看变量_PL/SQL调试存储过程?看这篇就够了
概述 虽然现在存储过程相对比较少用了,但是平时接触不可避免的要跟存储过程打交道,当需要自己写的时候总会碰到这或那的错误,这个时候一般要怎么调试呢? PL/SQL调试 PL/SQL中提供了[调试存储过程 ...
- VS2019调试查看变量_单片机编程软件一点通,IAR单片机编程软件工程调试方法
单片机编程软件通常以Keil和IAR为主,大家在选择适合自己的单片机编程软件时可依据工程要求而定.本文内容针对IAR单片机编程软件,主要讲解该单片机编程软件的工程调试使用方法.如果你对本文将要讲解的内 ...
- VS2019调试查看变量_你很可能需要知道这个调试小技巧
缘起 最近在调试的时候,需要观察第三方容器中每一个元素的值.默认情况下,vs 并不知道如何显示第三方容器的内容,只能手动观察容器中的每一个值,超级不方便.我找到一个非常给力的好办法,你还知道其它好办法 ...
- 合肥工业大学机器人技术五十六题
合肥工业大学机器人技术五十六题 题目要求 //拿球后行为,利用已有 Worldmodel(21) (1)在 playOn 模式下,拿到球以后朝前方快速带球. (2)在 PlayOn 模式下,拿到球以后 ...
- 【正点原子STM32连载】第六十六章 综合测试实验摘自【正点原子】STM32F103 战舰开发指南V1.2
1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id=609294757420 3)全套实验源码+手册+视 ...
- 第六十六章 Caché 函数大全 $TRANSLATE 函数
文章目录 第六十六章 Caché 函数大全 $TRANSLATE 函数 大纲 参数 描述 `$TRANSLATE`和`$REPLACE` 示例 第六十六章 Caché 函数大全 $TRANSLATE ...
- 第六十六章 SQL命令 REVOKE
文章目录 第六十六章 SQL命令 REVOKE 大纲 参数 描述 撤销的角色 撤销对象权限 撤销对象所有者特权 撤销表级和列级特权 CASCADE 或 RESTRICT 对缓存查询的影响 IRIS S ...
- 人生哲理名言六十六条
一提到哲理好像是老年人的专利,其实年青人多看看和学学哲理也是有好处的.摘录哲理名言共享. 人生哲理名言六十六条: 1人之所以痛苦,在于追求错误的东西. 2如果你不给自己烦恼,别人也永远不可能给你烦恼. ...
- QT开发(六十六)——登录对话框的验证机制
QT开发(六十六)--登录对话框的验证机制 一.验证码机制 为了避免被恶意程序***,程序通常要使用安全机制.验证码机制是提供产生随机验证码,由用户识别填写来判断用户有效性的安全机制. 验证码必须动态 ...
最新文章
- matlab肌电信号平滑滤波_BCIduino 滤波和频谱计算操作
- Python统计学-006:描述统计-方差
- 双人五子棋对战(需要EasyX图像库)
- python编码读法-python中文读法
- Debian中编译内核
- Linux SO_KEEPALIVE属性,心跳
- Android 系统(218)---Android的事件分发机制以及滑动冲突的解决
- html提值到php 冒泡,如何实现Html事件冒泡
- hbase shell删除一行_HBase安装phoenix实战shell操作
- 一个黑客都要学习什么语言呢?
- 计算机驱动安装的几个方法,显卡驱动怎么安装 三种方法教程
- 2017年电子设计大赛(B题 滚球控制系统)赛后总结
- JavaScript写入文件到本地
- SQL——语法基础篇(上)
- c语言高级程序知识,《高级语言程序设计》知识点总结(一)
- cos47度怎么用计算机算,cos47度等于多少
- 安卓开发删除文件产生0KB文件
- ✨【Code皮皮虾】一次通过99.90%,思路详解【找到需要补充粉笔的学生编号】
- linux关于压缩解压tar包
- 大数据技术在金融行业的应用前景
热门文章
- Ubuntu18.04安装显卡驱动
- PulseAudio VS AudioFlinger(七)
- sshd启动报错解决:sshd re-exec requires execution with an absolute path
- Lisp入门(好文)
- Android java和C的Socket通信demo(可用)
- 深入理解Dalvik字节码指令及Smali文件
- wpf之DragDrop研究
- 网站未备案不能访问,怎么用ip加端口的方式建站?
- 漏洞防御方案_越权漏洞原理及防御方案
- python识别银行卡数字_Python银行卡数字识别项目 (Opencv)