大佬教程收集整理的这篇文章主要介绍了c – 用于cv :: Mat参数的OpenCV std :: vector,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
std::vector<cv::Point2f> pts; // contains 4 elements cv::Mat ptsmat = ((cv::InputArray)pts).getMat();
在一台机器上,我得到了一个带有2个通道的4乘1 cv :: Mat.每个元素代表一个2D点.
在另一台机器上,我得到一个2090乘1的cv :: Mat,带有2个带有奇怪数据的通道.这是错误的,这是一个问题,因为向量只包含4个项目.
在使用Windows 10上的CMake从源代码构建的OpenCV 3.1的两台机器上.
编辑
我开始在不同的机器上遇到类似的问题.
在调试模式下的Visual studio中,以下代码段正常工作:
std::vector<cv::Point2f> points = { cv::Point2f(2,1),cv::Point2f(2,cv::Point2f(1,3) }; cv::InputArray arr = points; cv::Mat ma = arr.getMat(); std::cout << ma.ptr<float>(0)[1];
但是当我在Release中编译它时,它会在Access违规读取位置的最后一行崩溃…
进一步的调查显示,产生影响的关键标志是:
运行时库:多线程DLL(/ MD)——–>
紧急
运行时库:多线程DLL调试(/ MDd)——–>作品
编辑2
根据Mateen Ulhaq的评论,我查了一下
std::vector<cv::Point2f> points; cv::Mat image(points);
这很好用.
问题是一些OpenCV较大的函数(例如undistortPoints)在内部使用getMat()转换.如果我在发布时运行它,应用程序崩溃.
编辑3
刚刚检查过,OpenCV 3.2也出现同样的问题
以上是大佬教程为你收集整理的c – 用于cv :: Mat参数的OpenCV std :: vector全部内容,希望文章能够帮你解决c – 用于cv :: Mat参数的OpenCV std :: vector所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。