Python OpenCV实例:Gabor滤波器参数可视化-程序员宅基地

技术标签: python  人工智能  

#coding:utf-8

'''
Gabor滤波器参数可视化
参考:https://blog.csdn.net/lhanchao/article/details/55006663
'''

import cv2
import numpy as np
import math

# λ(波长)变化
kernel1 = cv2.getGaborKernel((311,311),10,0,5,0.5,0)
kernel2 = cv2.getGaborKernel((311,311),10,0,10,0.5,0)
kernel3 = cv2.getGaborKernel((311,311),10,0,15,0.5,0)
kernel4 = cv2.getGaborKernel((311,311),10,0,20,0.5,0)

cv2.imshow("lambda: 5", kernel1)
cv2.imshow("lambda: 10", kernel2)
cv2.imshow("lambda: 15", kernel3)
cv2.imshow("lambda: 20", kernel4)

# θ变化
kernel1 = cv2.getGaborKernel((311, 311), 10, 0, 10, 0.5, 0)
kernel2 = cv2.getGaborKernel((311, 311), 10, math.pi * 0.25, 10, 0.5)
kernel3 = cv2.getGaborKernel((311, 311), 10, math.pi * 0.5, 10, 0.5, 0)
kernel4 = cv2.getGaborKernel((311, 311), 10, math.pi * 0.75, 10, 0.5, 0)

cv2.imshow("theta: 0", kernel1)
cv2.imshow("theta: 45", kernel2)
cv2.imshow("theta: 90", kernel3)
cv2.imshow("theta: 135", kernel4)

# ψ的变化

# σ的变化:
kernel1 = cv2.getGaborKernel((311, 311), 5, 0, 10, 0.5, 0)
kernel2 = cv2.getGaborKernel((311, 311), 10, 0, 10, 0.5, 0)
kernel3 = cv2.getGaborKernel((311, 311), 15, 0, 10, 0.5, 0)
kernel4 = cv2.getGaborKernel((311, 311), 20, 0, 10, 0.5, 0)

cv2.imshow("sigma: 5", kernel1)
cv2.imshow("sigma: 10", kernel2)
cv2.imshow("sigma: 15", kernel3)
cv2.imshow("sigma: 20", kernel4)

# γ的变化

kernel1 = cv2.getGaborKernel((311, 311), 10, 0, 10, 0.5, 0)
kernel2 = cv2.getGaborKernel((311, 311), 10, 0, 10, 1.0, 0)
kernel3 = cv2.getGaborKernel((311, 311), 10, 0, 10, 1.5, 0)
kernel4 = cv2.getGaborKernel((311, 311), 10, 0, 10, 2.0, 0)
cv2.imshow("gamma: 0.5", kernel1)
cv2.imshow("gamma: 1.0", kernel2)
cv2.imshow("gamma: 1.5", kernel3)
cv2.imshow("gamma: 2.0", kernel4)

cv2.waitKey()
cv2.destroyAllWindows()

 

转载于:https://my.oschina.net/wujux/blog/1796494

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

智能推荐

Go语言基础之指针_go语言指针偏移-程序员宅基地

