赞
踩
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Emgu.CV; using Emgu.CV.Structure; using Emgu.CV.CvEnum; using Emgu.Util; using System.Drawing; namespace Lesson11 { class Program { static void Main(string[] args) { #region ROI区域的设置与保存 //Mat img = CvInvoke.Imread("1.jpg"); //CvInvoke.Imshow("img", img); Mat ROI = new Mat(img, new Rectangle(213, 236, 494, 246)).Clone();//方法一,注意浅拷贝 //Mat ROI = new Mat(img, new Range(236, 236 + 246), new Range(213, 213 + 494)).Clone();//方法二 //CvInvoke.MedianBlur(ROI, ROI, 15); //中值滤波 //CvInvoke.Imshow("ROI", ROI); //CvInvoke.Imwrite("roi.jpg", ROI); //CvInvoke.WaitKey(0); #endregion #region 直接融合 //Mat img = CvInvoke.Imread("1.jpg"); //Mat logo = CvInvoke.Imread("opencv.jpg"); CvInvoke.Imshow("img", img); CvInvoke.Imshow("logo", logo); CvInvoke.WaitKey(0); //Mat ROI = new Mat(img, new Rectangle(10, 10, logo.Cols, logo.Rows)); ROI = logo.Clone(); //将logo的所有信息拷贝到ROI //logo.CopyTo(ROI); //将logo的数据区拷贝到ROI(位置) //CvInvoke.Imshow("roi", ROI); //CvInvoke.Imshow("result", img); //CvInvoke.WaitKey(0); #endregion #region 掩码融合 //Mat img = CvInvoke.Imread("1.jpg"); //Mat logo = CvInvoke.Imread("opencv.jpg"); CvInvoke.Imshow("src", img); CvInvoke.Imshow("logo", logo); //Mat mask = new Mat();//8位单通道图像 //CvInvoke.CvtColor(logo, mask, ColorConversion.Bgr2Gray);//彩色转灰度图 //CvInvoke.BitwiseNot(mask, mask); //逻辑非 //CvInvoke.Imshow("bitwise_not", mask); //CvInvoke.Threshold(mask, mask, 100, 255, ThresholdType.Binary); //二值化 //CvInvoke.Imshow("threshold", mask); //Mat ROI = new Mat(img, new Rectangle(10, 10, logo.Cols, logo.Rows)); //logo.CopyTo(ROI, mask); //将logo的数据区拷贝到ROI //CvInvoke.Imshow("roi", ROI); //CvInvoke.Imshow("result", img); //CvInvoke.WaitKey(0); #endregion #region 自己创建掩码 //Mat img = CvInvoke.Imread("1.jpg"); //Mat logo = CvInvoke.Imread("lena.jpg"); CvInvoke.Imshow("src", img); CvInvoke.Imshow("logo", logo); //Mat mask = Mat.Zeros(logo.Rows, logo.Cols, DepthType.Cv8U, 1); //创建和logo图片同样大小的全黑图像 //CvInvoke.Circle(mask, new Point(logo.Rows / 2, logo.Cols / 2), 180, new MCvScalar(255), -1); //Mat ROI = new Mat(img, new Rectangle(0, 0, logo.Cols, logo.Rows)); //logo.CopyTo(ROI, mask);//将logo的数据区拷贝到ROI //CvInvoke.Imshow("result", img); //CvInvoke.WaitKey(0); #endregion Mat img = CvInvoke.Imread("1.jpg"); Mat logo = CvInvoke.Imread("lena.jpg"); CvInvoke.Imshow("src", img); CvInvoke.Imshow("logo", logo); Mat mask = CvInvoke.Imread("mask.jpg", 0); //以灰度模式加载 CvInvoke.Threshold(mask, mask, 200, 255, ThresholdType.Binary); Mat ROI = new Mat(img, new Rectangle(150, 20, logo.Cols, logo.Rows)); logo.CopyTo(ROI, mask); CvInvoke.Imshow("result", img); CvInvoke.WaitKey(0); } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。