ADO(C++)を使用してMS-SQLデータベースからイメージを読み込みます。イメージは、データベースにvarBinary(max)として格納されます。画像を取得して、cv::Mat
という形式に変換しようとしました。ここでC++とAdoを使用してcv :: Mat形式でデータベースからイメージデータを取得
は私が持っているコード、私が得た
HRESULT hr = ::CoInitialize(NULL);
ADODB::_ConnectionPtr pConnection;
hr = pConnection.CreateInstance(__uuidof(ADODB::Connection));
pConnection->CursorLocation = ADODB::adUseClient;
hr=pConnection->Open(L"Provider=sqloledb;Data Source=SAMPLE-DB;"
L"Initial Catalog=IMAGE;User Id=sr;Password=****;", L"",
L"", ADODB::adConnectUnspecified);
if (FAILED(hr))
{
//error handling...
}
ADODB::_RecordsetPtr recordset;
hr = recordset.CreateInstance(__uuidof(ADODB::Recordset));
std::string cmd = "SQL COMMAND THAT PROVIDE IMAGE BINARY";
recordset->Open(cmd.c_str(), pConnection.GetInterfacePtr(),
ADODB::adOpenForwardOnly, ADODB::adLockReadOnly, ADODB::adCmdText);
std::vector<uchar> buffer;
buffer = recordset->Fields->GetItem(L"ImgBinary")->GetValue(); //problem!!
cv::Mat testImage = cv::imdecode(buffer,cv::IMREAD_COLOR); //problem!!
cv::namedWindow("MyWindow");
cv::imshow("MyWindow",testImage);
エラー、
の1- ')CV :: imdecode' です:2つのオーバーロードのいずれもが、すべての引数を変換することができませんでしたタイプ
2-)IntelliSense: "_variant_t"から "std :: vector>"への適切なユーザー定義の変換はありません
助けてください。どうすれば画像をcv::Mat
という形式で取得できますか?
ありがとうございました