裁剪图像的黑边(图像拼接后的黑边去除)
参考链接:https://www.cnblogs.com/yumoye/p/10512540.html
累计多张图像拼接后,黑边会累计增加,为了去除图像拼接后的黑边,截取有用的区域,参考博客代码如下:
"""author:youngkun;date:20180608;function:裁剪照片的黑边"""import cv2
import os
import datetimedef change_size(read_file):image=cv2.imread(read_file,1) #读取图片 image_name应该是变量img = cv2.medianBlur(image,5) #中值滤波,去除黑色边际中可能含有的噪声干扰b=cv2.threshold(img,15,255,cv2.THRESH_BINARY) #调整裁剪效果binary_image=b[1] #二值图--具有三通道binary_image=cv2.cvtColor(binary_image,cv2.COLOR_BGR2GRAY)print(binary_image.shape) #改为单通道x=binary_image.shape[0]print("高度x=",x)y=binary_image.shape[1]print("宽度y=",y)edges_x=[]edges_y=[]for i in range(x):for j in range(y):if binary_image[i][j]==255:edges_x.append(i)edges_y.append(j)left=min(edges_x) #左边界right=max(edges_x) #右边界width=right-left #宽度bottom=min(edges_y) #底部top=max(edges_y) #顶部height=top-bottom #高度pre1_picture=image[left:left+width,bottom:bottom+height] #图片截取return pre1_picture #返回图片数据source_path="./training_data/1/" #图片来源路径
save_path="./out/" #图片修改后的保存路径if not os.path.exists(save_path):os.mkdir(save_path)file_names=os.listdir(source_path)starttime=datetime.datetime.now()
for i in range(len(file_names)):x=change_size(source_path + file_names[i]) #得到文件名cv2.imwrite(save_path+file_names[i],x)print("裁剪:",file_names[i])print("裁剪数量:",i)while(i==2600):break
print("裁剪完毕")
endtime = datetime.datetime.now()#记录结束时间
endtime = (endtime-starttime).seconds
print("裁剪总用时",endtime)
利用原始代码,修改文件路径可以跑通,但是耗时比较长,尺寸(17196,6155)的图片耗时102s,研究代码发现for循环的目的是提取白色像素点,可以用np.where优化,优化后速度提升明显,耗时4s,代码如下:
import cv2
import numpy as np
import datetimedef change_size(read_file):image = cv2.imread(read_file, 1) # 读取图片 image_name应该是变量img = cv2.medianBlur(image, 5) # 中值滤波,去除黑色边际中可能含有的噪声干扰b = cv2.threshold(img, 15, 255, cv2.THRESH_BINARY) # 调整裁剪效果binary_image = b[1] # 二值图--具有三通道binary_image = cv2.cvtColor(binary_image, cv2.COLOR_BGR2GRAY)print(binary_image.shape) # 改为单通道indexes = np.where(binary_image == 255) # 提取白色像素点的坐标left = min(indexes[0]) # 左边界right = max(indexes[0]) # 右边界width = right - left # 宽度bottom = min(indexes[1]) # 底部top = max(indexes[1]) # 顶部height = top - bottom # 高度pre1_picture = image[left:left + width, bottom:bottom + height] # 图片截取return pre1_picture # 返回图片数据if __name__=='__main__':source_file = "/mnt/input.jpg" # 原始图片save_path = "/mnt/out.jpg" # 裁剪后图片starttime = datetime.datetime.now()x = change_size(source_file)cv2.imwrite(save_path, x)print("裁剪完毕")endtime = datetime.datetime.now() # 记录结束时间endtime = (endtime - starttime).secondsprint("裁剪总用时", endtime)
裁剪图像的黑边(图像拼接后的黑边去除)相关推荐
- 计算机启动快到桌面时屏幕黑,电脑开机后桌面黑屏怎么回事
有网友表示说在电脑开机后桌面黑屏了,这是怎么回事呢?可能还有很多网友不太清楚,那么下面就由小编来给你们说说电脑开机后桌面黑屏的原因及解决方法吧,希望可以帮到你们哦! 电脑开机后桌面黑屏的解决分析一: ...
- 计算机开启后显示器黑屏,开机后显示器黑屏无信号输入但电脑主机一直在运行的解决方法...
在使用电脑的过程中,难免会出现硬件或者系统.软件的故障,而近期有一个网友称自己的电脑出现了一个故障,那就是开机之后显示器黑屏无信号输入,但电脑主机一直在运行,其实出现了这个故障,原因众多,需要一一排查 ...
- word图片另存为变黑色_别处复制过来的 图像在word中粘贴后变黑怎么处理?
在 Word 中打印插入图片的文档时,图片会被打成黑色的色块,怎么办?(有链接http://oabbs.zol.com.cn/1/17_2517.html) 解决方法 方法一:关闭高级打印功能 依次点 ...
- 8.openCV 裁剪图像
8.openCV 裁剪图像 一.使用 OpenCV 裁剪图像 二.项目结构和代码讲解 1.项目结构 2.代码讲解 三.代码下载 一.使用 OpenCV 裁剪图像 在本教程的第一部分,我们将讨论如何将 ...
- 【OpenCV入门】调整图像大小/裁剪图像
调整图像大小-resize 函数resize 函数的定义 void resize( InputArray src, //输入图像OutputArray dst,//输出图像Size dsize, // ...
- 求取SHP文件的最小外接矩形并裁剪图像
目的: 求取shp文件中每一个形状的最小外接矩形. 根据每一个形状的最小外接矩形裁剪图像. 已知数据: 一个shp文件,包含若干个形状. 2.shp文件对应的影像. 工具 ARCGIS10.4 pyt ...
- photoshop 裁剪_如何在Photoshop中裁剪图像
photoshop 裁剪 Cropping photos is one of the most basic, but important, photo editing skills. A crooke ...
- OpenCV裁剪图像任意区域
目录 1.获取选定图中的矩形ROI 2.裁剪任意多边形 1.获取选定图中的矩形ROI 利用矩形 Rect 框定,指定其左上角坐标(构造函数前两个参数)和矩形的 长宽(后两个参数) //定义一个 Mat ...
- 联想笔记本电脑开机后一直黑屏的解决办法
在使用电脑的过程中,难免会遇到一些问题,比如联想笔记本电脑开机后一直黑屏,这该如何解决?不用担心,下面就来看看小编整理的一些解决办法. 联想笔记本电脑开机了但是一直黑屏1 一.释放静电 1.如果笔记本 ...
最新文章
- EntityFramework 4.x 使用中遇到的问题 (2)
- (四)Trigger
- jenkins添加linux作为slave
- sqlserver 2008阻止保存要求重新创建表的更改
- MySQL中常见的函数常见的问题
- 从Jetty、Tomcat和Mina中提炼NIO构架网络服务器的经典模式
- LoRa无线网络技术概述
- Photoshop 更改图片颜色
- 细胞亚器互作综述解读~~~The secret conversations inside cells
- gPTP的理解和使用
- 以前开发中的一些记录
- Flink MiniBatch的作用
- RxJava 驯服数据流之副作用
- 通过Opencv打开指定摄像头的方法
- 初次使用IntelliJ IDEA的常用配置
- 如何获取Html或Jsp中select框内的值(JS原生与非原生)
- 2022保研浙大电气学院经验分享
- [数据仓库复习] 数据仓库架构
- 阿里云配置通配符证书
- SAR信号处理重要工具-傅里叶变换