Learn OpenCV by Examples - with Python

news2024/12/30 2:13:51

目录

关于OpenCV

新增内容

Content

1.锐化

2.阈值,二值化和自适应阈值


        本文是自己在kaggle上学习OpenCV的学习笔记,如果对你有所帮助再好不过了。这是原文链接Learn OpenCV by Examples - with Python | Kaggle里面不仅有代码还有图片等。如果你还没有注册kaggle可以参考这篇文章http://t.csdn.cn/oUkxY可以使你不用翻墙快速注册。在参考和在kaggle学习时,需要一定的英语基础。

关于OpenCV

OpenCV(开源计算机视觉)正式发布于1999年,由英特尔发起。

OpenCV的核心是用c++编写的。在python中,我们只是使用一个包装器在python内部执行c++代码。

第一个主要版本1.0是在2006年,第二个是在2009年,第三个是在2015年,第四个是在2018年。使用OpenCV 4.0测试版。

它是一个包含超过2500个优化算法的开源库。

它对几乎所有计算机视觉应用程序都非常有用,并且支持Windows, Linux, MacOS, Android, iOS,绑定到Python, Java和Matlab。

更新(19.05.2020)

我将一直努力改进这个内核。我对这个版本做了一些补充。谢谢你的阅读,希望对你有帮助

新增内容

17.背景减法

18.有趣的镜子使用OpenCV

Content

  1. Sharpening
  2. Thresholding, Binarization & Adaptive Thresholding
  3. Dilation, Erosion, Opening and Closing
  4. Edge Detection & Image Gradients
  5. Perpsective Transform
  6. Scaling, re-sizing and interpolations
  7. Image Pyramids
  8. Cropping
  9. Blurring
  10. Contours
  11. Approximating Contours and Convex Hull
  12. Identifiy Contours by Shape
  13. Line Detection - Using Hough Lines
  14. Counting Circles and Ellipses
  15. Finding Corners
  16. Finding Waldo
  17. Background Subtraction Methods
  18. Funny Mirrors Using OpenCV

Background Subtraction Methods Output 

 Funny Mirrors Using OpenCV Output

Some pictures from content

 导入包:

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

1.锐化

通过改变我们的核,我们可以实现锐化,它具有增强或强调图像边缘的效果。

image = cv2.imread('/kaggle/input/opencv-samples-images/data/building.jpg')
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

plt.figure(figsize=(20, 20))
plt.subplot(1, 2, 1)
plt.title("Original")
plt.imshow(image)


# Create our shapening kernel, we don't normalize since the 
# the values in the matrix sum to 1
kernel_sharpening = np.array([[-1,-1,-1], 
                              [-1,9,-1], 
                              [-1,-1,-1]])

# applying different kernels to the input image
sharpened = cv2.filter2D(image, -1, kernel_sharpening)


plt.subplot(1, 2, 2)
plt.title("Image Sharpening")
plt.imshow(sharpened)

plt.show()

2.阈值,二值化和自适应阈值

import numpy as np
import cv2
from matplotlib import pyplot as plt
# Load our new images
image = cv2.imread('images/Origin_of_Species.jpg', 0)

plt.figure(figsize=(30, 30))
plt.subplot(3, 2, 1)
plt.title("Original")
plt.imshow(image)

# Values below 127 goes to 0 (black, everything above goes to 255 (white)
ret,thresh1 = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY)

plt.subplot(3, 2, 2)
plt.title("Threshold Binary")
plt.imshow(thresh1)


# It's good practice to blur images as it removes noise
image = cv2.GaussianBlur(image, (3, 3), 0)

# Using adaptiveThreshold
thresh = cv2.adaptiveThreshold(image, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 3, 5)

plt.subplot(3, 2, 3)
plt.title("Adaptive Mean Thresholding")
plt.imshow(thresh)


_, th2 = cv2.threshold(image, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)

plt.subplot(3, 2, 4)
plt.title("Otsu's Thresholding")
plt.imshow(th2)


plt.subplot(3, 2, 5)
# Otsu's thresholding after Gaussian filtering
blur = cv2.GaussianBlur(image, (5,5), 0)
_, th3 = cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
plt.title("Guassian Otsu's Thresholding")
plt.imshow(th3)
plt.show()

 

持续更新...

参考资料:Learn OpenCV by Examples - with Python | Kaggle

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络安全-CDN绕过寻找真实IP

网络安全-CDN绕过寻找真实IP CDN就是CDN加速,就是根据你的目标让你访问的更快 CDN CDN,即内容分发网络,主要解决因传输距离和不同运营商节点造成的网络速度性能低下的问题。说得简单点,就是一组在不同运营商之间的对接节点上的…

Docker AIGC等大模型深度学习环境搭建(完整详细版)

