我正在使用OpenCV和C++.我有一个像这样的矩阵X.
Mat X = Mat::zeros(13,6,CV_32FC1);
Run Code Online (Sandbox Code Playgroud)
我想更新它的子矩阵4x3,但我怀疑如何以有效的方式访问该矩阵.
Mat mat43= Mat::eye(4,3,CV_32FC1); //this is a submatrix at position (4,4)
Run Code Online (Sandbox Code Playgroud)
我是否需要逐个元素地更改?
我试图跟踪一张纸的角落的位置,因为我相对于Android相机移动它(您可以假设纸张将是与背景完全不同的颜色).我想找到android屏幕上每个角落的x,y坐标.我还希望能够改变纸张的角度,这样它就不一定会呈现出完美的矩形.
我正在使用opencv 2.4.1 for Android,但我找不到cvgoodfeaturetotrack或cvfindcornersubpix在包中.现在我正在考虑使用CvCanny算法来找到边缘,然后使用边缘cvfindcontours找到线条的主要交点以找到角落.
任何建议或源代码将不胜感激.
我需要使用OpenCV读取图像,获取其大小并将其发送到服务器,以便处理图像并将其提供给我提取的功能.
我一直在考虑使用a vector<byte>,但我不明白如何将数据复制到cv :: Mat.我想要快,所以我试图用指针访问数据,但我有一个运行时异常.我有类似的东西.
Mat image = imread((path + "name.jpg"), 0);
vector<byte> v_char;
for(int i = 0; i < image.rows; i++)
{
for(int j = 0; j < image.cols; j++)
{
v_char.push_back(*(uchar*)(image.data+ i + j));
}
}
Run Code Online (Sandbox Code Playgroud)
我刚刚安装了OpenCV2.4.2并使用CMake创建了一个OpenCV项目.我没有得到任何编译错误.我有几个处理图像的功能,我有2个应用程序:
1-处理视频中的数据
2-处理模拟数据.
除了从视频中提取数据之外,两个应用程序都是相同的.
问题:处理视频的应用程序崩溃了
program.exe访问冲突读取位置0x049f08c0中0x75d8a048处的未处理异常.
在阅读框架时,它会在代码的这一部分崩溃:
cv::VideoCapture _video;
while(1)
{
// grab the frame
_video >> frame; <-------------CRASHES HERE
processFrame(frame);
}
Run Code Online (Sandbox Code Playgroud)
所以我猜cv::VideoCapture在OpenCV 2.4.2中可能存在类的问题.如何检测问题并解决问题?
编辑
使用摄像机我设法捕获错误消息:
OpenCV Error: Assertion failed (m.dims >= 2) in unknown function, file ..\..\..\
src\opencv\modules\core\src\matrix.cpp, line 268
OpenCV Error: Assertion failed (0 <= _rowRange.start && _rowRange.start <= _rowR
ange.end && _rowRange.end <= m.rows) in unknown function, file ..\..\..\src\open
cv\modules\core\src\matrix.cpp, line 283
Run Code Online (Sandbox Code Playgroud) 我正在OpenCV 2.4中开发一些代码,我想测试FREAK检测器,但是我得到了编译错误.我包含feature2d.h,我该怎么做才能解决这个问题?