001vs项目配置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
-
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等
l
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 }