您好我正在尝试在网络摄像头Feed上绘制一些透明的形状。
我遇到错误输入参数的大小不匹配。我检查了我的代码并且无法识别错误
double alpha = 0.8;
Mat polarize(480, 640, CV_8UC4);
Size s = webcam.size();
double rows = s.height;
double cols = s.width;
std::cout << "Webcam R " << rows << " C " << cols << std::endl;
s = shape.size();
rows = s.height;
cols = s.width;
std::cout << "Shape R " << rows << " C " << cols << std::endl;
addWeighted(shape, alpha, webcam, 1.0 - alpha, 0.0, polarize); // Error Here
我已经检查过Mat形状和Mat网络摄像头是同一行和列。有没有我错过的东西?
答案 0 :(得分:1)
您检查了“形状”和“网络摄像头”的宽度和高度,但没有检查其类型。如果它不相同(深度和通道数),则功能将失败。
此外,无需初始化“极化”。它将由addWeighted()根据输入图像的宽度,高度和类型创建。
答案 1 :(得分:0)
我认为网络摄像头是从cv::VideoCapture
对象复制的,该对象应该是3通道矩阵。
所以Mat polarize(480, 640, CV_8UC3);
应该有用。