【碎片知识(1)· 计算机视觉基础】利用OpenCV实现图像的“Hello, world!”
程序员文章站
2023-12-27 08:27:57
...
系统: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。