OpenCV练习12-用滚动条移动图片.zip


这是一个关于OpenCV的入门练习,压缩文件包中OpenCV包括:编程说明,完整的VS2015工程,全部的源代码,编译结果和测试用图等。
资源截图
代码片段和文件信息
// Image_ScrollBar.cpp : Defines the entry point for the console application.  
//  
#include   
#include   

#include   
#include   
#include

using namespace std;


double mx = 0 my = 0;
int dx = 0 dy = 0 horizBar_x = 0 vertiBar_y = 0;
bool clickVertiBar = false clickHorizBar = false needScroll = false;
CvRect rect_bar_horiz rect_bar_verti;

void help()
{
printf(
“/n“
“This program demonstrated the use of the cvSetMouseCallback /n“
“for viewing large image with scroll bar in a small window/n“
“created by OpenCV highgui model. (chenyusiyuan 2011-06-24)/n“
“Call:/n“
“./Image_ScrollBar [  ]/n/n“
);
}


void mouse_callback(int event int x int y int flags void* param)
{
if (needScroll)
{
switch (event)
{
case CV_EVENT_LBUTTONDOWN:
mx = x my = y;
dx = 0 dy = 0;
// 按下左键时光标定位在水平滚动条区域内  
if (x >= rect_bar_horiz.x && x <= rect_bar_horiz.x + rect_bar_horiz.width
&& y >= rect_bar_horiz.y && y <= rect_bar_horiz.y + rect_bar_horiz.height)
{
clickHorizBar = true;
}
// 按下左键时光标定位在垂直滚动条区域内  
if (x >= rect_bar_verti.x && x <= rect_bar_verti.x + rect_bar_verti.width
&& y >= rect_bar_verti.y && y <= rect_bar_verti.y + rect_bar_verti.height)
{
clickVertiBar = true;
}
break;
case CV_EVENT_MOUSEMOVE:
if (clickHorizBar)
{
dx = fabs(x - mx) > 1 ? (int)(x - mx) : 0;
dy = 0;
}
if (clickVertiBar)
{
dx = 0;
dy = fabs(y - my) > 1 ? (int)(y - my) : 0;
}
mx = x my = y;
break;
case CV_EVENT_LBUTTONUP:
mx = x my = y;
dx = 0 dy = 0;
clickHorizBar = false;
clickVertiBar = false;
break;
default:
dx = 0 dy = 0;
break;
}
}
}