文章浏览阅读237次。一、Go语言中的指针不能进行偏移和运算,因此Go语言中的指针操作非常简单,我们只需要记住两个符号:&(取地址)和*(根据地址取值二、要搞明白Go语言中的指针需要先知道3个概念:指针地址、指针类型和指针取值。a := 10ptr := &ab := *ptr..._go语言指针偏移

为什么至少三个哨兵_一文带你了解Redis哨兵模式和高可用集群解析(万字长文)...-程序员宅基地

文章浏览阅读778次。前言 Redis 的 主从复制 模式下,一旦 主节点 由于故障不能提供服务,需要手动将 从节点 晋升为 主节点,同时还要通知 客户端 更新 主节点地址,这种故障处理方式从一定程度上是无法接受的。Redis 2.8 以后提供了 Redis Sentinel 哨兵机制 来解决这个问题。正文1. Redis高可用概述在 Web 服务器中,高可用 是指服务器可以 正常访问 的时间,衡量的标准是在 多长时间..._为什么高可用都是3个

Windows 11频繁更新,网友:越更越难用_win11 频繁更新 影响工作-程序员宅基地

文章浏览阅读1.1w次,点赞5次,收藏3次。Windows 11带来“倒退式”用户体验?_win11 频繁更新 影响工作

汇编除法运算-程序员宅基地

文章浏览阅读3.4w次,点赞10次,收藏45次。汇编的除法指令是div, 实际上相对高级语言的除法, 汇编指令的div是同时得到商和余数的, 结果分别保存在不同的寄存器.除数: 有8位和16位两种, 在一个寄存器或者内存单元中被除数: 如果除数是8位则被除数为16位, 默认放在AX中, 如果除数是16位, 则被除数为32位, 默认高位放在DX, 低位放在AX结果: 如果除数是8位, 那么执行div后, 余数存放在AH, 商存放在AL中; 如_汇编除法

数组的基本操作_cin>>l.elem[i];什么意思-程序员宅基地

文章浏览阅读153次。#include <iostream>#include <stdlib.h>using namespace std;struct SqList { int *elem; int length;};int InitList(SqList &L,int num){ L.elem = new int[num]; if (!L..._cin>>l.elem[i];什么意思

TikTok玩法攻略总结,从输出内容再到变现,结尾送干货!_tiktok 速卖通联盟-程序员宅基地

文章浏览阅读5.4k次,点赞2次,收藏33次。tiktok是字节跳动面向全球的一款短视频app,又被称为抖音海外版,为什么我一直强调一定要去玩tiktok呢?原因有二:一是目前抖音内容已经饱和,内容门槛非常高,在抖音上很难打开流量口,没有流量谈何变现呢?二是tiktok是新媒体人走向更大市场最好的机会,是的,没有比这更好的机会了,以前从未出现过。为啥这么说呢?你想想看,无论是qq微信,还是微博百度,又或者是阿里等电商平台,基本上都是复制国外的模式,国外的平台怎么走,国内几乎都是跟随的状态。打开手电筒就能看到前面的路,虽然有了很强的安全感,同时也_tiktok 速卖通联盟

随便推点

C语言实现整数质因数分解_正整数分解质因数c语言-程序员宅基地

文章浏览阅读482次。在C语言中,我们可以编写程序来将给定的正整数分解为其质因数。在本文中,我将展示一个简单的C语言程序,用于分解正整数的质因数,并提供相应的源代码和解析。希望通过这个示例程序和解析,您能够理解如何在C语言中实现正整数的质因数分解。这是一个基本的算法,可以用于解决数论和因数分解相关的问题。在函数内部,我们使用一个循环来迭代从2到给定正整数的所有可能的因数。是否等于1,如果不等于1,则打印" × ",表示这个因数还没有完全分解。在这个例子中,我们将正整数84分解为其质因数:2、2、3和7。如果可以整除,我们将。_正整数分解质因数c语言

C++对象数组的正确创建方式-程序员宅基地

文章浏览阅读1.2w次,点赞7次,收藏16次。类类型数组和数据类型数组的创建方式相同。分为栈中创建和堆中创建_c++对象数组

解决:jupyter notebook内核总是死亡_内核死亡-程序员宅基地

文章浏览阅读2.4k次。其实就是不知道为什么电脑缺了tornado,或者就是tornado有问题。此时可以通过运行下面的代码进行解决(两个中任选一个就行,一个不行的话就试试另外一个)系统:Windows11。_内核死亡

requests模块-代理proxies使用_requests proxy-程序员宅基地

文章浏览阅读1.7k次。反向代理不为浏览器或客户端转发请求,而是为最终处理请求的服务器转发请求。客户端不知道服务器的真实地址,请求发送给反向代理服务器,然后由反向代理服务器转发给最终处理请求的服务器,例如nginx。_requests proxy

SparkStreaming实时计算的框架和执行过程_实时计算框架 spark streaming实施方案-程序员宅基地

文章浏览阅读860次。SparkStreaming 为每一个数据源启动对应的Reciver(接收器),接收器以任务的形式运行在应用的Executor(执行器)进程中,从输入源接收数据 ,把数据分组为小的批次(batch),保存为RDD。然后把数据复制到另一个Executor中备份,保障容错性。然后我们根据这框架来谈一谈SparkStreaming运行的具体流程:1、客户端提交作业后启动Driver,通过Driver来启..._实时计算框架 spark streaming实施方案

深入理解人工智能模型能力指标F1的具体意义_f1指标-程序员宅基地

文章浏览阅读3.8k次。文章目录简介示例结论简介在对人工智能训练能力水平评估的标准中,准确性(Accuracy),精准度(Precision),召回率(Recall)和 综合指标 F1。 三前者相对比较好理解,基具体定义如下:准确率(ACC):(TP+TN)/(TP+FP+TN+FN)精准率(PRE):TP / (TP + FN)召回率(REC):TP / (TP + TN)但是F1的定义相对复杂一些,定义如下:F1=21PRE+1RECF1 = \frac2 {\frac1{PRE} + \frac1{REC_f1指标

推荐文章

热门文章

相关标签