news 2026/10/24 6:09:03

【工程与环境】Tensorflow 1.14: Eigen using failed(OpenCV冲突问题)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【工程与环境】Tensorflow 1.14: Eigen using failed(OpenCV冲突问题)

之前LZ在编译tf1.14接口的时候,其实就已经强调了Eigen 版本选择的重要性,但是我们经常使用不止一种三方库,在使用不同算法库的时候其实就会存在这样那样动态库冲突的情况,而且这种情况最为头疼。。。

下面是LZ的一段测试代码

#include<stdio.h>#include<iostream>...tf的一些头文件...#include"opencv2/opencv.hpp"#include"opencv2/core/cuda.hpp"#include"opencv2/cudawarping.hpp"#include"opencv2/gpu/gpu.hpp"intmain(){intnum_devices=cv::cuda::getCudaEnabledDeviceCount();if(num_devices<=0){std::cerr<<"There is no device."<<std::endl;return-1;}intenable_device_id=-1;for(inti=0;i<num_devices;i++){cv::cuda::DeviceInfodev_info(i);if(dev_info.isCompatible()){enable_device_id=i;}}if(enable_device_id<0){std::cerr<<"GPU module isn't built for GPU"<<std::endl;return-1;}cv::cuda::setDevice(enable_device_id);std::cout<<"GPU is ready, device ID is "<<num_devices<<"\n";// read one imagecv::Mat src_image=cv::imread("../111.jpg");cv::Mat dst_image;cv::cuda::GpuMatg_src_img(src_image);cv::cuda::GpuMat g_dst_image;cv::cuda::resize(g_src_img,g_dst_image,cv::Size(WIDTH,HEIGHT));g_dst_image.download(dst_image);cv::imshow("test",dst_image);cv::waitKey(0);cv::imwrite("test.jpg",dst_image);return0;}

后来编译就出问题了,主要还是Eigen的问题

tensorflow-r1.14/tensorflow/contrib/makefile/downloads/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorBlock.h: In static member function ‘static void Eigen::internal::TensorBlockIO<Scalar, StorageIndex, NumDims, Layout, BlockRead>::Copy(const Block&, StorageIndex, const Dimensions&, const Dimensions&, const Scalar*, Scalar*)’: tensorflow-r1.14/tensorflow/contrib/makefile/downloads/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorBlock.h:393:63: error: the value of ‘j’ is not usable in a constant expression if (++block_iter_state[j].count < block_iter_state[j].size) { ^ tensorflow-r1.14/tensorflow/contrib/makefile/downloads/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorBlock.h:392:16: note: ‘int j’ is not const for (int j = 0; j < num_squeezed_dims; ++j) { ^ tensorflow-r1.14/tensorflow/contrib/makefile/downloads/eigen/unsupported/Eigen/CXX11/src/Tensor/TensorBlock.h:393:35: error: parse error in template argument list if (++block_iter_state[j].count < block_iter_state[j].size) { ...

提取出主要问题

error: the value of ‘j’ is not usable in a constant expression

发现在github上也有类似问题https://github.com/tensorflow/tensorflow/issues/33280

但是并没有解决方案啊。。。

最后在LZ的仔细排查下最后发现了自己犯了一个很愚蠢的错误,在LZ的笔记本上有两个版本的OpenCV,

//这三行使用的是OpenCV4.2.0版本的#include"opencv2/opencv.hpp"#include"opencv2/core/cuda.hpp"#include"opencv2/cudawarping.hpp"
//这个头文件使用的是OpenCV2.4.9版本的,这种肯定会出问题的,#include"opencv2/gpu/gpu.hpp"

但是报的居然是tf中Eigen的问题,排查好久,差点以为要重新编译库了/(ㄒoㄒ)/~~

不知道github上那小哥解决问题了没有。。。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/23 1:38:44

【工程与环境】Ubuntu:环境变量PATH、LIBRARY_PATH和LD_LIBRARY_PATH的区别

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/23 1:38:27

【工程与环境】Ubuntu16.04下实时显示GPU使用情况

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/23 1:38:09

多人协作AI视频生产:LibTV团队版如何重构工作流

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/23 1:37:46

基于BERT的多维度情感分类实战:从数据标注到模型上线全复盘

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/23 1:36:13

麒麟V11部署OpenStack Zed:kolla-ansible容器化实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/24 3:29:20

LocalSend局域网传输实测:千兆有线78.5MB/s,2.5GB文件40秒传完

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华