opencv数据类型和格式的坑
//cv::Mat uvp = cv::Mat::zeros(2, probp.size(), CV_8UC1);
cv::Mat uvp = cv::Mat::zeros(2, probp.size(), CV_64FC1);//data-type...
for (unsigned int i = 0; i <probp.size(); i++ )
{
uvp.at<float>(0, i) = probp[i].x;
uvp.at<float>(1, i) = probp[i].y;
}
cv::Mat ipmps, xyp;
imagetoground(uvp, xyp, h, roll, pitch, camera_param_KK);
//cv::Mat uvp = cv::Mat::zeros(2, probp.size(), CV_8UC1); cv::Mat uvp = cv::Mat::zeros(2, probp.size(), CV_64FC1); //data-type... for (unsigned int i = 0; i <probp.size(); i++ ) { uvp.at< float >(0, i) = probp[i].x; uvp.at< float >(1, i) = probp[i].y; } cv::Mat ipmps, xyp; imagetoground(uvp, xyp, h, roll, pitch, camera_param_KK); |
//imagetoground... void imagetoground(cv::Mat& uv, cv::Mat& xy, double ht, double roll, double pitch, double * camera_param_KK) { std::cout << "111" << std::endl; int height = ( int )(ht*1000); //unit-mm. double fx = camera_param_KK[0]; double fy = camera_param_KK[4]; double cx = camera_param_KK[2]; double cy = camera_param_KK[5]; double c1 = cos (pitch*PI / 180); double s1 = sin (pitch*PI / 180); double c2 = cos (roll*PI / 180); double s2 = sin (roll*PI / 180); cv::Mat Tf = (cv::Mat_< double >(3, 3) << fx, 0, cx, 0, fy, cy, 0, 0, 1); cv::Mat Tx = (cv::Mat_< double >(3, 3) << 1, 0, 0, 0, c1, s1, 0, -s1, c1); cv::Mat T = Tx.inv() * Tf.inv(); T.rowRange(0, 2) = T.rowRange(0, 2)*(-height); cv::Mat temp = cv::Mat::ones(3, uv.cols, CV_64FC1); uv.copyTo(temp.rowRange(0, 2) ) ; cv::Mat xyt = T*temp; xyt.rowRange(0, 1) = xyt.rowRange(0, 1) / xyt.rowRange(2, 3); xyt.rowRange(1, 2) = xyt.rowRange(1, 2) / xyt.rowRange(2, 3); xyt.rowRange(0, 2).copyTo(xy); //deep-copy... } |
注意
错误的描述一般是内存冲突memory crruption,abort等等...
完
各美其美,美美与共,不和他人作比较,不对他人有期待,不批判他人,不钻牛角尖。
心正意诚,做自己该做的事情,做自己喜欢做的事情,安静做一枚有思想的技术媛。
版权声明,转载请注明出处:https://www.cnblogs.com/happyamyhope/
心正意诚,做自己该做的事情,做自己喜欢做的事情,安静做一枚有思想的技术媛。
版权声明,转载请注明出处:https://www.cnblogs.com/happyamyhope/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】