opencv给图片加滑动条调节窗口大小

针对高分辨率图片无法完全显示的问题,通过添加滑动条实现了对大尺寸图片的完整查看与操作,确保图片截取区域与原图精确对应。

起因:最近对图片进行截取矩形区域操作时,发现了opencv一个很蛋痛的地方,使用imshow()函数展示图片的时候,一旦图片的分辨率过高,就不能完全显示。要是调整参数为WINDOWSIZE_NORMAL的话,截取出来的矩形区域和原图并不是一一对应的。使用resize函数的话,先缩小在放大又会使图片变得异常模糊。只好上网查了一下给图片加上滑动条的文章,然而只找到了opecv2写的函数,现用opencv4重写如下。
目的:给分辨率过大的图片加上滑动条。
原理:截取原图中符合窗口大小的部分并在窗口中显示
代码:

#include<opencv.hpp>
#include<iostream>

using namespace cv;
using namespace std;

int h_x=0, v_y=0,d_x=0,d_y=0;  //记录滑动条变化值,以及保存当前值
Rect v_bar, h_bar;
Point start;  //移动鼠标时的基点,使用了全局变量以使得滑动条的位置可以被记录下来。也可设为局部的静态变量
bool x_change = false;
bool y_change = false; //判断是否改变

void on_mouse(int event, int x, int y, int flags, void* param);
void draw_scrolls(Mat src_img, const char* title, int width = 500, int height = 700);   //后两个参数设置窗口的默认大小


int main()
{
	const char* title = "source";
	Mat srcimg = imread("E:\\material\\shaoyun.jpg");
	namedWindow(title, 1);
	setMouseCallback(title, on_mouse);
	while (true)
	{
		char c = waitKey(10);
		draw_scrolls(srcimg,title);
		if (c == ' ')
		
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值