001vs项目配置opencv

0.项目配置opencv

  • 01.下载opencv(官网,或百度云)

    链接:https://pan.baidu.com/s/1g9LEdIpSIr6INjAF1aG1pA 提取码:crav

    下载的文件包含内容:

    opencv.rar 编译好的OpenCV (含 opencv_contrib 扩展模块) cmake-3.20.1-windows-x86_64.msi opencv_contrib-4.5.2.zip opencv-4.5.2-vc14_vc15.exe MSBuild.rar data 一些学习OpenCV用到的图片等

  • 02.将文件夹中的目录添加到环境变量path里

     

     

  • 03.配置vs项目

    打开属性管理器 【视图】–> 【其他窗口】–> 【属性管理器】

    修改 Microsoft.Cpp.x64.user

    没有 Microsoft.Cpp.x64.user 的 是因为用户文件夹下 AppData\Local\Microsoft 缺少 MSBuild, 没有的可以下载放入即可 百度网盘下载地址:https://pan.baidu.com/s/1wgocebYkTL7XxDxj05QnXg 提取码:hgbh

  • 04.在VC++中

    在包含目录(opencv\build\include、opencv\build\include\opencv2)、

    库目录(opencv\build\x64\vc15\lib)中添加相关文件

     

     

在连接器(输入)中添加依赖项:opencv_world452d.lib

(在Debug模式下用的,所以添加了带 d de, 不带 d 的是 Release 模式下用的)

 

1.加载图像(cv::imread)

imread加载图像文件成为一个Mat都对象,函数有两个参数(文件名名称,图像类型)

图像类型选择:

  • lIMREAD_UNCHANGED (<0) 表示加载原图,不做任何改变

  • lIMREAD_GRAYSCALE ( 0)表示把原图作为灰度图像加载进来

  • lIMREAD_COLOR (>0) 表示把原图作为RGB图像加载进来

    (OpenCN支持JPG PNG TIFF等常见格式)

 

2.显示图像(cv::namedWindows cv::imshow)

  • namedWindows创建一个OpenCV窗口,无需销毁,如:namedWindow("Window Title",WINDOW_AUTOSIZE)

    lWINDOW_AUTOSIZE会自动根据图像大小,显示窗口大小,不能人为改变窗口大小

  • imshow(窗口名称,Mat对象)

 

3.修改图像(cv::cvtColor)

将图像从彩色空间转换到另一个彩色空间

参数(源图像,转换之后的图像,彩色变换),彩色变换有:COLOR_BGR2HLS、COLOR_BGR2GRAY等

lcvtColor( image, gray_image, COLOR_BGR2GRAY );

 

 

4.保存图像(cv::imwrite)

  • 保存到指定目录

  • 只有8位、16位的PNG、JPG、Tiff文件格式而且是单通道或者三通道的BGR的图像才可以通过这种方式保存

  • 保存PNG格式的时候可以保存透明通道的图片

  • 可以指定压缩参数

 

 1 #include<opencv2/opencv.hpp>
 2 #include<highgui.hpp>
 3 
 4 using namespace cv;
 5 
 6 int main001(int argc, char** argv)
 7 {
 8     //加载图像
 9     Mat image = imread("C:\\Users\\aber\\Desktop\\data\\baboon.jpg");
10     //对图像进行所有像素用(255-像素值)
11     Mat invertImage;
12     image.copyTo(invertImage);
13     //获取图像宽、高
14     int channels = image.channels();
15     int rows = image.rows;//
16     int cols = image.cols * channels;//
17     if (image.isContinuous()) {
18         cols *= rows;
19         rows = 1;
20     }
21 
22     //每个像素点的每个通道255取反
23     uchar* p1;
24     uchar* p2;
25     for (int row = 0; row < rows; row++) {
26         p1 = image.ptr<uchar>(row);//获取像素指针
27         p2 = invertImage.ptr<uchar>(row);
28         for (int col = 0; col < cols; col++) {
29             *p2 = 255 - *p1;
30             p2++;
31             p1++;
32         }
33     }
34 
35     //创建窗口
36     namedWindow("Test",1);
37     namedWindow("Invert Image", 1);
38 
39     //显示图像
40     imshow("Test", image);
41     imshow("Invert Image", invertImage);
42 
43 
44 
45     //关闭
46     waitKey(0);
47     destroyWindow("Test");
48     destroyWindow("Invert Image");
49 
50     return 0;
51 
52 }

 

 

 

posted @ 2021-06-03 19:54  阿尔飞  阅读(80)  评论(0)    收藏  举报