无法在这两个OpenCV代码中找到差异

Unable to find the difference in these two OpenCV codes?

本文关键字:代码 OpenCV 两个      更新时间:2023-10-16

我正在尝试学习OpenCV,我遇到了这两个代码,两个代码的任务是相同的,只是为了显示图像,但后一个不起作用。我正在使用opencv2.4.6和visualstudio12

第二个没有加载图像,但显示错误,说没有找到图像

 #include "cv.h"
 #include "highgui.h"
int main() // this code works
{
   IplImage* newImg;
   newImg = cvLoadImage("boxing.jpg", 1);
   cvNamedWindow("Window", 1);
   cvShowImage("Window", newImg);
   cvWaitKey(0);
   cvDestroyWindow("Window");
   cvReleaseImage(&newImg);
   return 0;
 }

#include <opencv2corecore.hpp>
#include <opencv2highguihighgui.hpp>
int main() // this code doesn't works
{
 Mat image;
 image = imread("boxing.jpg");
 namedWindow("original");
 imshow("original",image);
 cvWaitKey(5000);
 return 0;
}

只需添加

using namespace cv;

在CCD_ 1语句之后和CCD_。

为什么

所有OpenCV类和函数都在名称空间cv中声明。或者,您也可以使用范围解析操作符,如cv::Matcv::imshow等来访问OpenCV功能。

不要将C函数与C++混合使用。当使用OpenCv 2.0以上版本(C++)时,您应该调用:

cv::WaitKey(5000);

因为名称中以"cv"开头的函数和类已经过时。

信不信由你,你有一个链接器问题。

cvLoadImage()获取char*,imread()获取std::字符串。如果不能使用后者,那是由于一些std/c++lib链接错误。

请格外仔细地检查,如果您正在根据调试构建链接发布库(或反过来),如果您不小心更改了c-运行时间(多线程dll)。