绘图

    class Program
{
static void Main(String[] args)
{
Mat img = new Mat(, , DepthType.Cv8U, );
img.SetTo(new Bgr(, , ).MCvScalar);
//绘制一条黄色,线宽为4 的反锯齿线段
CvInvoke.Line(img, new Point(, ), new Point(, ), new MCvScalar(, , ),,LineType.AntiAlias);
//绘制圆心为200,100,半径为50,线宽为15的红色空心圆
CvInvoke.Circle(img, new Point(, ), , new MCvScalar(, , ), , LineType.AntiAlias);
//绘制左上角200,300宽高为150,100的绿色矩形框
CvInvoke.Rectangle(img, new Rectangle(, , , ), new MCvScalar(, , ), );
//绘制中心为200,200,大小为150,120,旋转40度,颜色为cyan的椭圆
CvInvoke.Ellipse(img, new RotatedRect(new Point(, ), new Size(, ), ), new MCvScalar(, , ), );
//绘制文字
CvInvoke.PutText(img, "CTC", new Point(, ), FontFace.HersheyComplex, , new MCvScalar(, , ), ); CvInvoke.Imshow("draw", img);
CvInvoke.WaitKey(); }
}

效果

使用鼠标绘制矩形

效果如下,使用鼠标中键拖拉矩形框。

中间黑色的控件是ImageBox,没有缩放

        Point pt = new Point();
Mat frame = null;
public Form1()
{
InitializeComponent();
frame=new Mat(imageBox1.Height,imageBox1.Width, DepthType.Cv8U, );
frame.SetTo(new Bgr(, , ).MCvScalar);
CvInvoke.Line(frame, new Point(, ), new Point(, ), new MCvScalar(, , ), , LineType.AntiAlias);
Application.Idle += Run;
} private void Run(object sender,EventArgs e)
{
imageBox1.Image = frame;
} private void imageBox1_MouseDown(object sender, MouseEventArgs e)
{
pt.X = e.X;
pt.Y = e.Y;
} private void imageBox1_MouseUp(object sender, MouseEventArgs e)
{
CvInvoke.Rectangle(frame, new Rectangle(pt.X, pt.Y, e.X-pt.X, e.Y-pt.Y), new MCvScalar(, , ), );
}
}

使用Trackbar调整数值threshold处理

    public partial class Form1 : Form
{ Mat src = null;
Mat dst = new Mat();
string path=@"C:\Users\dell\Pictures\mach.jpg";
public Form1()
{
InitializeComponent();
src = CvInvoke.Imread(path);
imageBox1.Image = src; } private void trackBar1_ValueChanged(object sender, EventArgs e)
{
int value = trackBar1.Value;
CvInvoke.Threshold(src, dst, value, , ThresholdType.Binary);
imageBox1.Image = dst;
} }

