Здесь https://stackoverflow.com/a/49817506/1277317 приведен пример использования сети свертки в OpenCV.Но этот пример в Python.Как сделать то же самое в C ++?А именно, как это сделать в C ++:
net = cv.dnn.readNetFromTensorflow('model.pb')
net.setInput(inp.transpose(0, 3, 1, 2))
cv_out = net.forward()
?
И как создать Mat для функции setInput для размера изображения: 60x162x1?Я использую float для данных, как в примере с Python.Теперь у меня есть этот код, и он дает неправильные результаты:
Net net = readNet("e://xor.pb");
float x0[60][162];
for(int i=0;i<60;i++)
{
for(int j=0;j<162;j++)
{
x0[i][j]=0;
}
}
x0[5][59]=0.5;
x0[5][60]=1;
x0[5][61]=1;
x0[5][62]=0.5;
Mat aaa = cv::Mat(60,162, CV_32F, x0);
Mat inputBlob = dnn::blobFromImage(aaa, 1.0, Size(60,162));
net.setInput(inputBlob , "conv2d_input");
Mat prob = net.forward("activation_2/Softmax");
for(int i=0;i<prob.cols;i++)
{
qDebug()<<i<<prob.at<float>(0,i);
}