本文是《Python从零开始进行AIGC大模型训练与推理》(https://blog.csdn.net/suiyingy/article/details/130169592)专栏的一部分,所述方法和步骤基本上是通用的,不局限于AIGC大模型深度学习环境。 Docker AIGC等大模型深度学习环境…

Go语言之反射(反射的简单使用,原理)

一、反射的基础 1.什么是反射 Go语言中,反射的机制就是在运行的时候,可以获取到其变量的类型和值,且可以对其类型和值进行检查,对其值进行修改。即在不知道具体的类型的情况下,可以用反射机制来查看变量类型、更新变…

50 Projects 50 Days - Hidden Search Widget 学习记录

项目地址 Hidden Search Widget 展示效果 Hidden Search Widget 实现思路 点击搜索按钮,展开输入框,主要元素就两个:input输入框和button,这两个本身就是行内元素。点击触发的动作拆分为两个,第一个是input输入框…

Vue核心 事件处理

1.8. 事件处理 1.8.1.事件的基本使用: 使用v-on:xxx或**xxx**绑定事件,其中 xxx 是事件名事件的回调需要配置在methods对象中,最终会在vm上methods中配置的函数,不要用箭头函数,否则this就不是vm了methods中配置的函数&#xff…

手撕Twitter推荐算法

Twitter近期开源了其推荐系统源码[1,2,3],截止现在已经接近36k star。但网上公开的文章都是blog[1]直译,很拗口,因此特地开个系列系统分享下。系列涵盖: Twitter整体推荐系统架构:涵盖图数据挖掘、召回、精排、规则多…

ActiveMQ使用

一、什么是消息中间件 消息中间件顾名思义实现的就是在两个系统或两个客户端之间进行消息传送 二、什么是ActiveMQ ActiveMQ是一种开源的基于JMS(Java Message Servie)规范的一种消息中间件的实现,ActiveMQ的设计目标是提供标准的&#xff0c…

HCIP之VLAN

目录 网络的三层架构 接入层 无线的缺陷: 上网用户数量增多,网络卡顿的原因 CSMA/CD --- 载波侦听多路访问/冲突检测 CSMA/CA --- 载波侦听多路访问/冲突避免 无线网络没有使用冲突检测技术的原因 汇聚层 连接两条线路的原因 核心层 VLAN VLAN配…

数字设计笔试Verilog手撕代码 - 无符号浮点加法器

前言 今天在网上看笔试题发现有个设计浮点累加器的题目,看了下题目说明感觉不太清楚,恰好记得之前做过浮点数的加法运算的设计,索性就改了下题目需求,作为一个小练习在重新设计一遍。具体设计要求如下: 设计需求 设…

Java锁策略-Java多线程(4)

(各位观众老爷下午好, 创作不易勒, 大家多多点赞收藏😘) 咱们废话不多讲, 下面细🔒 目录 前言 乐观锁 VS 悲观锁 乐观锁 悲观锁 悲观乐观锁优缺点 轻量级锁 VS 重量级锁 重量级锁 轻量级锁 读写锁 自旋锁 互斥锁 可重入锁 VS 不可重入锁 死…

IPSCE

文章目录 1.什么是数据认证,有什么作用,有哪些实现的技术手段?2.什么是身份认证,有什么作用,有哪些实现的技术手段?3.什么VPN技术?4.VPN技术有哪些分类?5.IPSEC技术能够提供哪些安全服务?6.IPSEC的技术架构是什么?7.AH与ESP…

今天面了个字阿里拿38K出来的,真是纹身师闭眼,秀了我一脸啊

公司前段缺人,也面了不少测试,前面一开始瞄准的就是中级的水准,也没指望来大牛,提供的薪资在15-20k,面试的人很多,但平均水平很让人失望。看简历很多都是4年工作经验,但面试中,不提测…

8.java程序员必知必会类库之嵌入式SQL数据库

前言 嵌入式内存数据库,作为嵌入到应用内部的数据库,在正常生产业务流程中使用不多。现在一般公司通用架构都是应用和数据分离,解耦数据和应用。但是,在某些特殊场景中,这种嵌入式数据库是比较好的选择。 在某些单元…

如何在开发阶段保证软件工程质量 (程序员要做些什么)

前言 大家常说:“代码和人,有一个能跑就行”,但这并不意味着我们可以放弃职业道德。与土木工程一样,软件工程也需要一些可度量的指标来衡量产品的交付质量。一个高质量的软件绝对不能只靠测试人员来保证,更不能相信程…

在SaleSmartly(ss客服)中为Messenger 提供无缝支持体验

客户希望您在他们所在的地方与他们见面,这意味着打开多个沟通渠道。但是,当您通过电子邮件、实时聊天、社交等方式进行通信时,对话很容易丢失、被忽视和杂乱无章。 而Messenger的受欢迎程度,以及Meta的无所不在,使Face…

每日学术速递4.18

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Inpaint Anything: Segment Anything Meets Image Inpainting 标题:Inpaint Anything:分割任何东西满足图像修复 作者:Tao Yu, Runseng Feng, R…

企业用户如何选择合适的服务器配置方法教程

随着互联网信息的飞速发展,任何企业都脱离不了互联网,越来越多的企业都通过互联网实施无纸化的办公,互联网推广一体化整体型推广、互联网电子商务。中小型企业网站如何选购云服务器配置呢?但是,实现这些的最最基础的条…

ai改写句子软件-ai改写

AI免费伪原创:助力网站内容升级 您是否曾经为网站优化而烦恼,无论是内容更新还是SEO优化,都需要大量的时间和精力。但是,您是否知道,现在有一款能够使用AI技术来帮助您完成这些任务,而且还是免费的呢&…

【Git 学习】

Git 学习 一、Git的使用1. Git下载安装2. Git 命令3. Git推送代码步骤4. Git基本工作流程5. Git历史版本切换6. Git分支管理6.1 创建新分支6.2 切换分支6.3 合并分支6.4 删除分支 7. 远程仓库的工作流程7.1 具体流程 8.推送到远程仓库9. 代码冲突问题10. IDEA 集成Git10.1 版本…

说说webpack的构建流程?

① 初始化流程 从配置文件和 Shell 语句中读取与合并参数,并初始化需要使用的插件和配置插件等执行环境所需要的参数。 配置文件默认下为 webpack.config.js,也可以通过命令的形式指定配置文件; 主要作用是用于激活webpack的加载项和插件&am…