k-j*_*jax 2 c++ dll opencv access-violation
我在visual studio 2010 C++ dll中使用openCV 2.1进行矩阵运算.该DLL从VB.NET程序接收数组并将它们加载到矩阵中以进行某些操作.但是,我不能在任何cv :: mat对象上使用.at成员而不会抛出访问冲突异常.我以为是因为我传入了数组,但我甚至无法运行:
Mat Rhat(2,1,CV_32FC1);
Rhat.at<double>(0,0) = 10;
Rhat.release();
Run Code Online (Sandbox Code Playgroud)
如果我删除该.at行,那么它运行正常.我使用CvMat类型完成了C的全部工作,但它不喜欢cvCreateMat并开始使用cv命名空间.我在dll中的所有非opencv函数工作正常,所以问题出在我的cv设置或其他东西.
有人可以帮忙吗?
小智 8
问题是您创建了一个float(32FC1)矩阵,并且您尝试使用double访问它,这会导致超出访问范围.
你可以在任何地方使用浮动:
Mat Rhat(2,1,CV_32FC1);
Rhat.at<float>(0,0) = 10;
Rhat.release();
Run Code Online (Sandbox Code Playgroud)
或加倍:
Mat Rhat(2,1,CV_64FC1);
Rhat.at<double>(0,0) = 10;
Rhat.release();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3004 次 |
| 最近记录: |