欢迎光临散文网 会员登陆 & 注册

机器视觉OpenCVSharp图像叠加

2023-03-15 07:27 作者:Halcon仙女驻凡大使  | 我要投稿

图像叠加

   这里会涉及到一个函数copyto( ):Copy the matrix to another one.将矩阵复制到另一个。

    publicvoid CopyTo(Mat m);    //原封不动的叠加上去

  publicvoid CopyTo(Mat m, Mat mask);   //使用掩码进行叠加

------------------------CopyTo(Mat m) --------------------- Mat img9=newMat(@"D:\Users\FengJianming\C#\OpenCVSharp\OpenCVSharp\hk.jpg",ImreadModes.AnyColor);

Rect rectROI = newRect(500, 500, 300, 400);   //使用rect确定兴趣区域

Mat imgROI = newMat(img9, rectROI);   //新建一个mat,把ROI内的图像加载到里面去

Rect rect1 = newRect(0, 0, imgROI.Cols, imgROI.Rows);   // //定义一个矩形,前2个参数是要放的位置起点,后面是插入图片的大小

 Mat pos = newMat(img9, rect1);

 imgROI.CopyTo(pos);  //将ROI区域的图像叠加至目标位置

CV2.ImShow("img", img9);

Mat img9= newMat(@"D:\Users\FengJianming\C#\OpenCVSharp\OpenCVSharp\hk.jpg",ImreadModes.AnyColor);

  Mat imgROI=newMat(@"D:\Users\FengJianming\C#\OpenCVSharp\OpenCVSharp\logo.jpg",ImreadModes.Color);//读取贴图

Mat mask =imgROI.CvtColor(ColorConversionCodes.BGR2GRAY);//新建一个掩码接收变成灰度图的贴图

CV2.Threshold(mask, mask, 125,255, ThresholdTypes.BinaryInv);//灰度图二值化,高于125的变成黑色,其它白色

Rect rect = newRect(0, 0, imgROI.Cols,imgROI.Rows);//复制的目标位置

Mat pos = newMat(img9, rect);

imgROI.CopyTo(pos,mask);//掩码黑色的区域不复制

CV2.ImShow("mask", mask);

CV2.ImShow("img9", img9);

CvtColor是颜色转换,颜色空间转换的函数,例如把BGR(注意opencv是BGR而不是RGB)和HSV互转。当然彩色变灰色也可以。

Threshold阈值函数,五个参数分别是源,目的地,阈值,最大值,阈值类型。阈值类型有binary和binaryinv,binary的时候是某个像素的灰度大于阈值的时候,这个像素的灰度变成最大值,小于的时候则为0;binaryinv的时候与之相反。




机器视觉OpenCVSharp图像叠加的评论 (共 条)

分享到微博请遵守国家法律