GUI MouseKeyboard

GUI MouseKeyboard

import java.awt.Button;
import java.awt.Event;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class MouseKeyboardDemo {
	
	private Frame f;
	private Button but;
	private TextField tf;
	
	//构造函数
	public MouseKeyboardDemo() {
		// TODO Auto-generated constructor stub
//		super();
		init();//创建匿名类方法
		
	}

	//先把组件明确,在一个方法中分别对其初始化。
	private void init() {
		// TODO Auto-generated method stub
		f = new Frame("鼠标和键盘监听"); 
		f.setVisible(true);
		f.setBounds(900,200,300,400);
		f.setLayout(new FlowLayout());
		
		tf = new TextField(20);//(文本,列数)
		f.add(tf);
		
		but = new Button("一个按钮");
		f.add(but);
		
		myEvent();//创建事件方法
		
		
	}


	private void myEvent() {
		// TODO Auto-generated method stub
		
		f.addWindowListener(new WindowAdapter() {
			//覆盖方法
			@Override
			public void windowClosing(WindowEvent e) {
				// TODO Auto-generated method stub
//				super.windowClosing(e);
				System.exit(0);
			}
			
		});
		
		
		//在按钮上添加一个鼠标监听器
		but.addMouseListener(new MouseAdapter() {
			
			private int count = 1;
			
			//鼠标进到组件时触发
			@Override
			public void mouseEntered(MouseEvent e) {
				// TODO Auto-generated method stub
				super.mouseEntered(e);
//				System.out.println("mouse enter ..." + count++);
//				tf.setText("mouse enter ..." + count++);
			}

			//覆盖点击事件 单击
			@Override
//			public void mouseClicked(MouseEvent e) {
//				// TODO Auto-generated method stub
//				super.mouseClicked(e);
//				System.out.println("mouse clicked ..." + count++);
//				f.setText("mouse click ..." + count++);
//			}
			//覆盖双击事件
			public void mouseClicked(MouseEvent e) {
				// TODO Auto-generated method stub
				super.mouseClicked(e);
//				System.out.println(e);//产生MouseEvent事件...clickCount=1
				if(e.getClickCount()==2) {
					tf.setText("mouse double click ..." + count++);
				}
			}
			
		});//end but.addMouseListener(new MouseAdapter()
		
		
		//给文本框添加键盘监听
		tf.addKeyListener(new KeyAdapter() {

			@Override
			public void keyPressed(KeyEvent e) {
				// TODO Auto-generated method stub
				super.keyPressed(e);
//				System.out.println(e);
//				System.out.println("key run ...");
				//每个键对应一个键盘码
				System.out.println(e.getKeyCode() +":"+ KeyEvent.getKeyText(e.getKeyCode()));
				
				//输入数字
				int code  = e.getKeyCode();
				if(!(code>=KeyEvent.VK_0 && code<=KeyEvent.VK_9)) {
					System.out.println("必须是数字");
					e.consume();//使用此事件,以便不会按照默认的方式由产生此事件的源代码来处理此事件.
				}
				//回车
				if(e.getKeyCode()==KeyEvent.VK_ENTER) {
					System.out.println("enter run ...");
				}
				//ctrl + 回车
				if(e.isControlDown() && e.getKeyCode()==KeyEvent.VK_ENTER) {
					System.out.println("ctrl + enter run ...");
				}
			}//end keyPressed(KeyEvent e)
			
		});//end tf.addKeyListener(new KeyAdapter() 
		
		
		
	}//end myEvent
	

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		//new一个对象
		new MouseKeyboardDemo();

	}

}//end class

在这里插入图片描述

#include <iostream> #include <opencv2/imgcodecs.hpp> #include <opencv2/imgproc.hpp> #include <opencv2/videoio.hpp> #include <opencv2/highgui.hpp> #include <opencv2/video.hpp> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui_c.h> using namespace cv; using namespace std; int main(int argc, char** argv) { VideoCapture capture("D:/dvp/sample/dataset/traffic.mp4"); if (!capture.isOpened()) { //error in opening the video input cerr << "Unable to open file!" << endl; return 0; } Mat frame, roi, hsv_roi, mask; // take first frame of the video capture >> frame; // setup initial location of window Rect track_window(300, 200, 100, 50); // simply hardcoded the values // set up the ROI for tracking roi = frame(track_window); cvtColor(roi, hsv_roi, COLOR_BGR2HSV); inRange(hsv_roi, Scalar(0, 60, 32), Scalar(180, 255, 255), mask); float range_[] = { 0, 180 }; const float* range[] = { range_ }; Mat roi_hist; int histSize[] = { 180 }; int channels[] = { 0 }; calcHist(&hsv_roi, 1, channels, mask, roi_hist, 1, histSize, range); normalize(roi_hist, roi_hist, 0, 255, NORM_MINMAX); // Setup the termination criteria, either 10 iteration or move by atleast 1 pt TermCriteria term_crit(TermCriteria::EPS | TermCriteria::COUNT, 10, 1); while (true) { Mat hsv, dst; capture >> frame; if (frame.empty()) break; cvtColor(frame, hsv, COLOR_BGR2HSV); calcBackProject(&hsv, 1, channels, roi_hist, dst, range); // apply meanshift to get the new location meanShift(dst, track_window, term_crit); // Draw it on image rectangle(frame, track_window, 255, 2); imshow("img2", frame); setMouseCallback("img2", onMouse, 0); int keyboard = waitKey(30); if (keyboard == 'q' || keyboard == 27) break; } }帮我更改此段代码,使其能够通过gui使用鼠标来框选指定区域
最新发布
06-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值