11 2023 档案
摘要:最常用的方式是: Cv2.ImRead() 可以将位图文件转成Mat数据格式 Cv2.ImWrite() 可以将Mat数据格式保存到位图文件. 不通过读写文件作为转换介质的方法: private void testMatToPicture() { var mat = Cv2.ImRead("D:\\
阅读全文
摘要:卷积运算和卷积核 图像运算中经常会碰到卷积运算这个讲法, 初看不知道具体含义, 其实非常简单, 工作原理如下: 首先提供一个小的矩阵, 一般是3*3, 或者是 5*5 或者是 7*7, 一般是方形矩阵, 维度为奇数, 这样中心点可以作为锚点, 矩阵中的元素取值多为很小的整数(或正或负或零), 该矩阵
阅读全文
摘要:直方图可以反映图片的整体统计信息, 使用函数 CalcHist() 实现. 但CalcHist() 统计出的数量信息和图像大小相关, 如果要剔除图像大小因素, 需要做归一化处理, 归一化处理后的信息, 反映出各个颜色值得占比情况, 这样更方便不同size图像做对比, 归一化的函数为 Normaliz
阅读全文
摘要:Mat构造函数中有两组函数传参特别容易传错, 分别是: public Mat(int rows, int cols, MatType type) public Mat(OpenCvSharp.Size size, MatType type) 稍不注意, 我们会认为下面两个mat尺寸相等, var m
阅读全文
摘要:窗体上选择感兴趣ROI区域 在计算机视觉处理中, 通常是针对图像中的一个特定区域进行处理, 有时候这个特定区域需要人来选择, OpenCV 也提供了窗口选择ROI机制. 窗体支持两种选择ROI区域的方法, 一个是单选, 一个是多选, 操作方法如下: 单选: 通过鼠标在屏幕上选择区域, 然后通过"空格
阅读全文
摘要:图像复制 共享数据, 使用 new Mat(srcMat, ...) 和 newMat=srcMat 生成新的Mat都和原Mat共享数据, 也就是说如果修改某一Mat,其他Mat也会随之改变 复制全新的Mat, 使用CopyTo() 和 Clone() 方法将生成一个全新的Mat, 新Mat和原Ma
阅读全文
摘要:PutText() 输出文本 OpenCV5 将支持中文字符的输出, 当前版本OpenCV4原生不支持, 可以使用Contrib包+FreeType方式实现, 不过比较麻烦. 为了省事, 也可以通过将Mat转成bitmap,然后使用GDI方式输出中文字符. 示例代码 /// <summary> //
阅读全文
摘要:图像读取 ImRead() 函数可从文件中读取图像, 并生成一个Mat对象, ImRead() 函数支持绝大多数图像格式. 注意点: 读取后生成的Mat对象, 颜色空间为BGR, 第二参数为读取方式, 常用的方式有: . ImreadModes.Color: 彩色方式读取, 即使原图是4通道或者单通
阅读全文
摘要:channel 和 depth 理解 Channel 是颜色的维度数量, 比如 BGR 的channel为3, BGRA则为4. depth 为单通道的颜色的精度, 比如CV_8U 的 depth为8位, 在OpenCV中, 8位为对应的depth取值为0, 下面是depth取值的枚举: CV_8U
阅读全文