void myShowImageScroll(char* title IplImage* src_img
int winWidth = 1000 int winHeight = 700) // 显示窗口大小默认为 1400×700  
{
HWND hWnd = (HWND)cvGetWindowHandle(title);
if (hWnd == NULL)
return;

RECT rect;
GetWindowRect(hWnd &rect);
int cw1 = GetSystemMetrics(SM_CXFULLSCREEN); //屏幕大小(不包括任务栏等区域)
int ch1 = GetSystemMetrics(SM_CYFULLSCREEN);
int cw2 = GetSystemMetrics(SM_CXSCREEN); //真正屏幕的大小
int ch2 = GetSystemMetrics(SM_CYSCREEN);

int dw = 10;
int cw = cw1 - 2 * dw;
int ch = ch1 - 2 * dw;
int ww = rect.right - rect.left + 1;
int wh = rect.bottom - rect.top + 1;
if (ww > cw1) ww = cw1;
if (wh > ch1)wh = ch1;

winWidth = ww;
winHeight = wh;

IplImage* dst_img;
CvRect  rect_dst   // 窗口中有效的图像显示区域  
rect_src; // 窗口图像对应于源图像中的区域  
int imgWidth = src_img->width
imgHeight = src_img->height
barWidth = 21;  // 滚动条的宽度(像素)  
double  scale_w = (double)imgWidth / (double)winWidth   // 源图像与窗口的宽度比值  用以判断是否超出显示范围
scale_h = (double)imgHeight / (double)winHeight;     // 源图像与窗口的高度比值  用以判断是否超出显示范围

if (scale_w<1)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2020-01-06 07:04  OpenCV练习12-用滚动条移动图片
     目录           0  2020-01-06 07:02  OpenCV练习12-用滚动条移动图片 est
     目录           0  2018-12-11 19:31  OpenCV练习12-用滚动条移动图片 est.vs
     目录           0  2018-12-11 19:31  OpenCV练习12-用滚动条移动图片 est.vs est
     目录           0  2018-12-11 19:31  OpenCV练习12-用滚动条移动图片 est.vs estv14
     文件       29184  2020-01-03 06:22  OpenCV练习12-用滚动条移动图片 est.vs estv14.suo
     目录           0  2018-12-19 17:47  OpenCV练习12-用滚动条移动图片 estDebug
     目录           0  2018-12-20 19:19  OpenCV练习12-用滚动条移动图片 est est
     文件        6675  2018-12-20 19:19  OpenCV练习12-用滚动条移动图片 est estmain.cpp
     文件      298414  2018-12-06 05:43  OpenCV练习12-用滚动条移动图片 est est 12.jpg
     文件        7374  2018-12-11 19:33  OpenCV练习12-用滚动条移动图片 est est est.vcxproj
     文件         945  2018-12-11 19:33  OpenCV练习12-用滚动条移动图片 est est est.vcxproj.filters
     目录           0  2018-12-11 19:33  OpenCV练习12-用滚动条移动图片 est estx64
     目录           0  2018-12-20 19:19  OpenCV练习12-用滚动条移动图片 est estx64Debug
     文件      105633  2020-01-03 06:11  OpenCV练习12-用滚动条移动图片 est estx64Debugmain.obj
     文件      105360  2018-12-20 17:45  OpenCV练习12-用滚动条移动图片 est estx64Debugmain.obj.enc
     文件         239  2020-01-03 06:11  OpenCV练习12-用滚动条移动图片 est estx64Debug est.log
     目录           0  2020-01-03 06:11  OpenCV练习12-用滚动条移动图片 est estx64Debug est.tlog
     文件         570  2020-01-03 06:11  OpenCV练习12-用滚动条移动图片 est estx64Debug est.tlogCL.command.1.tlog
     文件       39506  2020-01-03 06:11  OpenCV练习12-用滚动条移动图片 est estx64Debug est.tlogCL.read.1.tlog
     文件         396  2020-01-03 06:11  OpenCV练习12-用滚动条移动图片 est estx64Debug est.tlogCL.write.1.tlog
     文件        1164  2020-01-03 06:11  OpenCV练习12-用滚动条移动图片 est estx64Debug est.tloglink.command.1.tlog
     文件        3612  2020-01-03 06:11  OpenCV练习12-用滚动条移动图片 est estx64Debug est.tloglink.read.1.tlog
     文件         382  2020-01-03 06:11  OpenCV练习12-用滚动条移动图片 est estx64Debug est.tloglink.write.1.tlog
     文件         210  2020-01-03 06:11  OpenCV练习12-用滚动条移动图片 est estx64Debug est.tlog est.lastbuildstate
     文件     1051648  2020-01-03 06:11  OpenCV练习12-用滚动条移动图片 est estx64Debugvc140.idb
     文件      929792  2018-12-20 19:19  OpenCV练习12-用滚动条移动图片 est estx64Debugvc140.pdb
     文件        1294  2018-12-11 19:31  OpenCV练习12-用滚动条移动图片 est est.sln
     文件    33685504  2020-01-03 06:22  OpenCV练习12-用滚动条移动图片 est est.VC.db
     文件          58  2020-01-06 07:02  OpenCV练习12-用滚动条移动图片 est est.VC.VC.opendb
     目录           0  2018-12-11 19:33  OpenCV练习12-用滚动条移动图片 estx64
............此处省略5个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)