快速框选图像的某一区域并进行缩放展示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速框选图像的某一区域并进行缩放展示相关的知识,希望对你有一定的参考价值。

参考技术A 在进行论文结果展示时,通常需要将图像的某一区域进行框选,然后对这个区域进行放大展示,如下图:

为了更方便的对多张图像的同一位置进行选择,本文制作了一个很简陋的脚本。

在使用软件前,将需要在同一位置进行标记的图像放在文件夹中,然后利用软件交互,只需对一张图像进行框选,便可以完成对该文件夹下所有图像的框选。

python3,opencv-python,pyqt5

(1)双击 “运行.bat” 运行脚本。

(2)点击文件夹选择文件夹的路径(注意不要使用中文路径),软件路径如下:

(3)如果需要更改参数,进行参数的输入,否则,点击开始运行。

(4)在弹出的图像单击鼠标进行画框,鼠标所选位置为框的左上角顶点的坐标,框的大小以及框要放大的大小由上面的参数决定。

(5)在确认无误后,点击键盘上的“ESC”按键,脚本将会对选定文件夹下的所有的图像进行处理,处理的结果保存在脚本所在路径的results_box文件夹下。

github: https://github.com/dehazenet/draw_BOX

脚本制作十分粗糙,欢迎各位进行优化~

opencv-鼠标框选矩形区域并输出尺寸

全部代码

#include<opencv2\\opencv.hpp>
#include <stdio.h>  
using namespace cv;
using namespace std;
Mat org, dst, img, tmp;
void on_mouse(int event, int x, int y, int flags, void *)

	static Point pre_pt = (0, 0);
	static Point cur_pt = (0, 0);
	if (event == EVENT_LBUTTONDOWN)
	
		pre_pt = Point(x, y);
	
	else if (event == EVENT_MOUSEMOVE && flags)//摁下左键,flags为1 

	
		org.copyTo(tmp);
		cur_pt = Point(x, y);
		circle(tmp, cur_pt, 4, Scalar(0, 255, 0, 0), 2, 8);
		rectangle(tmp, pre_pt, cur_pt, Scalar(0, 255, 0, 0), 1, 8, 0);
		
		imshow("img", tmp);//画的时候显示框
	
	else if (event == EVENT_LBUTTONUP)
	
		org.copyTo(img);
		rectangle(img, pre_pt, cur_pt, Scalar(0, 255, 0, 0), 1, 8, 0);
		imshow("img", img);//画完后显示框
		int width = abs(pre_pt.x - cur_pt.x);
		int height = abs(pre_pt.y - cur_pt.y);
		dst = org(Rect(min(cur_pt.x, pre_pt.x), min(cur_pt.y, pre_pt.y), width, height));
		cout << "x=" << pre_pt.x << "y=" << pre_pt.y << "width=" << width << "height=" << height << endl;
		namedWindow("dst");
		imshow("dst", dst);

	



int main() 
	org = imread("D:/images/111.jpg");
	org.copyTo(img);
	namedWindow("img");
	imshow("img", img);
	setMouseCallback("img", on_mouse, 0);
	/*	waitKey();
	cvtColor(dst, dst, CV_BGR2GRAY);
	imshow("gray", dst);*/
	waitKey(0);

以上是关于快速框选图像的某一区域并进行缩放展示的主要内容,如果未能解决你的问题,请参考以下文章

如何隔离轮廓内的所有内容,对其进行缩放并测试与图像的相似性?

php缩放图像裁剪

echarts框选+缩放折线图

UIscrollView 快速分页和缩放图像

快速在 UIImageView 上创建缩放

PHP实现的自定义图像居中裁剪函数示例