PythonスクリプトからパイプしたCSV文字列からcv::Matを作成しようとしています。私は現在、python 2.7、C++、および OpenCV 3.0 を使用しています。OpenCV 2.4 でそれを行う方法しかわかりませんが、問題は、ml::TrainData が何らかの形で代わりに使用される 3.0 とは大きく異なることです。私はそれがどのように機能するのか理解できず、サンプルコードもありません! :-(
私のpython-scriptが行うことは、np.arrayをCSVとしてパイプすることです。次のようになります。
import sys
import numpy as np
import csv
csvToSend = csv.writer(sys.stdout, delimiter=',')
data = np.array([ [3, 7, 9],
[1, 7, 0],
[4, 12, 8]])
csvToSend.writerows(data)
python-script は現在、bgr RAW 形式で画像を送信するカメラをシミュレートしています。
パイプされたデータは私の C++ コードによって受信されます。コードは次のようになります。
#include <iostream>
#include <string>
#include <opencv2/core/core.hpp>
using namespace std;
using namespace cv;
string values = "", csvPart;
Mat img;
int i;
int main()
{
for (i = 0; i < 3; i++)
{
cin >> csvPart; //here I get my CSV lines from python-script
if (values == "") values = values + csvPart;
else values = values + "\n" + csvPart; //makes the CVS lines look like a 3x3 matrix again
}
cout << values << endl; //prints the CVS to see that it looks like it did before piping it over to the C++ code
/* how the printed string looks like
3,7,9
1,7,0
4,12,8 */
/* Here I want to load the "values" into the Mat img
so I can do my mojo with openCV in C++ */
}
誰かがこれを手伝ってくれて、簡単なコード例を教えてくれれば幸いです。np.array を C++ コードにパイプして cv::Mat にロードするより良い方法があれば、私の腕はあなたのために開かれています! ;-)