python opencv稍基础初学

 傅里叶变换

傅里叶变换f​​​​​傅里叶分析之掐死教程(完整版)更新于2014.06.06 - 知乎 (zhihu.com)icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/19763358

相当nice

傅里叶变换的作用
·高频:变化剧烈的灰度分量,例如边界
·低频:变化缓慢的灰度分量,例如一片大海
滤波
·低通滤波器:只保留低频,会使得图像模糊
·高通滤波器:只保留高频,会使得图像细节增强


·opencv中主要就是cv2.dft()和cv2.idft(),输入图像需要先转换成np.float32格式。
·得到的结果中频率为0的部分会在左上角,通常要转换到中心位置,可以通过shift变换来实现。
·cv2.dft()返回的结果是双通道的(实部,虚部),通常还需要转换成图像格式才能展示(0,255)。
 

import numpy as np
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('lena. jpg',0)
img_float32 = np. float32(img)
dft = cv2. dft(img_float32, flags = cv2. DFT_COMPLEX_OUTPUT)
dft_shift = np. fft. fftshift(dft)
#得到灰度图能表示的形式
magnitude_spectrum = 20*np.log(cv2.magnitude(dft_shift[:,:,0],dft_shift[:,:,1]))
#####################这是映射公式20*np.log(

plt.subplot(121),plt. imshow(img, cmap ='gray')
plt. title('Input Image'), plt. xticks([]), plt. yticks([])
plt. subplot(122),plt. imshow(magnitude_spectrum, cmap ='gray')
plt. title('Magnitude Spectrum'), plt. xticks([]), plt. yticks([])
plt.show()

dft idft 

直方图概念

