Ошибка OpenCV: размеры входных аргументов не совпадают (операция не является «массивом массива»)C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Ошибка OpenCV: размеры входных аргументов не совпадают (операция не является «массивом массива»)

Сообщение Anonymous »

Я работаю над проектом, который использует opencv на Raspberry Pi. Я столкнулся с препятствием, которое выглядит простым, но не могу решить проблему.
Прежде всего, вот часть моего кода:

Код: Выделить всё

    {
gray=cvarrToMat(py);
///cvShowImage("camcvWin", py); // display only gray channel
if(img_num%2 == 1)
{
cv::imwrite("/home/pi/test/Gray_2Image1.jpg",gray);
}
else if (img_num%2 == 0)
{
cv::imwrite( "/home/pi/test/Gray_2Image2.jpg", gray );
cv::Mat img2 = cv::imread("/home/pi/test/Gray_2Image2.jpg", 0);
cv::Mat img1 = cv::imread("/home/pi/test/Gray_2Image1.jpg", 0);
diffImage = abs(img1-img2);
imshow("diffImage", diffImage);
cv::imwrite( "/home/pi/test/Diffimage.jpg", diffImage );

}
img_num++;
С этим кодом проблем нет.
Однако, если я отредактирую код, внося небольшие изменения следующим образом:

Код: Выделить всё

    {
gray=cvarrToMat(py);
///cvShowImage("camcvWin", py); // display only gray channel
if(img_num%2 == 1)
{
cv::imwrite("/home/pi/test/Gray_2Image1.jpg",gray);
cv::Mat img1 = cv::imread("/home/pi/test/Gray_2Image1.jpg", 0);
}
else if (img_num%2 == 0)
{
cv::imwrite( "/home/pi/test/Gray_2Image2.jpg", gray );
cv::Mat img2 = cv::imread("/home/pi/test/Gray_2Image2.jpg", 0);
diffImage = abs(img1-img2);
imshow("diffImage", diffImage);
cv::imwrite( "/home/pi/test/Diffimage.jpg", diffImage );

}
img_num++;
Я получаю следующую ошибку:

Ошибка OpenCV: размеры входных аргументов не совпадают (операция ни «массив операций массива» (где массивы имеют одинаковый размер и одинаковое количество каналов), ни «массив операций скаляра», ни «скаляр операций массива») в arithm_op, файле /home/pi/OpenCV-2.3.1/modules/core/src/arithm.cpp, строка 1253
завершить вызов после создания экземпляра 'cv::Exception'
What(): /home /pi/OpenCV-2.3.1/modules/core/src/arithm.cpp:1253: ошибка: (-209) Эта операция не является ни «массивом, ни массивом». (где массивы имеют одинаковый размер и одинаковое количество каналов), ни «скалярный массив», ни «скалярный массив» в функции arithm_op

На самом деле я не способен понять, что происходит. img1 и img2 глобально объявлены как Mat.
Может быть, это простая проблема, но я все еще новичок. Пожалуйста, помогите мне решить проблему.
Спасибо, что уделили время.

Подробнее здесь: https://stackoverflow.com/questions/176 ... -neither-a
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»