OpenCV cv::Mat element access

307
08 сентября 2017, 22:11
cv::Mat matrix= cv::Mat::zeros(3,4,CV_8U);
matrix.at<float>(0,0)=1;
matrix.at<float>(0,1)=2;
matrix.at<float>(0,2)=3;
matrix.at<float>(1,0)=4;
matrix.at<float>(1,1)=5;
matrix.at<float>(1,2)=6;
matrix.at<float>(2,0)=7;
matrix.at<float>(2,1)=8;
matrix.at<float>(2,2)=9;
for (int i=0;i<matrix.rows;i++){
    for (int j=0;j<matrix.cols;j++){
        float temp= matrix.at<float>(i,j);
        std::cout<<temp;
        std::cout<<" ";
    }
    std::cout<<std::endl;
}

Excpected output:

1230

4560

7890

Current output:

1478

4789

7890

Что не так?

Answer 1

this happens because of memory allocation. float type and CV_8U are not the same. When at the step of matrix creation and element access defined the same format everything works .

For example:

     cv::Mat matrix = cv::Mat_<std::complex<double> >(3, 4);
     matrix.at<double>(0,0)=1;

provides same data type

READ ALSO
Реализация на C++ аналога функции openssl_encrypt из php (OpenSSL)

Реализация на C++ аналога функции openssl_encrypt из php (OpenSSL)

Мне в клиент на C++ дают данные с HTTP-сервера, зашифрованные функцией:

293
Есть ли редактор под написание драйвера? [требует правки]

Есть ли редактор под написание драйвера? [требует правки]

Есть ли такой редактор для написания драйвера под Windows, который будет подсказывать функции WDK, по возможности чтобы в нем можно было бы драйвер...

245
Является ли строка палиндромом

Является ли строка палиндромом

По заданию я должен разработать функцию, которая проверяет является ли строка палиндромом или нетСтрока может содержать пунктуацию и пробелы

241
Асинхронность MouseArea

Асинхронность MouseArea

Имеется 2 MouseArea, когда я делаю drag для одной, я не могу одновременно делать drag и для другой, хотя они никак не связаны друг с другом, даже не на одном...

285