Прежде всего, вот часть моего кода:
Код: Выделить всё
{
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
На самом деле я не способен понять, что происходит. img1 и img2 глобально объявлены как Mat.
Может быть, это простая проблема, но я все еще новичок. Пожалуйста, помогите мне решить проблему.
Спасибо, что уделили время.
Подробнее здесь: https://stackoverflow.com/questions/176 ... -neither-a
Мобильная версия