Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何修改/分配矩阵元素值?_C++_Arrays_Opencv_Matrix - Fatal编程技术网

C++ 如何修改/分配矩阵元素值?

C++ 如何修改/分配矩阵元素值?,c++,arrays,opencv,matrix,C++,Arrays,Opencv,Matrix,这个代码给了我一个错误。程序“停止工作”。我能知道怎么了吗?我做得对吗 short* pixelX = grad_x.ptr<short>(0); short* pixelY = grad_y.ptr<short>(0); cv::Mat grad = cv::Mat::zeros(original_Mat.size(), CV_64F); cv::Mat grad_x = cv::Mat::zeros(original_Mat.size(), CV_64F); cv

这个代码给了我一个错误。程序“停止工作”。我能知道怎么了吗?我做得对吗

short* pixelX = grad_x.ptr<short>(0);
short* pixelY = grad_y.ptr<short>(0);
cv::Mat grad = cv::Mat::zeros(original_Mat.size(), CV_64F);

cv::Mat grad_x = cv::Mat::zeros(original_Mat.size(), CV_64F); 
cv::Mat grad_y = cv::Mat::zeros(original_Mat.size(), CV_64F);
int a=0,b=0;

for(int i = 0; i < grad_x.rows * grad_x.cols; i++) 
{
    double directionRAD = atan2(pixelY[i], pixelX[i]);
    int directionDEG = (int)(180 + directionRAD / CV_PI * 180);
    grad.at<double>(a,b)=directionDEG;// this is the one giving me error
    if(a%=319)
    {
        a=0;
        b++;
    }
    else
    a++;
}
short*pixelX=grad_x.ptr(0);
短*像素=grad_y.ptr(0);
cv::Mat grad=cv::Mat::Zero(原始材料尺寸(),cv_64F);
cv::Mat grad_x=cv::Mat::Zero(原始材料尺寸(),cv_64F);
cv::Mat grad_y=cv::Mat::Zero(原始材料尺寸(),cv_64F);
int a=0,b=0;
对于(int i=0;i
这是访问/修改矩阵元素的方法。您可以在此基础程序的基础上进一步构建,用所需的值填充矩阵:

cv::Mat grad = cv::Mat::zeros(4, 5, CV_64F);

int a = 0, b = 0;

for (int i = 0; i < grad.rows * grad.cols; i++)
{
grad.at<double>(b, a) = i;    // this is the one giving me error
if (a == grad.cols - 1)
    {
    a = 0;
    b++;
    }
else
    a++;
}
cout << grad << endl;

毕业生属于哪种类型?哦,真的是空的吗?您必须先创建一个具有相同大小的有效Mat,然后再将值放入其中。这里有一个Mat类型?这不是实际代码,是吗?请解释“a”和“b”的用法。然后我们将去看看如何正确地为Mat grad分配空间(这是您当前的问题。-它是空的)为什么
grad.at
的值类型显然是
short
?根据
a,b
,这会给您一个无效的地址。
[0, 1, 2, 3, 4;
5, 6, 7, 8, 9;
10, 11, 12, 13, 14;
15, 16, 17, 18, 19]