Emgu 学习(3) 绘图,使用鼠标绘图,使用trackbar的更多相关文章

  1. 【CITE】利用鼠标绘图C#

    实例018 利用鼠标绘图 光盘位置:光盘\MR\01\018 在常用的画图软件中,用户一般都可以通过鼠标在其中绘图,那么该功能是如何实现的呢?本实例将讲解如何使用C#实现通过拖动鼠标在窗体上绘图的功能 ...

  2. 有关Canvas的一点小事--鼠标绘图

    1.  如何根据鼠标位置获取canvas上对应位置的x,y. 2.  canvas的图糊了,设置宽和高的方式不对. 3.鼠标绘图代码 之前听说过canvas这个元素,但是实际上并没有深入了解过.不过日 ...

  3. matlab学习笔记8 基本绘图命令-三维绘图

    一起来学matlab-matlab学习笔记8 基本绘图命令_6 三维绘图 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等著 ...

  4. C语言实现鼠标绘图

    使用C语言+EGE图形库(Easy Graphics Engine).思路是通过不断绘制直线来实现鼠标绘图的功能,前一个时刻鼠标的坐标作为直线的起点,现在时刻的坐标作为终点(严格意义是线段而不是直线) ...

  5. C#-gdi绘图,双缓冲绘图,Paint事件的触发

    一. 画面闪烁问题与双缓冲技术 1.1 导致画面闪烁的关键原因分析: 1  绘制窗口由于大小位置状态改变进行重绘操作时 绘图窗口内容或大小每改变一次,都要调用Paint事件进行重绘操作,该操作会使画面 ...

  6. Latex--TikZ和PGF--高级文本绘图,思维绘图,想到--得到!

    Latex--TikZ和PGF--高级文本绘图,思维绘图,想到--得到! TikZ和PGF是一种用在TeX上的CLI绘图工具.CLI和GUI是两种常见的绘图方式,前者是所想即所得(WYTIWYG)的, ...

  7. cocos2d-x游戏引擎核心之六——绘图原理和绘图技巧

    一.OpenGL基础 游戏引擎是对底层绘图接口的包装,Cocos2d-x 也一样,它是对不同平台下 OpenGL 的包装.OpenGL 全称为 Open Graphics Library,是一个开放的 ...

  8. QT_8_Qt中的事件处理_定时器事件_定时器类_事件分发器_事件过滤器_绘图事件_高级绘图事件_绘图设备_QFile 文件读写_QFileInfo文件信息

    Qt中的事件处理 1.1. 捕获QLabel中是鼠标事件 1.2. enterevent 鼠标进入 1.3. leaveevent 鼠标离开 1.4. 鼠标按下MyLabel::mousePressE ...

  9. Emgu学习之(四)——图像阈值

    http://www.cnblogs.com/CoverCat/p/5043833.html Visual Studio Community 2015 工程和代码:http://pan.baidu.c ...

  10. Emgu学习之(二)——图像读取、显示、保存

    visual Studio Community 2015 工程和源代码:http://pan.baidu.com/s/1o6u5Fdw 内容 在这篇文章中将提到以下内容: 从文件中读取图像 Image ...

随机推荐

  1. 浮动float和清除clear

    一.浮动(float) float简介 取值:left,right,none,inherit,默认none(不浮动) 可应用与所有元素 没有继承性 不在正常流中,但会影响布局.因为一个元素浮动时,其他 ...

  2. js实现移动端悬浮图标拖拽

    /** * Created by Administrator on 2019/5/23. */ window.onload = function () { var oDiv = document.ge ...

  3. c语言函数分析

    1.vc6的相关使用 1)常用的快捷键 f7    ->编译 f5    ->运行 f9    ->断点 f10    ->单步执行 f11    ->单步执行,可进入函 ...

  4. java+上传大视频文件断点续传

     上周遇到这样一个问题,客户上传高清视频(1G以上)的时候上传失败. 一开始以为是session过期或者文件大小受系统限制,导致的错误. 查看了系统的配置文件没有看到文件大小限制, web.xml中s ...

  5. 13. Ajax技术

    在传统的Web应用模式中,页面中用户的每一次操作都将触发一次返回Web服务器的HTTP请求,服务器进行相应的处理后,返回一个HTML页面的客户端.而在Ajax应用中,页面中的用户的操作将通过Ajax引 ...

  6. Ubuntu完全删除nginx

    1.删除nginx,-purge包括配置文件 sudo apt-get --purge remove nginx 2.移除全部不使用的软件包 sudo apt-get autoremove 3.罗列出 ...

  7. 灰度图像--频域滤波 傅里叶变换之离散傅里叶变换(DFT)

    学习DIP第23天 转载请标明本文出处:http://blog.csdn.net/tonyshengtan,欢迎大家转载,发现博客被某些论坛转载后,图像无法正常显示,无法正常表达本人观点,对此表示很不 ...

  8. 局域网与internet

    凡是由能彼此通信的设备组成的网络就叫互联网,即使仅有两台机器(计算机.手机等),不论用何种技术使其彼此通信,都叫互联网, 所以,互联网有广域网.城域网及局域网之分. 国际标准的互联网写法是intern ...

  9. 关于OpenModelica的编译

    由于工作需要,最近对OpenModelica进行二次开发,由于国内资料也比较少,所以踩了一些坑,近期计划把OpenModelica的编译,msys,及OpenModelica里面比较关键的部分OMEd ...

  10. Cortex-M3 在C中上报入栈的寄存器和各fault状态寄存器

    因为在标准C语音中是不能获取SP指针的.因而,如果想通过C代码来获取入栈的寄存器值,需要配合一小段汇编代码来获取当前的SP值,然后再把这个SP值以参数形式传送给C代码,最后以指针的形式把栈中的各寄存器 ...