opencv学习笔记(2017年8月21日)之图像腐蚀操作

来源:互联网 发布:大数据涂子沛pdf 编辑:程序博客网 时间:2024/06/05 23:52

最近在看毛星云那本《opencv3编程入门》,但是那本书配套代码,老是在我的vs2017和opencv3.3.0版本里编译出错,一直不知道什么原因,就是图片老是显示灰色,且闪退。不是图片路径读不出来的问题,源代码如下:

运行不成功的代码:

//--------------------------------------【程序说明】-------------------------------------------//      程序说明:《OpenCV3编程入门》OpenCV3版书本配套示例程序03//      程序描述:简单的OpenCV图像腐蚀操作//      开发测试所用操作系统: Windows 7 64bit//      开发测试所用IDE版本:Visual Studio 2010//      开发测试所用OpenCV版本: 3.0 beta//      2014年11月 Created by @浅墨_毛星云//      2014年11月 Revised by @浅墨_毛星云//------------------------------------------------------------------------------------------------//-----------------------------------【头文件包含部分】---------------------------------------//      描述:包含程序所依赖的头文件//---------------------------------------------------------------------------------------------- #include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>//-----------------------------------【命名空间声明部分】---------------------------------------//      描述:包含程序所使用的命名空间//-----------------------------------------------------------------------------------------------  using namespace cv;//-----------------------------------【main( )函数】--------------------------------------------//      描述:控制台应用程序的入口函数,我们的程序从这里开始//-----------------------------------------------------------------------------------------------int main(   ){    //载入原图      Mat srcImage = imread("1.jpg");    //显示原图    imshow("【原图】腐蚀操作", srcImage);    //进行腐蚀操作     Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));    Mat dstImage;    erode(srcImage, dstImage, element);    //显示效果图     imshow("【效果图】腐蚀操作", dstImage);    waitKey(0);     return 0;}

然后,我便在网上重新找了一段代码,竟然编译运行成功了,如下图图1

这是我找到的代码:

运行成功的代码

#include "cv.h"                             //  OpenCV 文件头#include "highgui.h"#include "cvaux.h"#include "cxcore.h"#include "opencv2/opencv.hpp"#include "opencv2/imgproc.hpp"#include <iostream>#include <string>#include "stdafx.h"using namespace cv;using namespace std;int main(int argc, char *argv[]){    Mat m_SrcImg;    //m_SrcImg = imread("C:\\Users\\lidabao\\Desktop\\Lena.bmp");    m_SrcImg = imread("D:\\OpenCVproject\\8_21_2\\main\\main\\1.jpg");    namedWindow("yuantu", 1);    imshow("yuantu", m_SrcImg);    //获取自定义核    Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));    Mat m_ResImg;    //进行腐蚀操作    erode(m_SrcImg, m_ResImg, element);    namedWindow("fushihou", 1);    imshow("fushihou", m_ResImg);    waitKey(0);}

这两个程序一些头文件不同,还有读取时后面代码采用了绝对读取图片的方式。还有就是汉字乱码的问题,在我改成拼音后,运行是成功了,现在我还是有些疑惑的,是不是vs2017对汉字编码存在些bug。

还有最后提醒一下,新建项目最好用英文等ASCII码里的字符,最好不要包含汉字,谁知道会不会以后出各种问题。

阅读全文
0 0
原创粉丝点击