python图片矫正后对比_opencv - python 图像对比_OpenCV - Python 图片简单处理 & 拼接对比 - 期权论坛...-程序员宅基地

技术标签: python图片矫正后对比  

import cv2

import numpy as np

img = cv2.imread("Resources/The Legend of Zelda.jpg")

kernel = np.ones((5, 5), np.uint8) # 卷积核

# 颜色空间转换,转换成灰度图(注意是BGR而不是RBG)

imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 平滑处理,高斯模糊, 高斯核的宽和高只能是奇数

imgBlur = cv2.GaussianBlur(imgGray, (5, 5), 0)

# 边缘检测, 实际也是采用了高斯模糊去除噪音并设置梯度阈值进行过滤

imgCanny = cv2.Canny(img, 150, 200)

# 膨胀,可以适当增加迭代次数

imgDilated = cv2.dilate(imgCanny, kernel, iterations=1)

# 侵蚀

imgEroded = cv2.erode(imgDilated, kernel, iterations=1)

# 缩小到0.2倍并拼接

imgStack = stackImages(0.2, [[img, imgGray, imgBlur],

[imgCanny, imgDilated, imgEroded]])

cv2.imshow("Image Stack", imgStack)

cv2.waitKey(0)

其中stackImage函数的定义为

def stackImages(scale, imgArray):

'''

图像堆栈,可缩放,按列表排列,不受颜色通道限制

'''

rows = len(imgArray)

cols = len(imgArray[0])

rowsAvailable = isinstance(imgArray[0], list)

width = imgArray[0][0].shape[1]

height = imgArray[0][0].shape[0]

if rowsAvailable:

for x in range(0, rows):

for y in range(0, cols):

if imgArray[x][y].shape[:2] == imgArray[0][0].shape[:2]:

imgArray[x][y] = cv2.resize(imgArray[x][y], (0, 0), None, scale, scale)

else:

imgArray[x][y] = cv2.resize(imgArray[x][y], (imgArray[0][0].shape[1], imgArray[0][0].shape[0]),

None, scale, scale)

if len(imgArray[x][y].shape) == 2:

imgArray[x][y] = cv2.cvtColor(imgArray[x][y], cv2.COLOR_GRAY2BGR)

imageBlank = np.zeros((height, width, 3), np.uint8)

hor = [imageBlank]*rows

hor_con = [imageBlank]*rows

for x in range(0, rows):

hor[x] = np.hstack(imgArray[x])

ver = np.vstack(hor)

else:

for x in range(0, rows):

if imgArray[x].shape[:2] == imgArray[0].shape[:2]:

imgArray[x] = cv2.resize(imgArray[x], (0, 0), None, scale, scale)

else:

imgArray[x] = cv2.resize(imgArray[x], (imgArray[0].shape[1], imgArray[0].shape[0]), None,scale, scale)

if len(imgArray[x].shape) == 2:

imgArray[x] = cv2.cvtColor(imgArray[x], cv2.COLOR_GRAY2BGR)

hor = np.hstack(imgArray)

ver = hor

return ver

封装了numpy中的vstack和hstack,方便使用

效果:

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33508272/article/details/113973762

智能推荐

redis6.2 使用 TLS 的部署(三种高可用模式)_redis 6.2版本启用tls认证-程序员宅基地

文章浏览阅读3.5k次。redis6.2 使用 TLS 的部署"三种高可用模式"安装redis6.2 并启用TLS加密安装创建TLS证书编写配置文件systemd管理测试连接redis 主从 配置 tls安装拷贝master 证书 到 slave编写配置文件systemd管理验证主从服务sentinel 哨兵服务创建目录、配置文件systemd管理查看sentinel 状态redis cluster 分片集群TLS安装规划目录及证书编写配置文件创建cluster 集群验证cluster 集群安装redis6.2 并启用TLS加密_redis 6.2版本启用tls认证

Sentinel-2波段合成_sentinel2 数据波段合成-程序员宅基地

文章浏览阅读378次。在上一篇博客中下载了Sentinel-2数据,他有13个波段的.jp2文件,下面选取需要使用的波段进行合成。导入了B2(蓝色)、B3(绿色)、B4(红色)、B8(近红外),直接存为TIFF会丢失坐标信息。最后将合成好的影像存为TIFF。得到下面这些.dat格式。_sentinel2 数据波段合成

【图像融合】基于错误纹理消除和显著特征检测的多模态脑图像融合神经科学前沿2023文献matlab复现-程序员宅基地

文章浏览阅读516次,点赞7次,收藏10次。多模态脑影像融合旨在将来自不同成像方式的脑影像数据进行融合,以获得更全面的信息。然而,由于不同成像方式的图像特性差异较大,直接融合会导致误差纹理和显著特征丢失等问题。本文提出了一种基于误差纹理消除和显著特征检测的多模态脑影像融合方法。该方法首先通过误差纹理消除算法去除融合图像中的误差纹理,然后通过显著特征检测算法提取融合图像中的显著特征,最后将显著特征融合到误差纹理消除后的图像中,得到最终的融合图像。实验结果表明,该方法可以有效消除误差纹理,保留显著特征,获得高质量的融合图像。引言。

