OpenCV GUI基本操作,回调函数,进度条,裁剪图像等
代码为转载,出处找不到了,不贴了
工具条进度条:
- // ConvertColor.cpp : 定义控制台应用程序的入口点。
- //
- #include "stdafx.h"
- #include <iostream>
- #include <opencv2/highgui/highgui.hpp>
- #include <opencv2/imgproc/imgproc.hpp>
- #pragma comment(lib,"opencv_core2410d.lib")
- #pragma comment(lib,"opencv_highgui2410d.lib")
- #pragma comment(lib,"opencv_imgproc2410d.lib")
- using namespace std;
- using namespace cv;
- // Global variables
- const int slider_max = 100;
- int slider;
- Mat img;
- // Callback function for trackbar event
- void on_trackbar(int pos, void *)
- {
- Mat img_converted;
- if(pos > 0) cvtColor(img, img_converted, CV_RGB2GRAY);
- else img_converted = img;
- imshow("Trackbar app", img_converted);
- }
- int main()
- {
- img = imread("swan.jpg");
- namedWindow("Trackbar app");
- imshow("Trackbar app", img);
- slider = 0;
- createTrackbar("RGB <-> Grayscale", "Trackbar app", &slider, slider_max, on_trackbar);
- while(char(waitKey(1)) != 'q') {}
- return 0;
- }
效果:
图像裁切代码:
- // ConvertColor.cpp : 定义控制台应用程序的入口点。
- //
- #include "stdafx.h"
- #include <iostream>
- #include <opencv2/highgui/highgui.hpp>
- #include <opencv2/imgproc/imgproc.hpp>
- #pragma comment(lib,"opencv_core2410d.lib")
- #pragma comment(lib,"opencv_highgui2410d.lib")
- #pragma comment(lib,"opencv_imgproc2410d.lib")
- using namespace std;
- using namespace cv;
- // Global variables
- // Flags updated according to left mouse button activity
- bool ldown = false, lup = false;
- // Original image
- Mat img;
- // Starting and ending points of the user's selection
- Point corner1, corner2;
- // ROI
- Rect box;
- // Callback function for mouse events
- static void mouse_callback(int event, int x, int y, int, void *)
- {
- // When the left mouse button is pressed, record its position and save it in corner1
- if(event == EVENT_LBUTTONDOWN)
- {
- ldown = true;
- corner1.x = x;
- corner1.y = y;
- cout << "Corner 1 recorded at " << corner1 << endl;
- }
- // When the left mouse button is released, record its position and save it in corner2
- if(event == EVENT_LBUTTONUP)
- {
- // Also check if user selection is bigger than 20 pixels (jut for fun!)
- if(abs(x - corner1.x) > 20 && abs(y - corner1.y) > 20)
- {
- lup = true;
- corner2.x = x;
- corner2.y = y;
- cout << "Corner 2 recorded at " << corner2 << endl << endl;
- }
- else
- {
- cout << "Please select a bigger region" << endl;
- ldown = false;
- }
- }
- // Update the box showing the selected region as the user drags the mouse
- if(ldown == true && lup == false)
- {
- Point pt;
- pt.x = x;
- pt.y = y;
- Mat local_img = img.clone();
- rectangle(local_img, corner1, pt, Scalar(0, 0, 255));
- imshow("Cropping app", local_img);
- }
- // Define ROI and crop it out when both corners have been selected
- if(ldown == true && lup == true)
- {
- box.width = abs(corner1.x - corner2.x);
- box.height = abs(corner1.y - corner2.y);
- box.x = min(corner1.x, corner2.x);
- box.y = min(corner1.y, corner2.y);
- // Make an image out of just the selected ROI and display it in a new window
- Mat crop(img, box);
- namedWindow("Crop");
- imshow("Crop", crop);
- ldown = false;
- lup = false;
- }
- }
- int main()
- {
- img = imread("swan.jpg");
- namedWindow("Cropping app");
- imshow("Cropping app", img);
- // Set the mouse event callback function
- setMouseCallback("Cropping app", mouse_callback);
- // Exit by pressing 'q'
- while(char(waitKey(1)) != 'q') {}
- return 0;
- }
裁切效果:
OpenCV GUI基本操作,回调函数,进度条,裁剪图像等的更多相关文章
- 为OLED屏添加GUI支持6:进度条控件
为OLED屏添加GUI支持6:进度条控件 本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明. 环境: 主机:WIN10 开发环境:MDK5.13 MCU:S ...
- iOS面向编码|iOSVideoToolbox:读写解码回调函数CVImageBufferRef的YUV图像
iOS面向编码|iOSVideoToolbox:读写解码回调函数CVImageBufferRef的YUV图像 本文档基于H.264的解码,介绍读写Video Toolbox解码回调函数参数CVImag ...
- Opencv step by step - 视频进度条
上一个博文只是进行了视频播放,这里加上进度条. 下面是修改好的代码: #include <cv.h> #include <highgui.h> /* * tan@ubuntu: ...
- Video Toolbox:读写解码回调函数CVImageBufferRef的YUV图像
本文档基于H.264的解码,介绍读写Video Toolbox解码回调函数参数CVImageBufferRef中的YUV或RGB数据的方法,并给出CVImageBufferRef生成灰度图代码.方便调 ...
- OpenCV常用基本处理函数(2)图像基本操作
可以根据像素的行和列的坐标获取他的像素值.对 BGR 图像而言,返回值为 B,G,R 例如获取蓝色的像素值: img=cv2.imread('messi5.jpg')px=img[100,100]bl ...
- OpenCV常用基本处理函数(7)图像金字塔和直方图
高斯金字塔 高斯金字塔的顶部是通过将底部图像中的连续的行和列去除得到的.顶部图像中的每个像素值等于下一层图像中 5 个像素的高斯加权平均值. 这样操作一次一个 MxN 的图像就变成了一个 M/2xN/ ...
- OpenCV常用基本处理函数(6)图像梯度
形态学转换 腐蚀 img = cv2.imread() kernel = np.ones((,),np.uint8) erosion = cv2.erode(img,kernel,iterations ...
- python-----opencv读视频、循环读图片显示进度条
功能:opencv读视频,显示进度条,推动进度条快进.后退,按q退出.代码如下: import os import cv2 def nothing(emp): pass def jindu(name, ...
- 用layer-list实现弧形进度条
本文转载自:http://www.linuxidc.com/Linux/2013-04/82743.htm 之前我有写过如何用style或者是layer-list实现自定义的横向进度条(http:// ...
随机推荐
- VS2010每次调试都出现“此项目已经过期”提示
问题描述 最近因为项目需要,开发平台从VS2005切换成了VS2010,把一些老项目也转换到VS2010平台,因为是从低到高升级,微软还是做了很多兼容,基本上可以无缝切换,编译调试也基本正常,但是 ...
- The Zen Programmer
专注 何为专注 关于 休息 怎么睡觉 心无杂念 我的体会 自我分析 初学者心态 无我 不要设置职业目标 敏事慎言 正念 做自己的老板 玩物养志 结语 最近在研读Christian Grobmeier ...
- 详解EBS接口开发之供应商导入
(一)供应商常用标准表简介 1.1 常用标准表 如下表中列出了与供应商相关的表和说明: 表名 说明 其他信息 ap_suppliers 供应商头表 供应商的头信息如:供应商名.供应商编码.税号等 ...
- OpenMP实现生产者消费者模型
生产者消费者模型已经很古老了吧,最近写了个OpenMP版的此模型之实现,来分享下. 先说一下模型的大致做法是: 1.生产者需要取任务,生产产品. 2.消费者需要取产品,消费产品. 生产者在生产某个产品 ...
- Android开发基础规范(二)
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52614696 前言:Androi ...
- Unity UGUI图文混排(五) -- 一张图集对应多个Text
继上一篇说的更新了一张图集对应多个Text的功能,为了节省资源嘛 这里,但是也没有舍弃之前的一个Text一个图集,因为我感觉应该两个都有用,于是我重新写了一个脚本 1.其实大体跟前面的都没变,解析标签 ...
- 微软Telnet的回显功能开启
win7和XP系统默认telnet的回显功能是关闭的.启用telnet回显功能:(1)首先进入命令行界面:输入telnet(2)进入Microsoft Telnet>命令提示符下,输入:set ...
- Android7.0 多窗口你值得拥有
Android7.0 多窗口你值得拥有 什么是多窗口分屏? 多窗口分屏其实在国内并不陌生,已经有一些手机和平板搭载了"分屏多任务"和"APP窗口化"功能,但这些 ...
- 【并发编程】ThreadPoolExecutor参数详解
ThreadPoolExecutor executor = new ThreadPoolExecutor( int corePoolSize, int maximumPoolSize, long ke ...
- 一个ExtJS实例
聊聊ExtJS 这几天接触了一个项目 前台用的是extjs 发现这个东西还是有点意思的 就把前台的部分 剥离了下来 有兴趣的朋友可以当做模板学习 不多说先上效果图 这篇文章 可以看作是ext知识的一 ...