cv2.calcHist(images,channels,mask,histSize,ranges)
·images:原图像图像格式为uint8或float32。当传入函数时应用中括号]括来例如[img]
·channels:同样用中括号括来它会告函数我们统幅图像的直方图。如果入图像是灰度图它的值就是[0]如果是彩色图像的传入的参数可以是[0[1][2]它们分别
对应着BGR。
·mask:掩模图像。统整幅图像的直方图就把它为None。但是如果你想统图像某一分的直方图的你就制作一个掩模图像并使用它。
·histSize:BIN的数目。也应用中括号括来
·ranges:像素值范围常为[0,256]

img = cv2.imread('cat. jpg',0)#0表示灰度图
hist = cv2. calcHist([img],[0],None, [256],[0,256])
hist.shape


(256,1)


plt.hist(img.ravel(),256);
plt.show()
img = cv2.imread('cat. jpg')
color = ('b','g','r')
for i, col in enumerate(color):
histr = cv2. calcHist([img],[i],None, [256],[0,256])
plt. plot(histr, color = col)
plt.xlim([0,256])

 mask操作(掩码、掩膜)

#创建mask
mask = np. zeros(img. shape[: 2], np. uint8)
#uint8是无符号整型2的八次方,img是为了保障和目标图片大小一致
mask[100: 300, 100: 400] = 255#保存white
cv_show(mask,'mask')
(414,500)

img = cv2.imread('cat. jpg', 0)
cv_show(img,'img')


masked_img = cv2. bitwise_and(img, img, mask=mask)#与操作
cv_show(masked_img,'masked_img')

hist_full = cv2. calcHist([img], [0], None, [256], [0, 256])#no
hist_mask = cv2. calcHist([img], [0], mask, [256], [0, 256])#mask

plt.subplot(221),plt. imshow(img,'gray')
plt.subplot(222), plt. imshow(mask, 'gray')
plt. subplot(223), plt. imshow(masked_img,'gray')
plt.subplot(224), plt.plot(hist_full), plt. plot(hist_mask)
plt.xlim([0, 256])
plt.show()

 mask就是个滤波器,下面这里是低通滤波器

import numpy as np
import cv2
from matplotlib import pyplot as plt 

img=cv2.imread('lena.jpg',0)

img_float32=np.float32(img)

dft=cv2.dft(img_float32,flags=cv2.DFT_COMPLEX_OUTPUT) 
dft_shift=np.fft.fftshift(dft)

rows, cols=img.shape
crow,ccol=int(rows/2),int(cols/2)

#中心位置 低通滤波

mask= np.zeros((rows,cols,2),np.uint8)

mask[crow-30:crow+30,ccol-30:ccol+30]=1

#IDFT
fshift=dft_shift*mask#把低通,就是让边界模糊,高通就是边界明显
                     #这里mask是和dft的结果做的 dft的结果实部虚部两个维度
f_ishift=np.fft.ifftshift(fshift) img_back=cv2.idft(f_ishift)
img_back=cv2.magnitude(img_back[:,:,0],img_back[:,:,1]) plt.subplot(121),plt.imshow(img,cmap='gray')
plt.subplot(122),plt.imshow(img_back, cmap ='gray') 
plt.title('Result'),plt.xticks([]),plt.yticks([])

plt.show()

当是高频是 

 

 直方图均值化

映射变换

img = cv2.imread('clahe. jpg',0)#0表示灰度图 #clahe
plt.hist(img.ravel(),256);
plt.show()

equ = cv2.equalizeHist(img)
plt. hist(equ. ravel(),256)
plt.show()

res=np.hstack((img,equ))
cv_show(res,'res')

 实验的结果是拉高了对比度.................过曝? 

 自适应直方图对比化

线性的差值处理

 clipLimit 颜色对比度的阈值   titleGridSize 进行像素均衡化的网格大小,即在多少网格下进行直方图的均衡化操作

clahe = cv2. createCLAHE(clipLimit=2.0, tileGridSize=(8,8)

res_clahe = clahe. apply(img)
res = np. hstack((img, equ, res_clahe)
cv_show (res,' res')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/494244.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何使用极狐GitLab 自定义 Pages 根域名

本文作者:徐晓伟 GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 本文主要讲述了极狐GitLab Pages …

【Ollama】AI大模型本地部署

Ollama Ollama轻量级、可扩展的框架,用于在本地机器上构建和运行大型语言模型(LLM)。提供了一个简单的API来创建、运行和管理模型,以及一个预构建模型库,可以轻松用于各种应用程序。 明显优势:易于使用、…

大模型prompt工程学习(一)

目录 调prompt的方法 prompt时好时不好 大模型本质是没有记忆的 划重点:我们发给大模型的 prompt,不会改变大模型的参数 ГLets think step by step」 一步步分析一下 自洽性,同时跑多次,来减少幻觉 逻辑,基本能力来是要有…

【数据结构】计数排序

大家好,我是苏貝,本篇博客带大家了解计数排序,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 一. 基本思想二. 计数排序代码 一. 基本思想 计数排序又称为鸽巢原理,是对哈希直…

【爬虫基础】第6讲 opener的使用

在爬虫中,opener是一个用来发送HTTP请求的对象。它可以用来模拟浏览器发送请求,包括设置请求头、处理Cookie等操作。使用opener可以实现一些高级功能,如模拟登录、处理验证码等。 方法1: from urllib.request import Request,bu…

Axure中后台系统原型模板,B端页面设计实例,高保真高交互54页

作品概况 页面数量:共 50 页(长期更新) 兼容版本:Axure RP 9/10,不支持低版本 应用领域:网页模板、网站后台、中台系统、B端系统 作品特色 本品为「web中后台系统页面设计实例模板」,默林原创…

【搜索引擎2】实现API方式调用ElasticSearch8接口

1、理解ElasticSearch各名词含义 ElasticSearch对比Mysql Mysql数据库Elastic SearchDatabase7.X版本前有Type,对比数据库中的表,新版取消了TableIndexRowDocumentColumnmapping Elasticsearch是使用Java开发的,8.1版本的ES需要JDK17及以上…

StableDiffusion Web UI开启FP8,极大节约显存

升级了Pytorch后,StableDiffusion最新版本就可以有使用FP8的基础了,因此把秋叶的LINUX包也升级到了最新的版本。 升级Pytorch参考我的升级记录: ComfyUI SDWebUI升级pytorch随记-CSDN博客 然后下一步就是如何开启FP8了。与ComfyUI不同&…

【测试工具】JMeter接口测试的简单使用

事先声明:博主的JMeter是3.3版本的,可能和最新版本的操作有些许差别 测试前的准备工作 1、先添加一个线程组:右击“测试计划”,点击“添加”—》“Threads(Users)”—》“线程组” 2、再添加一个HTTP请求,右击“线程…

服务器安全事件应急响应排查方法

针对服务器操作系统的安全事件也非常多的。攻击方式主要是弱口令攻击、远程溢出攻击及其他应用漏洞攻击等。分析安全事件,找到入侵源,修复漏洞,总结经验,避免再次出现安全事件,以下是参考网络上文章,总结的…

从MVC 到DDD 架构

目录 一、前言 二、MVC架构 三、DDD架构 四、我为什么会使用DDD? 五、DDD架构分层 一、前言 最近在做一个项目,使用的是DDD架构思,觉得很不错,在此记录下。 二、MVC架构 MVC是一种经典的软件架构模式,主要用于…

基于大语言模型的云故障根因分析|顶会EuroSys24论文

*马明华 微软主管研究员 2021年CCF国际AIOps挑战赛程序委员会主席(第四届) 2021年博士毕业于清华大学,2020年在佐治亚理工学院做访问学者。主要研究方向是智能运维(AIOps)、软件可靠性。近年来在ICSE、FSE、ATC、EuroS…

鸿蒙OS开发问题:(ArkTS) 【解决中文乱码 string2Uint8Array、uint8Array2String】

在进行base64编码中,遇到中文如果不进行处理一定会出现乱码 let result1: string CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse((一二三四五六七八九十123)))LogUtils.i("result1 " result1);let result2: string CryptoJS.enc.Base64.par…

H5小程序视频方案解决方案,实现轻量化视频制作

对于许多企业而言,制作高质量的视频仍然是一个技术门槛高、成本高昂的挑战。针对这一痛点,美摄科技凭借其深厚的技术积累和创新能力,推出了面向企业的H5/小程序视频方案解决方案,为企业提供了一种轻量化、高效、便捷的视频制作方式…

LoadBalance 负载均衡服务调用

前身:Ribbon LB负载均衡(Load Balance)是什么 简单的说就是将用户的请求平摊的分配到多个服务上,从而达到系统的HA(高可用),常见的负载均衡有软件Nginx,LVS,硬件 F5等 spring-cloud-starter-loadbalancer组…

【论文速读】| 对大语言模型解决攻击性安全挑战的实证评估

本次分享论文为:An Empirical Evaluation of LLMs for Solving Offensive Security Challenges 基本信息 原文作者:Minghao Shao, Boyuan Chen, Sofija Jancheska, Brendan Dolan-Gavitt, Siddharth Garg, Ramesh Karri, Muhammad Shafique 作者单位&a…

【Postman如何进行接口测试简单详细操作实例】

1、下载Postman postman下载地址:Download Postman | Get Started for Free 2、安装Postman (1)双击下载好的postman-setup.exe文件,进行安装postman工具 (2)安装完成后,在桌面找到并打开postman软件,输入邮箱和密码进行登录&a…

Kafka详细教程(一)

总体目录 1、什么是消息队列 消息队列&#xff0c;英文名&#xff1a;Message Queue&#xff0c;经常缩写为MQ。从字面上来理解&#xff0c;消息队列是一种用来存储消息的队列 。来看一下下面的代码 // 1.创建一个保存字符串的队列Queue<String> queue new LinkedList&…

校园app开发流程-uniapp开发-支持APP小程序H5-源码交付-跑腿-二手市场-交友论坛等功能,学校自由选择!

随着科技的不断发展&#xff0c;智慧校园系统和跑腿外卖小程序已经成为当今社会的热门话题。作为未来的重要趋势之一&#xff0c;科技在教育领域中的应用越来越广泛。本文将探讨智慧校园系统和跑腿外卖小程序的开发过程&#xff0c;并阐述如何利用科技“育”见未来 一、智慧校…

经典应用丨光伏行业扫码追溯新标杆,海康机器人AI智能读码器!

去年&#xff0c;光伏发电行业持续高速发展&#xff0c;我国仅在前九个月累计装机521.08GW&#xff0c;同比增长达到45.3%&#xff0c;已成为第二大电源类型超过水电。根据《2023中国与全球光伏发展白皮书》预测&#xff0c;到2030年&#xff0c;中国能够实现国家规划的风电和光…