本篇文章为大家展示了使用OpenCvSharp如何实现将垫对象像素化,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
自定义一个垫对象,然后输出像素值(像素值基本都在0 - 255之间,图像为三通道)
<强>代码强>
公共静态孔隙F1 () { 标量s=新的标量(0,0,255);//定义一个三通道颜色(红色) 垫m=新垫(100、100、MatType。CV_8UC3 s);//矩阵数据类型(深度和通道数)MatType/* *小图像的每一个像素值我们都是知道的,可以输出查看,验证算法正确性,然后在跑大图 *///打印100 * 100席对象像素值 for (int i=0;我& lt;m.Height;我+ +) { for (int j=0;j & lt;m.Width;j + +) { Vec3b颜色=m.Get(i, j);//新Vec3b ();颜色通道类型(字节的三元组),直接视同得到泛型方法返回指定类型//单独获取指定通道像素//颜色。Item0=m.Get (i, j) .Item0;//R//颜色。Item1=m.Get (i, j) .Item1;//G//颜色。第二条=m.Get (i, j) .Item2;//B Console.Write(颜色。Item0 +“;“;+颜色。Item1 +“;“;+ color.Item2); Console.WriteLine (“;“);//输出一个换行 } } 使用(新窗口(“M" WindowMode。AutoSize, m)) { Cv2.WaitKey (0); } }
公共静态孔隙F1 (string路径)
{//标量s=新的标量(0,0,255);//垫m=新垫(100、100、MatType。CV_8UC3 s);//矩阵数据类型(深度和通道数)MatType
垫m=新垫(路径,ImreadModes。AnyColor | ImreadModes.AnyDepth);/*
*小图像的每一个像素值我们都是知道的,可以输出查看,验证算法正确性,然后在跑大图
*///打印100 * 100席对象像素值
for (int i=0;我& lt;m.Height;我+ +)
{
for (int j=0;j & lt;m.Width;j + +)
{
Vec3b颜色=m.Get 安全静态void Main (string [] args)
{
字符串imagePath=@" E: \ \ lenna.png"形象;//图片加载路径
Function1 (imagePath);
} ///& lt; summary>///操作指针要加不安全///& lt;/summary>
不安全的公共静态空Function1 (string路径)
{
垫src=https://www.yisu.com/zixun/new垫(路径,ImreadModes.AnyColor);
如果(src.Empty())//判断垫对象是否为空,不过在c#中好像没的用,因为在垫对象初始化的时候找不到图片就直接抛出异常了,但是c++中可以用来判断。
{
Console.WriteLine(“加载图像出错”);
返回;
}/*
c++:
垫dst;
dst=垫(src.Size (), src.Type ());
dst=标量(127、0255);
*///标量s=新的标量(127,0,255);//创建一个颜色标量(红色)c#中是一个对象//垫dst=new垫(src.Size (), src.Type (), s);//创建一个与src的大小和类型一直的图片矩阵//垫dst=src.Clone ();//克隆:得到一个完全拷贝的对象
新垫垫dst=();
src.CopyTo (dst);//拷贝一个与克隆类似,但是dst必须先新出的来//Cv2。CvtColor (dst src ColorConversionCodes.BGRA2GRAY);//转为灰度图
控制台。WriteLine (“InputImage颜色通道:{0}”,src.Channels ());//颜色通道数
控制台。WriteLine(“创建颜色通道:{0}”,dst.Channels ());//颜色通道数//指针获取值(根据下标),第一个像素值
IntPtr c=dst.Ptr (0);//垫对象的Ptr方法:返回指向指定矩阵行的指针。
c1=(字节字节* *)c;//像素值在c#中是字节类型,在c++中是uchar类型//字节* cc=(字节*)dst.Ptr (0);
控制台。WriteLine(“第一个像素值:{0}”,* c1);
int行=dst.Rows;//行
int clo=dst.Cols;//列
控制台。WriteLine(“行:{0};关口:{1}”,行,clo);
使用(新窗口(“创建”,WindowMode。FreeRatio, dst))
使用(新窗口(“InputImage”, WindowMode。FreeRatio, src))
{
Cv2.WaitKey (0);
}
}
使用OpenCvSharp如何实现将垫对象像素化