【碎片知识(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/2和image.rows/2代表把原始图像的列数和高度除2。
平台: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/2和image.rows/2代表把原始图像的列数和高度除2。
相关文章推荐
- 【碎片知识(5)· 计算机视觉基础】自定义均值滤波器和OpenCV中blur平均滤波函数的对比
- opencv2实现n张图像拼接_stitcher具体之代码2(简化版)_计算机视觉大作业2
- 【碎片知识(6)· 计算机视觉基础】基于背景提取的目标跟踪算法
- 【碎片知识(7)· 计算机视觉基础】基于光流估计的目标跟踪
- opencv2实现n张图像拼接_stitcher具体之代码1_计算机视觉大作业1
- OpenCV3计算机视觉Python语言实现(三):使用OpenCV3处理图像
- 计算机视觉之OpenCV教程 --- Mat图像类基础(二)
- opencv开发笔记(八):利用感兴趣区域ROI实现图像叠加
- OpenCV2 图像处理与计算机视觉(一)—— 去除一幅二值化图像中的椒盐噪声
- 图像处理与计算机视觉基础,经典以及最近发展
- OpenCV 3计算机视觉 Python语言实现(第2版)(含示例代码)
- 图像处理与计算机视觉:基础,经典以及最近发展(1)序
- 图像处理与计算机视觉:基础,经典以及最近发展
- 图像处理与计算机视觉:基础,经典以及最近发展(3)计算机视觉中的信号处理与模式识别
- 利用C语言实现计算机图像处理的方法
- 图像处理与计算机视觉基础,经典以及最近发展
- 利用Qt与OpenCV简单实现摄像头图像捕捉
- 图像处理与计算机视觉基础,经典以及最近发展(二)
- 图像处理基础(2):自适应中值滤波器(基于OpenCV实现)