基本图像操作
数字图像是机器视觉应用的主要处理对象,而视频是由连续的图像构成的,
读取和显示以及存储图像
openCV中的HightGUI模块提供了读取不同类型图像,视频和相机的接口
using OpenCvSharp;/* * 读取图片 * @param string fileName 图像文件名 * @param ImreadModes flag 读取时采用的色彩模式 * @return Mat */Mat img = Cv2.ImReadstring path, ImreadModes flag;//获取图片的尺寸Size img.Size/** * 显示图片 * @param string fileName 图像文件名 * @param Mat data 读取时采用的色彩模式 */Cv2.ImShowstring fileName, Mat data;/** * 等待按键响应 * 为了方便显示窗口查阅,等待按键响应后再退出图片查看 */Cv2.waitKeyint delay = 0;/** * 写入图片 * @param string fileName 图像文件名 * @param Mat data 读取时采用的色彩模式 */Cv2.ImWritestring fileName, Mat data;/** * 销毁所有的窗口 * 可以忽略,OpenCV自行处理 */Cv2.DestroyAllWindows;
颜色空间转换
更多内容请查看
注意: openCV的RGB颜色通道顺序为BGR即蓝色、绿色和红色
using OpenCvSharp;/** * 颜色转化 * @param Mat src 输入图 * @param Mat dst 输出图 * @code int 颜色转化码值 * @dstCn int 目标函数的通道图 */Cv2.cvtColorMat src , Mat dst, int code, int destCn;
图像的几何变换
坐标变换
内容请参考几何变换
using OpenCvSharp;/** * 尺寸变换 * @param Mat src 输入图 * @param Mat dst 输出图 * @param Size dsize 输出图的大小,如果为0,则根据原图和缩放倍数计算 * @param double fx 水平缩放因子 * @param double fy 垂直缩放因子 * @param interpolationint 差值算法,包括Nearest 最近邻值插值算法、Linear 线性插值 */Cv2.ResizeMat src, Mat dest, Size dsize, double fx , double fy, int interpolation
using OpenCvSharp;/** * 仿射变换 * @param Mat src 输入图 * @param Mat dst 输出图 * @param InputArray M 2*3的矩阵 * @param Size dsize 输出图的大小,如果为0,则根据原图和缩放倍数计算 * @param int flag 插值算法 * @param int borderMode 边界填充方式 */Cv2.WarpAffineMat src, Mat dest, InputArray M,Size dsize, int flag , int borderMode

灰度内插
对空间变换后的像素赋予灰度值
内插是用已知数据估计未知位置的数据,常见的差值算法有最临近值插值、双线性插值、二次立方插值和三次方插值等
例如:2个像素×2个像素的原始灰度为
[50150100200]
使用最邻近插值放大2倍后为
50501501505050150150100100200200100100200200
使用双线性插值
5075125150638813816388113163188100125175200
直方图均衡化
理论部分请参考文章

文字标注
using OpenCvSharp;Cv2.PutText;Cv2.Circle;Cv2.Ellipse;Cv2.RectRange;Cv2.Line;视频操作
如果说单张图片是二维数据,则视频是三维数据,它增加了时间维度z;
using OpenCvSharp;VideoCapture cap = Cv2.VideoCapture;cap.open;Cv2.WriteVideo;Cv2.RectRange;Cv2.Line;