现在的位置: 首页 > 综合 > 正文

学习Opencv2之载入一幅图像并进行平滑处理

2019年03月09日 ⁄ 综合 ⁄ 共 1916字 ⁄ 字号 评论关闭

平台:32位Win7操作系统+VS2012+OpenCv2.4.4  


64位Win7操作系统+VS2010+OpenCv2.4.6  也可以运行


实验目的:实现对一幅图像的显示,并对图像进行平滑处理

问题描述:

1)可以显示图像,执行报错

错误提示:

1>main.obj : error LNK2019: 无法解析的外部符号 _cvSmooth,该符号在函数 "void __cdecl exemple2(struct _IplImage *)" (?exemple2@@YAXPAU_IplImage@@@Z) 中被引用 
1>F:\vs2010\Project\OpenText\Debug\OpenText.exe : fatal error LNK1120: 1 个无法解析的外部命令

开始在网上找了有关的解决方法,发现很多opencv友也遇到了这样的问题,无法解析,我按照他们的方法操作:属性管理器——>Microsoft.Cpp.Win32.user(点击右键,属性)——>链接器——>输入中的附加依赖项添加opencv_video244d.lib后,可惜仍然没有解决问题。所以我判断是cvSmooth这个函数调用来源出现问题。可是就是不知道如何解决。(最后解决了好像和opencv_video244d.lib没有关系,我把它从附加依赖项中删除了也不影响它的运行实现)。

我尝试着在包含目录里添加这些项目,像imgproc,video等项,操作:属性管理器——>Microsoft.Cpp.Win32.user(点击右键,属性)——>VC++目录——>包含目录中添加两条路径D:\OpenCV2.4.4\opencv\build\include\opencv2    D:\OpenCV2.4.4\opencv\build\include\opencv2\imgproc,就没有在报出上面的错误,可是新的错误又出现了。

2)系统报错

 警示报错:显示系统报错,无法启动此程序,因为计算机中丢失opencv_imgproc244d.dll。尝试重新安装该程序以解决此问题。

丢失opencv_imgproc244d.dll。想到之前也遇到过这样的问题,一直到没有解决,以为是要下载一个.dll文件,可惜在网上找了好久都没有找到,可能使我用的vs2012比较新的版本,所以没有。实在没有办法只能去安装文件夹中去找找看,结果还真被我找到了。嘻嘻…………开心。D:\OpenCV2.4.4\opencv\build\x86\vc10\bin,于是我把opencv_imgproc244d.dll复制到C:\Windows\System32,问题就解决了,图像可以正确的输出了。

在64位Win7操作系统+VS2010+OpenCv2.4.6  下,我没有把(opencv_imgproc244d.dll复制到C:\Windows\System32)一样可以运行。要是不行,可能是opencv库没有配置好。

代码附件:

#include "stdafx.h" 
#include "highgui.h" 
#include "cv.h"

void example2_4(IplImage* image) 
 { cvNamedWindow("Example4-in"); 
   cvNamedWindow("Example4-out"); 
   cvShowImage("Example4-in",image); 
   IplImage* out=cvCreateImage( 
    cvGetSize(image), 
    IPL_DEPTH_8U, 
    3 
   ); 
  cvSmooth(image,out,CV_GAUSSIAN,3,3); 
   cvShowImage("Example4-out",out); 
   cvReleaseImage(&out); 
   cvWaitKey(0); 
   cvDestroyWindow("xEample4-in"); 
   cvDestroyWindow("Example4-out"); 
 } 
 

int main(int argc, char ** argv) 

 IplImage* img=cvLoadImage("food.jpg"); 
 cvNamedWindow("Example1",CV_WINDOW_AUTOSIZE); 
 cvShowImage("Examples1",img); 
 example2_4(img); 
 cvWaitKey(0); 
 cvReleaseImage(&img); 
 cvDestroyWindow("Example1"); 
}

试验结果展示:

抱歉!评论已关闭.