我在我的代码中使用tensorflow c ++ API。我发现当我从文件加载图像时,图像为NULL。然后我写了一个测试代码来找出原因。
这是我的测试代码:
#include "opencv2/opencv.hpp"
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
using namespace cv;
using namespace std;
//#include "tensorflow/core/public/session.h"
//#include "tensorflow/core/protobuf/meta_graph.pb.h"
int main()
{
Mat imgtry = imread("lena.jpg");
printf("%dx%d", imgtry.cols, imgtry.rows );
return 0;
}
当我评论tensorflow的标头时,输出值是255x255,但是一旦取消注释标头,输出值就是0x0。为什么???
在修改链接库的序列后,问题似乎有所改变。首先,我将tensorflow_cc
和tensorflow_frameworok
以及opencv
的libriries链接起来。现在,我将tensorflow的库放在opencv之后,让相应的include目录作为相同的序列。然后我可以正常读取图像,甚至取消注释上面代码区域中的代码。但是新的问题出现了。
#include "opencv2/opencv.hpp"
#include "opencv2/imgcodecs.hpp"
//it's ok.
#include "tensorflow/core/public/session.h"
#include "tensorflow/core/protobuf/meta_graph.pb.h"
using namespace std;
int main()
{
cv::Mat img;
img = cv::imread("lena.jpg");
if(img.empty() == true) {
cout << "Error!" << endl;
exit(1);
}
cout << "ok!" << endl;
//uncomment this, the img is always emtpy!!!
// tensorflow::SessionOptions sessOptions;
// sessOptions.config.mutable_gpu_options()->set_allow_growth(true);
// auto session = tensorflow::NewSession(sessOptions);
// if(session == nullptr) {
// cout << "Could not create Tensorflow session." << endl;
// exit(1);
// }
return 0;
}