Opencv3读入图片为空(imread失效)


利用NuGet安装了Opencv3.1的环境,版本信息如下:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="opencv3.1" version="1.0" targetFramework="native" />
  <package id="opencv3.1.redist" version="1.0" targetFramework="native" />
</packages>


如下调用摄像头代码可以运行:

#include <opencv2/highgui/highgui.hpp>  
#include <opencv2/imgproc/imgproc.hpp>  
#include <opencv2/core/core.hpp>  
using namespace cv;
 
int main()
{
VideoCapture cap(0);
Mat frame;
while (1)
{
cap >> frame;
imshow("调用摄像头", frame);
waitKey(30);
}
return 0;
}



但是读入图片就出错了,代码如下:

#include <opencv2/opencv.hpp>  
using namespace cv;

int main()
{
	//VideoCapture cap(0);
	Mat frame=cv::imread("1.jpg");	
	imshow("", frame);
	waitKey(-1);
	return 0;
}

运行情况见下图:


无论是Debug或者Release,读入的图片都为空,且路径没有任何问题……


之后换成了X64就可以了…



昨天因为这个捣鼓了半天,初步确定为NuGet包的问题…


但X64好像能正常运行,所以就先这样了……这真的是第一次遇到X64可以运行但X86不能运行的情况…


祝Opencv使用愉快~




### 回答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
发出的红包

打赏作者

朱铭德

五毛也是爱٩(●´৺`●)૭

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值