我正在做一个在树莓派上使用 opencv 的项目。我遇到了一个看起来很简单的障碍,但我无法解决这个问题。首先,这是我的代码的一部分:
{
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错误:输入参数的大小不匹配(操作既不是'array op array'(其中数组具有相同的大小和相同的通道数),也不是'array op scalar',也不是'scalar op array') 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: error: (-209) 该操作既不是'array op array'(其中数组具有相同的大小和相同的通道数),也不是'array op函数 arithm_op 中的标量和“标量运算数组”
我真的无法理解发生了什么。img1 和 img2 被全局声明为 Mat。这可能是一个简单的问题,但我仍然是一个新手。请帮我解决问题。感谢您的时间。