Emgu 学习(3) 绘图,使用鼠标绘图,使用trackbar
绘图
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的更多相关文章
- 【CITE】利用鼠标绘图C#
实例018 利用鼠标绘图 光盘位置:光盘\MR\01\018 在常用的画图软件中,用户一般都可以通过鼠标在其中绘图,那么该功能是如何实现的呢?本实例将讲解如何使用C#实现通过拖动鼠标在窗体上绘图的功能 ...
- 有关Canvas的一点小事--鼠标绘图
1. 如何根据鼠标位置获取canvas上对应位置的x,y. 2. canvas的图糊了,设置宽和高的方式不对. 3.鼠标绘图代码 之前听说过canvas这个元素,但是实际上并没有深入了解过.不过日 ...
- matlab学习笔记8 基本绘图命令-三维绘图
一起来学matlab-matlab学习笔记8 基本绘图命令_6 三维绘图 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等著 ...
- C语言实现鼠标绘图
使用C语言+EGE图形库(Easy Graphics Engine).思路是通过不断绘制直线来实现鼠标绘图的功能,前一个时刻鼠标的坐标作为直线的起点,现在时刻的坐标作为终点(严格意义是线段而不是直线) ...
- C#-gdi绘图,双缓冲绘图,Paint事件的触发
一. 画面闪烁问题与双缓冲技术 1.1 导致画面闪烁的关键原因分析: 1 绘制窗口由于大小位置状态改变进行重绘操作时 绘图窗口内容或大小每改变一次,都要调用Paint事件进行重绘操作,该操作会使画面 ...
- Latex--TikZ和PGF--高级文本绘图,思维绘图,想到--得到!
Latex--TikZ和PGF--高级文本绘图,思维绘图,想到--得到! TikZ和PGF是一种用在TeX上的CLI绘图工具.CLI和GUI是两种常见的绘图方式,前者是所想即所得(WYTIWYG)的, ...
- cocos2d-x游戏引擎核心之六——绘图原理和绘图技巧
一.OpenGL基础 游戏引擎是对底层绘图接口的包装,Cocos2d-x 也一样,它是对不同平台下 OpenGL 的包装.OpenGL 全称为 Open Graphics Library,是一个开放的 ...
- QT_8_Qt中的事件处理_定时器事件_定时器类_事件分发器_事件过滤器_绘图事件_高级绘图事件_绘图设备_QFile 文件读写_QFileInfo文件信息
Qt中的事件处理 1.1. 捕获QLabel中是鼠标事件 1.2. enterevent 鼠标进入 1.3. leaveevent 鼠标离开 1.4. 鼠标按下MyLabel::mousePressE ...
- Emgu学习之(四)——图像阈值
http://www.cnblogs.com/CoverCat/p/5043833.html Visual Studio Community 2015 工程和代码:http://pan.baidu.c ...
- Emgu学习之(二)——图像读取、显示、保存
visual Studio Community 2015 工程和源代码:http://pan.baidu.com/s/1o6u5Fdw 内容 在这篇文章中将提到以下内容: 从文件中读取图像 Image ...
随机推荐
- VC:检测网络连接的方法
方法一: #include "stdafx.h" #include "windows.h" #include <Sensapi.h> #includ ...
- jQuery.post(url, [data], [callback], [type])
jQuery.post(url, [data], [callback], [type]) 概述 通过远程 HTTP POST 请求载入信息. 这是一个简单的 POST 请求功能以取代复杂 $.ajax ...
- maven打断点报错
- 交换机配置——单交换机划分VLAN配置
一.实验目的:实现单交换机划分VLAN,使PC1主机和PC2主机不能通讯 二.拓扑图 三.实验步骤 最开始两台主机都输入的端口f0/1和f0/2都属于vlan 1 可以相互通讯(如下图) 现在需要让P ...
- java判断一个字符串是否为数字型
摘自:https://blog.csdn.net/qq_42133100/article/details/92158507 方法一:用JAVA自带的函数(只能判断正整数 ) 2 public stat ...
- Python中导入类
python导入类与导入函数,模块基本一样,一个模块fun,其中包含三个类 class Dog(): def __init__(self,name): self.name=name def bark( ...
- php 获取域名
echo 'SERVER_NAME:'.$_SERVER['SERVER_NAME']; //获取当前域名(不含端口号) echo '<p>'; echo 'HTTP_HOST:'. ...
- 链表反转 C++
ListNode* reverse1(ListNode* pHead) { if(pHead == NULL) return NULL; ListNode * p1 = NULL; ListNode ...
- Oracle 性能之 Enq: CF - contention
Oracle 性能之 Enq: CF - contention Table of Contents 1. 原因 2. 解决问题 2.1. 针对持有锁进程类型处理 2.1.1. 查看持有锁会话的进程类型 ...
- springboot ---> spring ioc 注册流程 源码解析 this.prepareContext 部分
现在都是在springboot 中 集成 spirng,那我们就从springboot 开始. 一:springboot 启动main 函数 public static void main(Strin ...