您的位置:首页 > 理论基础

【碎片知识(1)· 计算机视觉基础】利用OpenCV实现图像的“Hello, world!”

2018-01-16 17:43 701 查看
系统:Windows 10

平台:Visual Studio 2017
工具:OpenCV 3.0
说明:虽然只是图像学习中最初级的一个小程序,除了mark一下小小的成就感之外,这个小程序中也有一些初学者很容易犯的错误。第一次运行需要加载符号选项,时间可能长一些,之后再运行就快了。另,总用Lena不好吧,都说“要有自己的风格”,我觉得TEDDY BEAR就不错~~~

言归正传,因为本程序同时将使用其他函数,并对比其效果,所以还是回来找我们的Lena小姐姐吧←_←

/* ********************************************************************************************
任务目标:
1. 利用OpenCV显示图像。
2. 利用OpenCV中的resize、GaussianBlur、cvtColor和threshold函数
实现缩放、平滑、颜色空间转换和阈值变化功能。
********************************************************************************************* */

#include <OpenCV2/opencv.hpp>

using namespace cv;

int main(void)
{
char *fn = "E:\\Study\\Computer vision\\OpenCV Test Workshop\\CV002\\lena.jpg";

Mat image, image2, image3, image4, image5;

image = imread(fn);

resize(image, image2, Size(image.cols / 2, image.rows / 2)); // 图像改变大小(resize函数)

GaussianBlur(image, image3, Size(9, 9), 0); // 高斯平滑(GaussianBlur函数)

cvtColor(image, image4, COLOR_BGR2GRAY, 0); // 颜色空间转换(cvtColor函数)

threshold(image, image5, 50, 255, THRESH_BINARY); // 阈值变化(threshold函数)

imshow("Hello, world!", image); // 原图像
imshow("resize", image2); // resize后的图像
imshow("GaussianBlur", image3); // GaussianBlur后的图像
imshow("cvtColor", image4); //cvtColor后的图像
imshow("threshold", image5); //threshold后的图像
waitKey(0);
}

1.“using namespace cv”的作用:相当于提前声明使用命名空间cv,这样在调用相关资源时就不需要再加上cv。(如:Mat,否则用cv::Mat。)
2.“waitKey”的作用:使程序暂停,不会执行完直接闪退。
3.  在路径输入中,初学者可能会直接将地址复制过来,但是注意不是“\”,而是“\\”。
4.  解决方案平台应根据自己的系统进行调整,否则会报错,在这里选用的是“x64”平台。
5.  对于出现“无法查找和打开PDB文件”的情况,大体有两种可能性:
     (1)未启动源服务器支持,应对方法如下:
              工具 >> 属性 >> 调试 >> 常规,在右侧的选项列表里选中“启动源服务器支持”,忽略系统警告提示。(毕竟MS的东西,习惯就好。)
     (2)还有一种可能性就是除了这个在运行的项目,另一个项目也利用了同一个目标文件,导致imread无法对目标文件进行操作,此时要关闭其他运行项目以解除占用。

 6.  image.cols/2image.rows/2代表把原始图像的列数和高度除2。









内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  OpenCV
相关文章推荐