python bar3d color_三维散点图colorbar matplotlib Python-程序员宅基地

文章浏览阅读1k次。我无法将颜色条添加到我的三维散点图中,它的颜色范围是根据bifurWidth的值在min和{}之间。我尝试过stackoverflow上显示的各种尝试,但都没有成功。任何帮助都将是非常感谢,因为我在这方面是一个重大的损失。在我最近的一次尝试是从下面的代码中散列出来的。在我的代码:from glob import globfrom pylab import *import numpy as npfr..._bar3d 好看的颜色

7.CSS-交集选择器、并集选择器、兄弟选择器_交集选择器和并集选择器使用方式-程序员宅基地

文章浏览阅读1.7k次。文章目录*交集选择器作用格式注意点并集选择器作用格式注意点相邻兄弟选择器作用格式注意点通用兄弟选择器作用格式注意点*交集选择器作用给所有选择器选中的标签中,相交的那部分设置属性。格式选择器1 选择器2{ 属性:值;}注意点1.选择器和选择器之间没有任何连接符号;2.选择器可以使用标签名称/id名称/class名称;3.仅了解。并集选择器作用给所有选择器选中的标签设置属性。格式选择器1,选择器2{属性:值;}注意点1.并集选择器必须使用,来连接;2.选择器可以使用_交集选择器和并集选择器使用方式

Windows CMD命令大全-程序员宅基地

文章浏览阅读79次。打开cmd快捷键 window键+RCMD命令锦集 1. gpedit.msc-----组策略  2. sndrec32-------录音机  3. Nslookup-------IP地址侦测器 ,是一个 监测网络中 DNS 服务器是否能正确实现域名解析的命令行工具。 它在 Windows NT/2000/XP 中均可使用 , 但在 Wi...

随便推点

计算机图形图像处理在教学中的应用,计算机图形图像处理案例教学法运用-程序员宅基地

文章浏览阅读534次。摘要:笔者根据计算机图形图像处理课程与中职学生学习的特点,分析了目前中职学校计算图形图像处理课程教学中存在的问题,针对如何提高中职学生对计算机图形图像处理课程的学习兴趣和解决实际问题的能力,提出了案例教学法在该课程中的具体实施办法,并对其实践进行了进一步的讨论。关键词:计算机图形图像处理;案例教学;中职当今世界电子商务发展迅速,计算机平面设计这门技术在很多领域都得到广泛应用。《Photoshop图..._图像分类在教育中的应用

python资源文件嵌入exe_pyinstaller将资源文件打包进exe中-程序员宅基地

文章浏览阅读921次。在网上看了很多博客,终于找到了符合自己智商可理解的打包资源文件方法,现引用如下https://www.cnblogs.com/darcymei/p/9397173.htmlhttps://blog.csdn.net/sinat_27382047/article/details/81304065"""终于把资源文件加载进去了,就是当exe文件移植后,它运行的时候会产生一个临时文件夹,把资源文件存储到..._pyinstaller如何将_internal添加进exe

H3C模拟器配置vlan-程序员宅基地

文章浏览阅读3.3k次,点赞4次,收藏7次。Valn 11组网需求• 交换机GE_2上的VLAN 5 和VLAN 10 为Primary VLAN,其上层端口GigabitEthernet1/0/1需要允许VLAN 5 和VLAN 10 的报文携带VLAN Tag 通过。• 交换机GE_2 的下行端口GigabitEthernet1/0/2 允许Secondary VLAN 2 通过,GigabitEthernet1/0/3 允许Sec..._新华3模拟器vlan配置

img撑满全屏的方法(img非背景图)_img 铺满-程序员宅基地

文章浏览阅读4.7w次,点赞8次,收藏15次。我有一个模板,想按常规做一个div里面放置一个img图片,并且让图片铺满容器,自适应容器大小。HTML结构代码如下(在这个盒模型上,我已经放置了一些不重要的样式)。div style="height:270px;width:400px;border:2px black solid;"> a href="http://www.paipk.com">img src="..." alt="拍_img 铺满

UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xb0 in position 5: invalid start byte_ebpf bcc unicodedecodeerror: 'utf-8' codec can't d-程序员宅基地

文章浏览阅读947次。UnicodeDecodeError: 'gbk' codec can't decode byte 0xfa in position 4669: illegal multibyte sequenceUnicodeDecodeError: 'utf-8' codec can't decode byte 0xb0 in position 5: invalid start bytewith open('进线汇总20201211.csv',encoding='utf8') as f: t = f._ebpf bcc unicodedecodeerror: 'utf-8' codec can't decode byte 0xb0 in positio

使用条件序列GAN改进NMT_improving neural machine translation with conditio-程序员宅基地

文章浏览阅读1.3k次。使用条件序列GAN改进NMT原文《Improving Neural Machine Translation with Conditional Sequence Generative Adversarial Nets》课程作业,因为要导出pdf所以粘贴到CSDN了,34章是笔者翻译的部分。当一篇post吧,求别喷,有问题请留言我一定改,一定改。摘要本文提出了一种将GANs应用于NMT领域的方..._improving neural machine translation with conditional sequence generative ad