首页 > 编程语言 >使用Python实现基本图像识别

使用Python实现基本图像识别

时间:2024-11-22 13:29:02浏览次数:1  
标签:基本 图像识别 Python image cv2 filename gradient 图像 input

Python是一种强大且易于使用的编程语言,广泛应用于数据科学和图像处理领域。通过其丰富的库支持,我们可以快速实现图像处理任务,例如边缘检测。以下示例展示了如何用Python和基础工具实现简单的边缘检测。

代码实现
以下代码利用Sobel算子进行灰度图像的边缘检测:

python
更多内容访问ttocr.com或联系1436423940
import numpy as np
import cv2
from scipy.ndimage import convolve

读取灰度图像

def load_image(filename):
image = cv2.imread(filename, cv2.IMREAD_GRAYSCALE)
if image is None:
raise ValueError(f"无法读取图像 {filename}")
return image

保存输出图像

def save_image(filename, image):
cv2.imwrite(filename, image)
print(f"图像已保存为 {filename}")

定义 Sobel 滤波器

sobel_x = np.array([[-1, 0, 1],
[-2, 0, 2],
[-1, 0, 1]])
sobel_y = np.array([[-1, -2, -1],
[ 0, 0, 0],
[ 1, 2, 1]])

主处理逻辑

def edge_detection(input_file, output_file):
# 加载图像
image = load_image(input_file)

# 应用卷积操作
grad_x = convolve(image, sobel_x)
grad_y = convolve(image, sobel_y)

# 计算梯度强度
gradient = np.sqrt(grad_x**2 + grad_y**2)
gradient = (gradient / gradient.max() * 255).astype(np.uint8)

# 保存输出图像
save_image(output_file, gradient)

执行程序

if name == "main":
input_image = "input_image.jpg" # 输入图像文件路径
output_image = "output_image.jpg" # 输出图像文件路径
edge_detection(input_image, output_image)
步骤解析
图像读取
使用 cv2.imread 函数以灰度模式加载图像,返回一个二维数组。

Sobel 算子
定义水平和垂直方向的Sobel矩阵,用于检测边缘。

卷积计算
使用 scipy.ndimage.convolve 函数,将Sobel算子应用到图像,分别计算水平方向和垂直方向的梯度。

梯度强度计算
利用梯度平方和开方公式计算梯度强度,并将结果归一化到0-255范围,生成处理后的图像。

结果保存
使用 cv2.imwrite 将处理后的图像保存为输出文件。

示例输出
假设输入图像是一幅灰度图片:

输入图像
原始图像包含简单的几何图形。

输出图像
输出图像显示了高对比度的边缘部分,清晰地突出原始图像中的边界。

通过Python的简洁语法和丰富的库支持,我们可以快速实现复杂的图像处理任务。这种方法适用于任何需要轻量化边缘检测的项目。

标签:基本,图像识别,Python,image,cv2,filename,gradient,图像,input
From: https://www.cnblogs.com/ocr12/p/18562624

相关文章

  • leetcode227. 基本计算器 II
    给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。整数除法仅保留整数部分。你可以假设给定的表达式总是有效的。所有中间结果将在 [-231,231 -1] 的范围内。注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval() 。示例1:输......
  • [python] Python异步编程库asyncio使用指北
    Python的asyncio模块提供了基于协程(coroutines)的异步编程(asynchronousprogramming)模型。作为一种高效的编程范式,异步编程允许多个轻量级任务并发执行,且相比传统的多线程模型,具有更低的内存消耗。因此,asyncio在需要高并发处理的场景中,尤其是在Web开发、网络请求、API调用和套接字......
  • 电路图中的基本回路与基本割集
    老师在课上讲的时候表示这段比较抽象,他的老师当初讲的并不清楚。鉴于我曾经学过一点点图论,我并不知道他讲的是否清楚,但我想在某些环节提出一些我认为较为易于理解的思路。参考书籍:电路理论高级篇(颜秋容著)。在第十九章我们研究电路的计算机辅助分析方法。其思路主要分两个方向:分......
  • 计算机毕业设计必看必学38034+Web影评系统设计与实现原创定制程序单片机,java、PHP、p
    摘   要网络的兴起,让电影从业者和影迷之间的交流变得更加的便捷,影评系统可以成为电影公司和制片方的重要参考,通过分析用户对电影的评价和反馈,了解观众的需求和口碑反应。基于这些信息,电影公司可以制定更有效的营销策略,提升电影的知名度和票房。同时也让用户有了一个可......
  • python+pymysql
    python操作mysql一、python操作数据库1、下载pymysql库,方法一:pip3installpymysql或pipinstallpymysql方法二:在pycharm中setting下载pymysql2、打开虚拟机上的数据库3、pymysql连接(1)连接方式:pymysql.Connection或者pymysql.connect(2)包含内容a.host主机:填......
  • 计算机毕业设计—37836 基于Python的爬虫设计与数据分析(源码免费领)
    摘要1绪论1.1课题背景1.2研究目的及意义1.3爬虫技术1.4django框架介绍21.5论文结构与章节安排32 基于Python的爬虫设计与数据分析分析42.1可行性分析42.2系统流程分析42.2.1数据流程52.2.2业务流程52.3系统功能分析52.3.1功能性分析62.3.2......
  • Python+LangChain:构建智能对话和工具链的终极指南
    Python+LangChain:构建智能对话和工具链的终极指南随着大语言模型(LLM)的普及,如OpenAI的GPT系列和HuggingFace的Transformers,如何将这些强大的模型与实际应用场景结合变得越来越重要。LangChain是一个为此而生的开源框架,旨在帮助开发者高效构建智能对话系统、工具链......
  • 免杀0到1--免杀的基本认识
    基本概念免杀就是反杀毒技术,主要是指让恶意软件(如病毒、木马、蠕虫等)能够躲避杀毒软件的检测。其目的是使恶意程序在目标系统上能够顺利运行,而不被杀毒软件发现和拦截。查杀方式静态查杀:通过对文件特征码进行扫描,匹配已知的病毒特征库(例如代码片段、文件结构等),如果发现文......
  • python新闻评论情感分析可视化系统 Flask框架 NLP情感分析 计算机毕业设计(源码)✅
    python新闻评论情感分析可视化系统Flask框架NLP情感分析计算机毕业设计(源码)✅1、项目介绍技术栈:Flask框架、snownlp情感分析、Echarts可视化、NLP情感分析、LDA算法、Kmeans算法新闻评论情感分析可视化系统2、项目界面(1)系统首页(2)主题词汇分析(3)热门新闻分析......
  • 5.最长回文子串 python
    最长回文子串题目描述示例1:示例2:提示:题目链接解题思路Python实现详细解释提交结果题目描述给你一个字符串s,找到s中最长的回文子串。示例1:输入:s=“babad”输出:“bab”解释:“aba”同样是符合题意的答案。示例2:输入:s=“cbbd”输......