精华内容
下载资源
问答
  • 对其进行裁剪,从左上角右下角 代码 import cv2 # 读取图片 img = 'cat.jpg' img = cv2.imread(img) #cv2.imshow('original', img) # 选择ROI roi = cv2.selectROI(windowName="original", img=img, ...

    问题描述:对一张图片进行批量裁剪,使用循环实现!
    例如一张猫
    cat.jpg
    在这里插入图片描述
    对其进行裁剪,从左上角至右下角

    代码

    import cv2
    
    # 读取图片
    img = 'cat.jpg'
    img = cv2.imread(img)
    #cv2.imshow('original', img)
    
    # 选择ROI
    roi = cv2.selectROI(windowName="original", img=img, showCrosshair=True, fromCenter=False)
    roi = (0,0,48,48)
    x0,y0 ,h,w= 0,0,48,48 #起始位置及裁剪出图片的大小
    print(roi)
    
    # 显示并保存图片
    ind = 0 #存储的图片序号初始化
    if roi != (0, 0, 0, 0):
        for y0 in range(0,414,20):
            for x0 in range (0,500,20):
              crop = img[y0:y0+h, x0:x0+w]
              img_name = str(ind) + ".jpg"
              save_path = 'G:\\python study\\cutcat\\cut\\' + str(ind) + '.jpg' #存储路径
              ind = ind + 1
              cv2.imwrite(save_path, crop)
              #cv2.imshow('crop', crop)
              #cv2.imwrite('crop.jpg', crop)
              print('Saved!')
              x0+=20 #每次移动多少像素,可以自己改
            y0 += 20
    # 退出
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    
    

    效果
    在这里插入图片描述
    点击Enter或space键继续运行程序,即可得到裁剪出的图片

    在这里插入图片描述

    展开全文
  • opencv imshow 显示在左上角+无标题栏

    千次阅读 2017-04-22 13:07:02
    opencv的imshow显示图片窗口,然而没有标题栏,而且固定在左上角,所有窗口重合了,也没法挪动。 如图: 解决方法: 在imshow之前:namedWindow("name", CV_WINDOW_NORMAL); 原因: 窗口被...

    用opencv的imshow显示图片窗口,然而没有标题栏,而且固定在左上角,所有窗口重合了,也没法挪动。

    如下图:


    解决方法:

    在imshow之前:namedWindow("name", CV_WINDOW_NORMAL);


    原因:

    窗口被设置成CV_WINDOW_AUTOSIZE了


    结果:



    展开全文
  •  主要目的是输入一张图片,在图像中,用鼠标画矩形框选中感兴趣的区域,然后保存框选的感兴趣区域同时,输出感兴趣区域的图像在原图中的左上角点的坐标以及框选的图像的宽和高。代码具体如下: #include <...

            该代码主要根据https://blog.csdn.net/yph001/article/details/79836960这篇上面的进行了微调。

            主要目的是输入一张图片,在图像中,用鼠标画矩形框选中感兴趣的区域,然后保存框选的感兴趣区域同时,输出感兴趣区域的图像在原图中的左上角点的坐标以及框选的图像的宽和高。代码具体如下:

    #include <opencv2/highgui/highgui.hpp>
    #include <opencv2/core/core.hpp>
    #include <opencv2/imgproc/imgproc.hpp>
    #include <iostream>
    /*
    读取一张图片,然后画框
    画完之后按esc即可退出画框
    同时输出img和坐标
    
    */
    using namespace cv;
    using namespace std;
    
    cv::Mat img;
    bool select_flag = false;
    cv::Rect m_select;
    cv::Point origin;
    int ROI_count;
    
    void onMouseRectPicking(int event, int x, int y, int, void*)
    {
    	if (select_flag)
    	{
    		//不一定要等鼠标弹起才计算矩形框,而应该在鼠标按下开始到弹起这段时间实时计算所选矩形框
    		m_select.x = MIN(origin.x, x);
    		m_select.y = MIN(origin.y, y);
    		//算矩形宽度和高度
    		m_select.width = abs(x - origin.x);
    		m_select.height = abs(y - origin.y);
    		//保证所选矩形框在视频显示区域之内
    		m_select &= cv::Rect(0, 0, img.cols, img.rows);
    	}
    	if (event == CV_EVENT_LBUTTONDOWN)
    	{
    		//鼠标按下的标志赋真值
    		select_flag = true;    
    		//保存下来单击捕捉到的点
    		origin = cv::Point(x, y);  
    		//这里一定要初始化,宽和高为(0,0)是因为在opencv中Rect矩形框类内的点是包含左上角那个点的,但是不含右下角那个点 
    		m_select = cv::Rect(x, y, 0, 0); 
    	}
    	else if (event == CV_EVENT_LBUTTONUP)
    	{
    		select_flag = false;
    		ROI_count++;
    	}
    }
    
    int main(int argc, char* argv[])
    {
    
    	
    	bool stop = false;
    	cv::namedWindow("capframe", CV_WINDOW_AUTOSIZE);
    	cv::setMouseCallback("capframe", onMouseRectPicking, 0);
    	char pic_name[40];
    	ROI_count = 0;
    	//用于存储框选的图像和rect
    	Rect rect;
    	Mat ROI;
    	while (!stop)
    	{
    		img = imread("自动化院照严肃版.jpg");
    		cv::rectangle(img, m_select, cv::Scalar(255, 0, 0), 2, 8, 0);  // 画矩形框
    		cv::imshow("capframe", img);
    		if ((m_select.x != 0) && (m_select.y != 0) && (m_select.width != 0) && (m_select.height != 0))
    		{
    			sprintf_s(pic_name, "ROI_%d.jpg", ROI_count);
    			ROI_count++;
    			ROI = img(m_select);
    			rect=m_select;		 
    		}
    		char key = cv::waitKey(30);
    		if (key == 27)
    			stop = true;
    	}
    	//显示框选的图像
    	imshow("ROI_WIN", ROI);
    	imwrite(pic_name, ROI);
    
    	//输出框选的图像在原图中左上角点的坐标以及框选图像的宽高
    	cout << rect.x << endl;
    	cout << rect.y << endl;
    	cout << rect.width << endl;
    	cout << rect.height << endl;
    	waitKey(0);
    	return 0;
    }

     

     

    展开全文
  • 1、在学习左上角右下角对调之前,我们有必要了解一下什么是水平方向对调图片和竖直方向对调图片。 2、在开始图片对调之前,我们思考一下这个问题 我们将A1和B7进行互换,A2和B6进行互换,以此类推,将A组元素和B...

    OpenCV图片沿对角线调换

    1、在学习左上角和右下角对调之前,我们有必要了解一下什么是水平方向对调图片竖直方向对调图片
    2、在开始图片对调之前,我们思考一下这个问题
    元素位置互换图
    我们将A1和B7进行互换,A2和B6进行互换,以此类推,将A组元素和B组元素对角线互换,得到新的A和B,我们对图片进行的对角线调换也是这个原理。
    3、代码实现:

    
    			
    			import cv2 as cv
    			import numpy as np
    			
    			# 要进行调换的图片
    			img = cv.imread("D:/img/pic (1).png",1)
    			# 获取图片基本信息
    			imgInfo = img.shape
    			height = imgInfo[0]
    			width = imgInfo[1]
    			mode = imgInfo[2]
    			
    			# 获取原图的第一个镜像为了下面以横轴为主进行调换操作
    			dst1 = np.zeros(imgInfo,np.uint8)
    			np.copyto(dst1,img)
    			
    			# 获取原图的第二个镜像为了下面以横轴为主进行调换操作
    			dst2 = np.zeros(imgInfo,np.uint8)
    			np.copyto(dst2,img)
    			
    			# 展示原图像
    			cv.imshow("img",img)
    			
    			# 以横轴为主进行图像对角调换
    			for i in range(0,width):
    			    # 此处的分界点是竖直方向的一半
    			    for j in range(0,int(height/2)):
    			        dst1[i][j] += dst1[width-1-i][height-1-j]
    			        dst1[width-1-i][height-1-j] = dst1[i][j] -  dst1[width-1-i][height-1-j]
    			        dst1[i][j] -=  dst1[width-1-i][height-1-j]
    			
    			# 以纵轴为主进行对角调换
    			for i in range(0,height):
    			    # 此处的分界点是水平方向的一半
    			    for j in range(0,int(width/2)):
    			        dst2[i][j] += dst2[width-1-i][height-1-j]
    			        dst2[width-1-i][height-1-j] = dst2[i][j] -  dst2[width-1-i][height-1-j]
    			        dst2[i][j] -=  dst2[width-1-i][height-1-j]
    			# 展示调换后的图一和图二
    			cv.imshow("dst1",dst1)
    			cv.imshow("dst2",dst2)
    			cv.waitKey(0)
    			cv.destroyAllWindows()
    
    
    

    上述代码运行结果如下图所示:
    图片沿对角线互换之后运行的结果i
    总结,从简单的换位置思考这个问题更容易上手,此图和该图旋转360度得到的图像应该是一直的。

    展开全文
  • 解决opencv点击×号关掉图片窗口程序并未继续或者结束的问题 1.我们通常想要显示一张图片代码如下: import cv2 img = cv2.imread('E:\picture.png') cv2.imshow("img", img) cv2.waitKey() cv2....
  • OpenCV点未检测到原因与FindChessboardCorners函数

    千次阅读 多人点赞 2019-04-10 16:02:36
    本博客参考两位前辈的实验记录点检测与FindChessboardCorners函数和OpenCV学习笔记(33)棋盘格点检测练习程序,总结整理而成。 实验历程: 我在前几天的实验中,总是检测不到点,很郁闷。来来回回测了七八...
  • 自己选择任一图像,在图像右下角插入自己的名字logo,名字logo可利用画图软件绘制出来,logo中名字不用黑色,背景用黑色,并利用掩码只插入名字部分。要求显示原始图像、名字logo图像以及插入logo后的图像。 源码: ...
  • OpenCV下点获取

    2011-09-06 19:44:00
    昨天无意中浏览看到点的概念,并加上想要切换到OpenCV的平台上,因此网上搜了一下,测试了一下面的点测试代码;int main(int argc, char *argv[]) { CvPoint2D32f pt[200]; int cornerCount = 30; ...
  • 将标记数据翻转后输入 cv2.rectangle ,此时输入格式已不再是 cv2.rectangle(image, 左上角坐标, 右下角坐标, color) ,而是变成了诸如 cv2.rectangle(image, 左下角坐标, 上角坐标, color) ...
  • OpenCV 点排序demo(Python版)前言一、登录迈德威视官网,下载官方SDK二、代码调用与视频帧处理( 基于 OpenCV )总结 前言     OpenCV 中确定矩形 ROI 区域后可以获取,此博客记录了迈德威视工业相机在 ...
  • 图1:左图中蓝色三角形内的所有像素都已转换为右图中的蓝色三角形。...但是,在OpenCV中,没有开箱即用的方法可以将三角形内的像素扭曲到另一个三角形内的像素。 本教程将逐步说明如何将图1中左图中的三...
  • 在 Ubuntu系统安装 OpenCV 全过程

    万次阅读 多人点赞 2019-07-27 15:20:23
    这篇博客,希望其他人安装时能够轻松一点,少几次还原重装...... 版本: ubuntu18.10 OpenCV-4.1.0 首先,OpenCV 有在ubuntu上安装的官方文档:...
  • 2 使用OpenCV进行三角形仿射变换 2.1 定义输入和输出 2.2 计算边界框 2.3 裁剪图像和更改坐标 2.4 计算仿射变换矩形 2.5 应用仿射变换到三角形 2.6 屏蔽三角形外的像素 3 代码 4 参考 在本文中,我们会看到...
  • def template_demo(): tpl = cv.imread("rabbit.jpg") ... cv.rectangle(target, tl, br, (0, 0, 255), 2) # tl为左上角坐标,br为右下角坐标,从而画出矩形 cv.imshow("match-"+np.str(md), target)
  • OpenCV 学习 入门

    2021-01-08 11:19:52
    OpenCV 学习 Rect 类 (rectangular) 一般用于存图片 成员变量x、y、width、height,分别为左上角点的坐标和矩形的宽和高。...br()返回右下角点坐标 (bottom right) OpenCV——Mat,IplImage,CvMat类型转
  • 看到了 这位老哥 @冰不语 的文章 OpenCV实践之路——方形图片对角...在实现了画一条左上角右下角的对角线后,我又尝试画一条从上角到左下角的对角线。 注意:此次实现是以正方形图为模版 Talk is cheap,sh...
  • Ubuntu20.04下opencv的安装 1.进入opencv官网下载 [opencv下载地址](https://opencv.org/releases/ 选择sources下载相应版本的压缩包。 解压文件,放到home/(用户名)/。 2.2安装opencv的依赖 打开终端,输入以下...
  • OpenCV Rect类

    2018-04-01 16:15:03
    左上角点的坐标xy:左上角点的坐标ywidth:矩形的宽height:矩形的高Size()area()返回矩形的面积contains(point)判断点是否包含在矩形内inside(Rect)判断矩形是否在该矩形内tl()返回左上角点的坐标br()返回右下角点的...
  • Ubuntu环境下OpenCV安装

    2019-05-18 19:17:20
    Ubuntu 环境的安装很简单,不需要自己配环境 第一步去OpenCV官网(https://opencv.org/releases/)下载压缩包。 选择图中的“Souces”选项 第二步解压包,右键在当前目录打开终端 使用sudo su命令输入密码(未...
  • opencv多边形绘制

    2020-10-07 15:43:07
    opencv多边形绘制 import cv2 import numpy as np ...# 目标图片,左上角起始位置,右下角起始位置, 颜色,填充类型(填满,线框宽度) cv2.circle(dst,(250,250),(50),(0,255,0),1) # 目标图片 ,圆
  • WindowsQT搭建OpenCv环境

    千次阅读 2017-03-24 11:50:25
    WindowsQT搭建OpenCv环境
  • opencv常见操作

    2018-12-11 10:24:46
    cv2.resize 传的大小是宽高不是高宽, 是[width, ...在opencv中,图片以左上角为起点,向是x坐标,向是y坐标,而在numpy中,向是列,向是行,在图片中的坐标(x,y),在numpy中则是(y,x),因此在对坐标操作...
  • ####通过cmake-gui安装(亲测有效,安装opencv3.4.0和opencv_contrib3.4.0) 1、下载opencv和对应的opencv_contrib(opencv版本在这...要选择版本是在左上角Tag那里选。) 2、安装依赖:sudo apt-get instal
  • 现在我们得到了结果,频率为0的部分(直流分量)在输出图像的左上角,如果想让它(直流分量)在输出图像的中心,还需要将结果沿两个方向平移N/2。函数np.fft.fftshift()可以实现,进行完频率变换后,就可以构建振幅...
  • python opencv 透视转换

    2018-04-06 21:30:06
    python环境基于opencv实现透视变换,可实现选点、透视变换、存储功能(选点应从左上角顺时针选取,完成后按q键退出)
  • [学习笔记]MacOS使用Xcode配置opencv环境 安装homebrew 终端安装cmake,opencv brew install cmake brew install opencv Xcode创建工程command line tool 创建完成,左上角点击工程文件 build settings→search ...
  • Linux系统编译opencv的.CPP文件

    千次阅读 2018-03-28 10:20:14
    首先将opencv的库包含到所要编译的文件中,在终端输入g++ `pkg-config opencv --cflags` opencv.cpp -o opencv `pkg-config opencv --libs` 注意:命令中的引号是键盘左上角数字键1旁边的引号。opencv.cpp是你要编译...
  • 一、下载 opencv版本:https://github.com/opencv/opencv/releases ...注意:若要选择版本,是在左上角 Tag 里选。 选择之后的 opencv 和 contrib 版本一定要对应!!! (这里选择 3.4.9 进行安装) 二、安装 ...
  • 在MAC安装配置opencv+contrib,我也是踩了很多坑。不像Windows可以直接拿别人编译好的库在VS中配置就行,MAC由于最后要在终端配置,会自动查找编译路径,所以必须要自己一步一步来。 下面先说一下我遇到的几个问题...
  • opencv的坐标原点在左上角,往为X轴正方向,往为Y轴正方向(用Image Watch可以很容易看出来) HALCON的坐标原点在左上角,往为Y轴正方向,往为X轴正方向(HALCON窗口左下角可以出来)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 10,795
精华内容 4,318
关键字:

opencv左上角右下角