关于OpenCV读视频或者图片空的分析

        cv::Mat image_data = cv::imread(strImagesFileNames, CV_LOAD_IMAGE_UNCHANGED);
        if(image_data.empty())
          {
               cout<<"strImagesFileNames:"<<strImagesFileNames<<endl;
               cerr << endl << "Failed to load image: "<<endl;
               continue;
               //return 1;
           }

交叉编译用的OpenCV版本号是3.4.3,编译过程没有出错,图片路径没有出错,在移植到开发板上后执行却一直提示 Failed to load image;在x86系统上本地编译执行也都没问题,交叉编译后就不行;郁闷了很久,查了很多资料,大部分都是提示图片路径问题;路径中的中英文问题等;

After long a time...

通过用readelf -d  fileName

图片一:

 图片二:

 对比图片一和二发现共享库的版本不一样,而且可以运行可执行文件也多出来两个库;

再对比两个图看下:

图片一:

 图片二:

 两个可执行文件依赖的库都一样,唯一不一样的是OpenCV的版本号;

至此,问题终于水落石出,真相终于告白天下。谨以此献给同样被此问题困惑的伙伴!!!

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在OpenCV中,可以使用以下方法来判断一张图片是否为空: 1. 使用imread函数读取图片,如果返回的Mat对象为空,则说明图片为空。可以使用以下示例代码来判断: ```c++ #include <opencv2/opencv.hpp> using namespace cv; int main() { Mat image = imread("example.jpg"); if (image.empty()) { // 图片为空 printf("Image is empty.\n"); } else { // 图片为空 printf("Image is not empty.\n"); } waitKey(0); return 0; } ``` 2. 可以通过读取image.data的指针来判断图片是否为空。如果指针为空,则说明图片为空。可以使用以下示例代码来判断: ```c++ #include <opencv2/opencv.hpp> using namespace cv; int main() { Mat image = imread("example.jpg"); if (image.data == nullptr) { // 图片为空 printf("Image is empty.\n"); } else { // 图片为空 printf("Image is not empty."); } waitKey(0); return 0; } ``` 以上是两种常用的方法来判断一张图片是否为空。 ### 回答2: 在OpenCV中判断一张图片是否为空,可以通过判断图片的宽度和高度是否为0来实现。具体的方法如下: 1. 首先,需要加载图片并将其转换成Mat对象。 ```cpp Mat image = imread("image.jpg"); ``` 2. 接下来,我们可以使用Mat的empty()函数来判断图片是否为空。如果图片的宽度或高度为0,那么就可以认为图片为空。 ```cpp if (image.empty()) { cout << "图片为空!" << endl; } else { cout << "图片为空!" << endl; } ``` 这样,我们就可以通过判断图片的宽度和高度是否为0来判断一张图片是否为空了。 需要注意的是,以上方法只能用于判断一张图片是否为空,即判断图片是否成功加载。并不能判断图片中是否有内容或者是否为纯黑色等其他特殊情况。 ### 回答3: 在opencv c中,可以使用以下方法判断图片是否为空。 首先,我们可以使用cvLoadImage函数加载图片。该函数将返回一个指向IplImage的指针。如果指针的值为NULL,则表示图片为空。 ```c IplImage* image = cvLoadImage("image.jpg", CV_LOAD_IMAGE_COLOR); if (image == NULL) { // 图片为空 printf("图片为空\n"); } else { // 图片为空 printf("图片为空\n"); } ``` 另外,我们还可以像下面这样使用imread函数加载图片: ```c Mat image = imread("image.jpg", CV_LOAD_IMAGE_COLOR); if (image.empty()) { // 图片为空 printf("图片为空\n"); } else { // 图片为空 printf("图片为空\n"); } ``` 以上是使用opencv c判断图片是否为空的两种方法。第一种方法使用IplImage指针,第二种方法使用Mat对象。两种方法都能达到同样的效果,根据个人习惯和项目需求选择其中之一即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值