1.1 VS2017开发环境搭建html
1)、下载软件包python
2)、配置环境变量编程
配置win10系统环境变量,把下面路径添加到path。函数
D:\WORK\5.OpenCV\opencv\build\x64\vc15\binui
3)、vs属性配置编码
配置包含路径spa
D:\WORK\5.OpenCV\opencv\build\include\opencv3d
D:\WORK\5.OpenCV\opencv\build\include\opencv2code
配置库目录
D:\WORK\5.OpenCV\opencv\build\x64\vc15\lib
配置连接器输入附加依耐项
opencv_world343d.lib(在D:\WORK\5.OpenCV\opencv\build\x64\vc15\lib下)
1.2 python3环境搭建
python开发环境安装比较简单,网上不少例子,不在赘述,基本上pip install opencv-python便可。
例:1:读取图像
#include <opencv2/opencv.hpp> #include <iostream> using namespace std; using namespace cv; int main() { Mat pic1 = imread("D:/WORK/5.OpenCV/LeanOpenCV/pic_src/pic1.bmp"); namedWindow("pic1"); imshow("pic1", pic1); waitKey(0); }
例2:写图像
#include <opencv2/opencv.hpp> #include <iostream> using namespace std; using namespace cv; int main() { Mat mat = Mat(300, 500, CV_8UC1); cout << "rows="<<mat.rows << ",cols=" << mat.cols << endl; for (int i = 0; i < mat.rows; i++) { uchar* row = mat.ptr<uchar>(i); for (int j = 0; j < mat.cols; j++) { row[j] =(uchar) ((j / 20 ) * 10); } } imshow("pic1", mat); imwrite("D:/WORK/5.OpenCV/LeanOpenCV/pic_src/mat.bmp", mat); waitKey(0); }
Mat有3个重要的方法:
Mat mat = imread(const String* filename, int flags); 读取图像 imshow(const string winName, InputArray mat); 显示图像 imwrite(const string& filename, InputArray img); 储存图像
1) imread
Mat imread(const String& filename,int flags = IMREAD_COLOR) enum { IMREAD_UNCHANGED = -1, // 8 位,彩色或非彩色 IMREAD_GRAYSCALE = 0, // 8 位,灰度 IMREAD_COLOR = 1, //未改变深度、颜色 IMREAD_ANYDEPTH = 2, //任意深度,未改变颜色 IMREAD_ANYCOLOR = 4, //未改变深度,任意颜色 IMREAD_LOAD_GDAL = 8 // 使用 gdaL 驱动程序 };
由于flags是int型的,若是不在上面的枚举中取值,则能够这样进行。
flags>0:返回3个通道的彩色图像
flags=0:返回灰度图像
flags<0:返回包含Alpha通道的加载的图像
注意,若是使用彩色模式输入图像,解码后顺序是BGR,而不是一般的RGB。
2) imshow和namedWindow
imshow函数前没有namedWindow函数则自动执行一个,可是该函数默认建立窗口的参数为cv2.WINDOW_AUTOSIZE,窗口大小会自动适应所显示的图像,而且不能改变窗口的大小。
cv2.namedWindow("demo" , cv2.WINDOW_NORMAL)
cv2.imshow("demo" , img)
这样生成的窗口时能够调整大小的,经过改变参数能够获得不一样功能的窗口.
窗口大小能够改变 cv2.WINDOW_NORMAL
窗口大小不能够改变 cv2.WINDOW_AUTOSIZE
窗口大小自适应比列 cv2.WINDOW_FREERATIO
窗口大小保持比例 cv2.WINDOW_KEEPRATIO
显示色彩变成暗色 cv2.WINDOW_GUI_EXPANDED
3) imwrite
CV_EXPORTS_W bool imwrite( const String& filename, InputArray img,
const std::vector<int>& params = std::vector<int>());
第一个参数const String& filename表示须要写入的文件名,必需要加上后缀。
第二个参数InputArray img表示Mat类型数据。
第三个参数const std::vector& params表示为特定格式保存的参数编码,它有一个默认值std::vector< int >(),通常状况下不用写。
•对于JPEG格式的图片,这个参数表示从0-100的图片质量(CV_IMWRITE_JPEG_QUALITY),默认值是95.
•对于PNG格式的图片,这个参数表示压缩级别(CV_IMWRITE_PNG_COMPRESSION)从0-9.较高的值意味着更小的尺寸和更长的压缩时间而默认值是3.
•对于PPM,PGM或PBM格式的图片,这个参数表示一个二进制格式标志(CV_IMWRITE_PXM_BINARY),取值为0或1,而默认值为1.
vector<int> compression_params; compression_params.push_back(CV_IMWRITE_JPEG_QUALITY); compression_params.push_back(100); //图片质量 imwrite("test2.jpg", img, compression_params);
opencv 一个namedWindow,imshow出现两个窗口问题?
连接器-输入-附加依赖项,opencv_worldXXX.lib和opencv_worldXXXd.lib,只须要配置一个就行了。
一、《OpenCV3 编程入门》 , 电子工业出版社,毛星雨著
尊重原创技术文章,转载请注明。