OpenCVSharp 入门
了解对象和图像处理编程的开发人员应该能够轻松地学会如何使用OpenCVsharp。
获得OpenCVSharp
要获得OpenCVSharp,要使用NuGet下载opencvsharp,它是一个强大的.NET封装库,提供了很多基础应用方面的功能和类。
设置环境
要开始使用OpenCVsharp,要将OpencvSharp添加到项目中,右键引用选择管理NuGet程序包,
(这里创建的项目为C# 控制台应用)
在输入框搜索OpencvSharp,选择OpenCvSharp3-AnyCPU安装
下载完成后需要将OpenCvSharp引入:
图像类型
预定义:
CV_<bit_depth>(S|U|F)C<number_of_channels>
- bit_depth:
比特数,图像每一个像素点在内存空间所占的空间大小是8bite-8位,所以它对应的就是CV_8 - S|U|F–S:
代表—signed int—有符号整形
U–代表–unsigned int–无符号整形
F–代表–float---------单精度浮点型 - C<number_of_channels>
代表—一张图片的通道数,比如:
灰度图片–grayImg是–单通道图像
RGB彩色图像是–3通道图像
带Alph通道的RGB图像(RGBA)是–4通道图像
在OpenCvSharp中常用的图像颜色空间为B、G、R
常用基本图像类型
图像类型 | MatType.CV_8UC1 | MatType.CV_8UC3 | MatType.CV_8UC4 |
---|
/ | 8位单通道 | 8位三通道 | 8位四通道 |
Mat类型为OpenCv图像类
图像可以看作一个矩阵
X,Y轴从左上角开始
例如下面是一个三通道图像
0,0(B,G,R) | 1,0(B,G,R) | 2,0(B,G,R) | 3,0(B,G,R) | 4,0(B,G,R) | 5,0(B,G,R) | 6,0(B,G,R) | 7,0(B,G,R) | 8,0(B,G,R) | 9,0(B,G,R) |
---|
0,1(B,G,R) | 1,1(B,G,R) | 2,1(B,G,R) | 3,1(B,G,R) | 4.1(B,G,R) | 5.1(B,G,R) | 6.1(B,G,R) | 7.1(B,G,R) | 8.1(B,G,R) | 9.1(B,G,R) |
0,2(B,G,R) | 1,2(B,G,R) | 2,2(B,G,R) | 3,2(B,G,R) | 4,2(B,G,R) | 5,2(B,G,R) | 6,2(B,G,R) | 7,2(B,G,R) | 8,2(B,G,R) | 9,2(B,G,R) |
0,3(B,G,R) | 1,3(B,G,R) | 2,3(B,G,R) | 3,3(B,G,R) | 4,3(B,G,R) | 5,3(B,G,R) | 6,3(B,G,R) | 7,3(B,G,R) | 8,3(B,G,R) | 9,3(B,G,R) |
0,4(B,G,R) | 1,4(B,G,R) | 2,4(B,G,R) | 3,4(B,G,R) | 4,4(B,G,R) | 5,4(B,G,R) | 6,4(B,G,R) | 7,4(B,G,R) | 8,4(B,G,R) | 9,4(B,G,R) |
0,5(B,G,R) | 1,5(B,G,R) | 2,5(B,G,R) | 3,5(B,G,R) | 4,5(B,G,R) | 5,5(B,G,R) | 6,5(B,G,R) | 7,5(B,G,R) | 8,5(B,G,R) | 9,5(B,G,R) |
0,6(B,G,R) | 1,6(B,G,R) | 2,6(B,G,R) | 3,6(B,G,R) | 4,6(B,G,R) | 5,6(B,G,R) | 6,6(B,G,R) | 7,6(B,G,R) | 8,6(B,G,R) | 9,6(B,G,R) |
0,7(B,G,R) | 1,7(B,G,R) | 2,7(B,G,R) | 3,7(B,G,R) | 4,7(B,G,R) | 5,7(B,G,R) | 6,7(B,G,R) | 7,7(B,G,R) | 8,7(B,G,R) | 9,7(B,G,R) |
0,8(B,G,R) | 1,8(B,G,R) | 2,8(B,G,R) | 3,8(B,G,R) | 4,8(B,G,R) | 5,8(B,G,R) | 6,8(B,G,R) | 7,8(B,G,R) | 8,8(B,G,R) | 9,8(B,G,R) |
0,9(B,G,R) | 1,9(B,G,R) | 2,9(B,G,R) | 3,9(B,G,R) | 4,9(B,G,R) | 5,9(B,G,R) | 6,9(B,G,R) | 7,9(B,G,R) | 8,9(B,G,R) | 9,9(B,G,R) |
测试OpenCvSharp是否可以使用
使用读取图像函数读取本地图像,并显示
Cv2.ImRead();
根据函数介绍我们可以得知ImRead()有一个Mat类型的返回值,用于接收图像。
我们只需要提供一个文件路径即可(如果项目生成方式为Debug图片是放在项目的Debug路径下,可使用文件名进行读取)
例如:
然后使用Cv2.ImShow();Cv2.WaitKey();显示图像
Cv2.ImShow();需要填入一个窗口名称和图像变量
Cv2.WaitKey();让图像保持显示
using OpenCvSharp;
namespace 入门第一章
{
class Program
{
static void Main(string[] args)
{
Mat img = Cv2.ImRead("img/img.jpg");
Cv2.ImShow("img", img);
Cv2.WaitKey();
}
}
}
执行显示
以上都为自己理解整理的内容,可能存在误解
其他文章:
C#计算两线交点
使用C#编写Sockets
查看主页了解更多内容
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)