[实操]利用python识别特定内容

使用python进行图片的文字识别 使用python操作Tesseract OCR软件进行图片的文字识别! 阅读详情

这是一个关于如何识别特定内容的教程,是通过opencv-python库将内容识别出来。

实现步骤

  1. 搭建环境(conda)

  2. 实例:识别盲道

  3. 修改代码,增加识别它物的能力

一、搭建环境

本次教程我们使用conda,来部署python环境。

Conda 是一个开源的包管理系统和环境管理系统,用于安装多个版本的软件包及其依赖项,并在它们之间轻松切换。Conda 最初是为 Python 相关的项目设计的,但现在已经支持多种语言,包括 R、Julia、Node.js 和其他科学计算工具。

Conda 的主要特点:

  1. 跨平台:Conda 可以在 Windows、macOS 和 Linux 上运行。

  2. 环境管理:用户可以创建独立的环境来隔离不同的项目或实验,每个环境都可以有自己的软件包集合和 Python 版本。

  3. 包管理:Conda 有一个庞大的软件包仓库(Anaconda Repository),其中包含了数千个预先编译好的科学计算和数据科学相关的软件包。

  4. 命令行工具:Conda 提供了一系列命令行工具来简化安装、更新、卸载和管理软件包的过程。

  5. 兼容性:除了管理 conda 包之外,Conda 还可以安装普通的 Python 软件包(通过 pip)。

但是这次我们用到的库并不多,所以我们不用标准的anaconda(1.01GB),而是用小巧的miniconda,先从网上下载下来,这里用清华镜像:

Windows https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py39_24.5.0-0-Windows-x86_64.exe

macos arm https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py39_24.5.0-0-MacOSX-arm64.pkg

macos X_86 https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-py39_24.5.0-0-MacOSX-x86_64.pkg

下载完毕后安装即可。

接着,就是搭建python环境了。

Windows

在搜索框搜索miniconda,应该会跳出一个带有miniconda名字的命令行应用

e078fada608f419b909db19314eb92bc.png

打开它,然后我们需要创建一个3.10版本的python环境

conda create -n ColorDetection python=3.10.0

这样就可以创建一个环境了,中途遇到是否继续[y/n],输入y再回车就行,在安装好后,我们输入以下命令来启动这个环境

conda activate ColorDetection

Macos

打开自带的终端,再输入上面Windows的命令就行。

安装第三方库

这次我们需要numpy和opencv-python

可以使用pip安装

pip3 install numpy opencv-python

实例:识别盲道

在说如何识别特定颜色前,我们先来举一个例子,就是识别盲道,本实例针对传统、普遍的黄色盲道展开。

首先,先下载示例图片:https://tse3-mm.cn.bing.net/th/id/OIP-C.MjmVaLe5KcBb-AOCPD6b0gHaJ4?rs=1&pid=ImgDetMain

如果下载不了的话,可以在网上(bing)搜“盲道”,找一张。

接着,就是编写代码了,打开你们的ide,创建一个名为“ColorDetection”的文件(项目),并在其中新建一个名为“BlindLaneDetection”的python文件,我们将在这个python文件中编写识别盲道的示例代码。

首先是导入numpy库和opencv-python库,在一些ide中,你可能需要手动启用我们刚刚搭建的conda环境。

import cv2
import numpy as np

接着是导入我们下载的示例图片

frame = cv2.imread('your_image_path')

其中frame的意思是我们将这个图片当作一帧来处理,frame也是opencv中常被命名的变量。

cv2.imread是opencv-python的一个读取图片的类。

请将“your_image_path”替换成你的示例图片的位置。

然后是将读取到的图片转换为hsv色彩格式

一、HSV颜色系统简介 HSV是一种在人们生活中甚至更常用的颜色系统,在电视遥控器上、在画画的调色板中、在你用爱某艺视频调整亮度时都很常见,因为它更符合人们描述颜色的方式——是什么颜色、颜色有多深、颜色有多亮。 H——Hue即色相,就是我们平时所说的红、绿,如果你分的更细的话可能还会有洋红、草绿等等;在HSV模型中,用度数来描述色相,其中红色对应0度,绿色对应120度,蓝色对应240度。

d394ae0a1585f080f31fcb4bad6165e4.jpeg

S——Saturation即饱和度,色彩的深浅度(0-100%) ,对于一种颜色比如红色,我们可以用浅红——大红——深红——红得发紫等等语言来描述它(请原谅一个纯理科生的匮乏的颜色系统),对应在画水彩的时候即一种颜料加上不同分量的水形成不同的饱和度。 V——Value即色调,纯度,色彩的亮度(0-100%) ,这个在调整屏幕亮度的时候比较常见。

eba196cf1d78635b92690626bfd80ac0.jpeg

注:在模型2中: H是色彩点在对应圆形切面上与红色半径(对于H=0度)所形成的圆心角。 V是色彩点所在圆形切面到圆锥顶点的距离。在顶面上V=1 顶点V=0 S是色彩点到所在圆形切面圆心的距离与该圆半径的比例值,在圆锥表面上S=1,在圆心处S=0

摘自:OpenCV学习笔记——HSV颜色空间超极详解&inRange函数用法及实战_hsv值是什么-优快云博客

frame_hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

这里将frame增加了一个后缀_hsv表示以hsv为颜色空间的图片

cv2.cvtColor()是opencv一个转换图片色彩空间的类

cv2.cvtColor(input_image, flag)

参数描述返回值
input_image需要转换的图片颜色空间转换后的图片矩阵
flag转换的类型颜色空间转换后的图片矩阵

两个参数分别表示原始图像和转换方式

继续创建掩膜

掩膜   数字图像处理中的掩膜概念是借鉴于PCB制版的过程,在半导体制作中,许多芯片工艺步骤采用光刻技术,用于这些步骤的图形“底片”称为掩膜,其作用是:在硅片上选定的区域中对一个不透明的图形模板掩盖,继而下面的腐蚀或扩散只影响选定区域以外的区域。   图像掩膜与其类似,用选定的图像、图形或物体,对处理的图像进行遮挡,来控制图像处理区域或处理过程。   数字图像处理中,掩膜为―维矩阵数组有时也用多值图像,图像掩膜主要用于:   ①提取感兴趣区,用预先制作的感兴趣区掩膜与待处理图像相乘.得到感兴趣区图像,感兴趣区内图像值保持不变,而区外图像值都为0。   ②屏蔽作用,用掩膜对图像上某些区域作屏蔽使其不参加处理或不参加处理参数的计算.或仅对屏蔽区作处理或统计。   ③结构特征提取,用相似性变量或图像匹配方法检测和提取图像中与掩膜相似的结构特征。   ④特殊形状图像的制作。

mask = cv2.inRange(frame_hsv, np.array([17, 117, 238]), np.array([19, 158, 255]))
  1. cv2.inRange() 是OpenCV中的一个函数,用于根据指定的阈值范围对图像进行阈值操作。这个函数会返回一个二值图像(黑白图像),其中满足颜色范围条件的像素被标记为白色(通常值为255),不满足条件的像素则被标记为黑色(值为0)。

  2. np.array([17, 117, 238]) 和 np.array([19, 158, 255]) 定义了HSV色彩空间中的下限和上限。这意味着代码将会选取那些H(色调)在17到19之间、S(饱和度)在117到158之间、V(明度/亮度)在238到255之间的像素作为目标颜色区域。

接下来就可以调用

cv2.imshow('Filtered Image1', mask)

来显示创建的掩膜。

82219afc4bff400aba16c762cad00c34.png

可以看到盲道的主要部分已经被区分出来了,接下来给出这部分的完整代码

import cv2
import numpy as np
​
frame = cv2.imread('images/test_photo.jpg')
​
frame_hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
cv2.imshow("Original image", frame_hsv)
​
# 定义黄色的HSV范围
lower_yellow = np.array([17, 117, 238], dtype=np.uint8)
upper_yellow = np.array([19, 158, 255], dtype=np.uint8)
​
# 根据HSV范围创建掩膜
mask = cv2.inRange(frame_hsv, lower_yellow, upper_yellow) #lower_yellow, upper_yellow是为了代码的美观而定义的
cv2.imshow('Filtered Image1', mask)

不过我么看到,虽然区别出来的图像具备盲道的很多纹理,看起来非常逼真,但是在计算机看来,那些纹理(黑色部分)就不是盲道,所以我们就需要对其进行膨胀操作,通俗的来讲,就是填满那些纹路。将其变成几何图形。

kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
mask = cv2.dilate(mask, kernel, iterations=5)

cv2.getStructuringElement()

cv2.getStructuringElement() 是一个用于生成结构元素的函数。结构元素是用来与原图像进行数学形态学操作(如膨胀、腐蚀等)的核。在这个例子中,创建的是一个矩形的结构元素。

  • 参数:

    • cv2.MORPH_RECT: 指定结构元素的形状为矩形。

    • (3, 3): 结构元素的大小,即宽度和高度。

cv2.dilate()

cv2.dilate() 函数用于执行二值图像的膨胀操作。膨胀是一种形态学变换,可以用来扩大图像中的白色区域(前景)。这通常用于连接相邻的物体、填充小洞或者扩大边界。

  • 参数:

    • mask: 这是输入的二值图像,即要进行膨胀操作的对象。

    • kernel: 用于膨胀操作的结构元素。

    • iterations=5: 膨胀操作重复执行的次数。迭代次数越多,膨胀的效果越明显。

同样我们可以加上

cv2.imshow('Filtered Image2', mask)

来查看效果

eb32ef1e470447b7a4f0bd8039cb3e94.png

可以看到,程序已经识别出了盲道(膨胀后)

下面是识别盲道的完整示例代码:

import cv2
import numpy as np
​
frame = cv2.imread('images/test_photo.jpg')
​
frame_hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
cv2.imshow("Original image", frame_hsv)
​
# 定义黄色的HSV范围
lower_yellow = np.array([17, 117, 238])
upper_yellow = np.array([19, 158, 255])
​
# 根据HSV范围创建掩膜
mask = cv2.inRange(frame_hsv, lower_yellow, upper_yellow)
cv2.imshow('Filtered Image1', mask)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
mask = cv2.dilate(mask, kernel, iterations=5)
cv2.imshow('Filtered Image2', mask)

三、拓展:识别他物

体验了识别盲道后,相信这一部分会很轻松!

还是上面的代码:

import cv2
import numpy as np
​
frame = cv2.imread('images/test_photo.jpg')
​
frame_hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
cv2.imshow("Original image", frame_hsv)
​
# 定义黄色的HSV范围
lower_yellow = np.array([17, 117, 238])
upper_yellow = np.array([19, 158, 255])
​
# 根据HSV范围创建掩膜
mask = cv2.inRange(frame_hsv, lower_yellow, upper_yellow)
cv2.imshow('Filtered Image1', mask)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
mask = cv2.dilate(mask, kernel, iterations=5)
cv2.imshow('Filtered Image2', mask)

只不过我们可以修改代码,让代码可以识别特定颜色。

我们先放一放上面这段代码,想想如何快速获得hsv的颜色信息呢?

为此我们可以为此新建一个程序color_selection.py

import cv2
​
# 读取图像
image = cv2.imread('your_image_path(替换为你图片的路径)')
​
# 将图像从BGR颜色空间转换为HSV颜色空间
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
​
# 获取鼠标点击事件
def mouse_callback(event, x, y, flags, param):
    if event == cv2.EVENT_LBUTTONDOWN:
        # 获取点击位置的HSV值
        hsv_value = hsv[y, x]
        print(hsv_value)
​
# 创建一个窗口并绑定鼠标回调函数
cv2.namedWindow('image')
cv2.setMouseCallback('image', mouse_callback)
​
# 显示图像
cv2.imshow('image', image)
​
# 等待按键,然后关闭所有窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

其中定义(使用)了一个名为mouse_callback的函数,event == cv2.EVENT_LBUTTONDOWN可以检测鼠标左键是否按下,hsv_value = hsv[y, x]可以获取鼠标所指位置的hsv颜色。

运行程序,可以发现程序可以正常返回所需的值,然后我们只需要修改lower_yellow和upper_yellow(因为此时已经不只检测黄色可以考虑将变量改为lower_color和upper_color)的值就可以了比如:

import cv2
import numpy as np
​
frame = cv2.imread('images/test_photo.jpg')
​
frame_hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
cv2.imshow("Original image", frame_hsv)
​
# 定义黄色的HSV范围
​
lower_yellow = np.array([16, 88, 168]) #注意此处的更改
upper_yellow = np.array([17, 98, 190]) #注意此处的更改
​
# 根据HSV范围创建掩膜
​
mask = cv2.inRange(frame_hsv, lower_yellow, upper_yellow)
cv2.imshow('Filtered Image1', mask)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
mask = cv2.dilate(mask, kernel, iterations=5)
cv2.imshow('Filtered Image2', mask)

可以检测示例图片中的墙壁(不太准,大家可自行修改)

我们可以将这个程序与前面的ColorDetection.py结合,实现类似指哪打哪的功能。

在编写具体程序前,我们需要考虑一个问题,就是一次提取只能提取一种hsv颜色,那如何取到最高值和最小值呢?

笔者觉得5次可以

所以我们让color_selection.py检测按了多少次鼠标

首先在mouse_callback定义一个计数器c,检测按了多少次,并且在大小大于4时返回,在每次获取颜色后加1

i = 0
...
if i > 4:
    ...
...
i += 1
def mouse_callback(event, x, y, flags, param):
    i = 0
    if i > 4:
        pass
    if event == cv2.EVENT_LBUTTONDOWN:
        # 获取点击位置的HSV值
        hsv_value = hsv[y, x]
        i += 1

接着定义lower_h, upper_h, lower_s, upper_s, lower_v, upper_v,分别代表h, s, v的最大值和最小值(h, s, v介绍看前文)

lower_h = 300
upper_h = 0
lower_s = 300
upper_s = 0
lower_v = 300
upper_v = 0

接着通过类似打擂台的方式赋值最终的lower_h, upper_h, lower_s, upper_s, lower_v, upper_v

if hsv_value[0] < lower_h:
    lower_h = hsv_value[0]
if hsv_value[0] > upper_h:
    upper_h = hsv_value[0]
if hsv_value[1] < lower_s:
    lower_s = hsv_value[1]
if hsv_value[1] > upper_s:
    upper_s = hsv_value[1]
if hsv_value[2] < lower_v:
    lower_v = hsv_value[2]
if hsv_value[2] > upper_v:
    upper_v = hsv_value[2]

在if i > 4:下输出返回值

if i > 4:
    return lower_h, upper_h, lower_s, upper_s, lower_v, upper_v

完整代码

def mouse_callback(event, x, y, flags, param):
    i = 0
    lower_h = 300
    upper_h = 0
    lower_s = 300
    upper_s = 0
    lower_v = 300
    upper_v = 0
    if i > 4:
        return lower_h, upper_h, lower_s, upper_s, lower_v, upper_v
    if event == cv2.EVENT_LBUTTONDOWN:
        # 获取点击位置的HSV值
        hsv_value = hsv[y, x]
        if hsv_value[0] < lower_h:
            lower_h = hsv_value[0]
        if hsv_value[0] > upper_h:
            upper_h = hsv_value[0]
        if hsv_value[1] < lower_s:
            lower_s = hsv_value[1]
        if hsv_value[1] > upper_s:
            upper_s = hsv_value[1]
        if hsv_value[2] < lower_v:
            lower_v = hsv_value[2]
        if hsv_value[2] > upper_v:
            upper_v = hsv_value[2]
        print("Lower H: ", lower_h)
        print("Upper H: ", upper_h)
        print("Lower S: ", lower_s)
        print("Upper S: ", upper_s)
        print("Lower V: ", lower_v)
        print("Upper V: ", upper_v)
        i += 1

不过将lower_h, upper_h, lower_s, upper_s, lower_v, upper_v在函数内定义的话,因为外部无法访问函数内的变量,所以可以定义全局变量,再在函数内调用(global)

import cv2
import numpy as np
​
# 读取图像
frame = cv2.imread('images/test_photo.jpg')
​
# 将图像从BGR颜色空间转换为HSV颜色空间
frame_hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
​
lower_h = 300
upper_h = 0
lower_s = 300
upper_s = 0
lower_v = 300
upper_v = 0
​
# 获取鼠标点击事件
def mouse_callback(event, x, y, flags, param):
    i = 0
    global lower_h, upper_h, lower_s, upper_s, lower_v, upper_v #global就是让全局变量能在函数内使用(全局)的方法
    if event == cv2.EVENT_LBUTTONDOWN:
        # 获取点击位置的HSV值
        hsv_value = frame_hsv[y, x]
        if hsv_value[0] < lower_h:
            lower_h = hsv_value[0]
        if hsv_value[0] > upper_h:
            upper_h = hsv_value[0]
        if hsv_value[1] < lower_s:
            lower_s = hsv_value[1]
        if hsv_value[1] > upper_s:
            upper_s = hsv_value[1]
        if hsv_value[2] < lower_v:
            lower_v = hsv_value[2]
        if hsv_value[2] > upper_v:
            upper_v = hsv_value[2]
        # print("Lower H: ", lower_h)
        # print("Upper H: ", upper_h)
        # print("Lower S: ", lower_s)
        # print("Upper S: ", upper_s)
        # print("Lower V: ", lower_v)
        # print("Upper V: ", upper_v)
        i += 1
​
# 创建一个窗口并绑定鼠标回调函数
cv2.namedWindow('image')
cv2.setMouseCallback('image', mouse_callback)
​
# 显示图像
cv2.imshow('image', frame)
​
# 等待按键,然后关闭所有窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
print(lower_h) #测试用,后续可删

接下来就简单了,只需要粘贴入ColorDetection.py就行了,完整代码

import cv2
import numpy as np
​
# 读取图像
frame = cv2.imread('images/test_photo.jpg')
​
# 将图像从BGR颜色空间转换为HSV颜色空间
frame_hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
​
lower_h = 300
upper_h = 0
lower_s = 300
upper_s = 0
lower_v = 300
upper_v = 0
​
# 获取鼠标点击事件
def mouse_callback(event, x, y, flags, param):
    i = 0
    global lower_h, upper_h, lower_s, upper_s, lower_v, upper_v
    if i > 4:
        return
    if event == cv2.EVENT_LBUTTONDOWN:
        # 获取点击位置的HSV值
        hsv_value = frame_hsv[y, x]
        if hsv_value[0] < lower_h:
            lower_h = hsv_value[0]
        if hsv_value[0] > upper_h:
            upper_h = hsv_value[0]
        if hsv_value[1] < lower_s:
            lower_s = hsv_value[1]
        if hsv_value[1] > upper_s:
            upper_s = hsv_value[1]
        if hsv_value[2] < lower_v:
            lower_v = hsv_value[2]
        if hsv_value[2] > upper_v:
            upper_v = hsv_value[2]
        # print("Lower H: ", lower_h)
        # print("Upper H: ", upper_h)
        # print("Lower S: ", lower_s)
        # print("Upper S: ", upper_s)
        # print("Lower V: ", lower_v)
        # print("Upper V: ", upper_v)
        i += 1
​
# 创建一个窗口并绑定鼠标回调函数
cv2.namedWindow('image')
cv2.setMouseCallback('image', mouse_callback)
​
# 显示图像
cv2.imshow('image', frame)
​
# 等待按键,然后关闭所有窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
​
lower_yellow = np.array([lower_h, lower_s, lower_v])
upper_yellow = np.array([upper_h, upper_s, upper_v])
​
mask = cv2.inRange(frame_hsv, lower_yellow, upper_yellow)
cv2.imshow('Filtered Image1', mask)
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
mask = cv2.dilate(mask, kernel, iterations=5)
cv2.imshow('Filtered Image2', mask)
​
cv2.waitKey(0)
cv2.destroyAllWindows()

提示:在选择完颜色后需要先关闭颜色选择窗口,才能显示区分内容

盲道识别示例

树莓派利用OpenCV的图像跟踪、人脸识别等 树莓派安装openCV做图像识别跟踪 阅读详情

相关推荐

利用Python实现语音识别功能,只需3个步骤!

调用科大讯飞语音听写,使用Python实现语音识别,将实时语音转换为文字。 首先在官网下载了关于语音听写的SDK,然后在文件夹内新建了两个.py文件,分别是get_audio.py和iat_demo.py,并且新建了一个存放录音的文件夹audios,文件夹内存放录音文件input.wav,我的整个文件目录如下: asr_SDK(文件名) ├─ Readme.html ├─ audios │ ...

web开发与Python 9737

如何使用Python实现图像识别?

如何使用Python实现图像识别?

qq_61433567的博客 1万+

利用Python和OpenCV进行面部表情识别

简要介绍:识别情绪的步骤使用摄像头拍摄输入图像,并使用python中的opencv检测脸部,并尝试使用CNN深度学习概念和分类任务从获得的脸部图像中获取特征,提取的特征为给予像Logistic回归这样的分类器,SVM等和分类器将识别的表达式预测为输出。入门..为了解决这个问题,我们需要一个描述不同情绪的不同面孔的大型数据库。为此,您可以下载CK +数据库(http://www.consortium...

Python达人 2万+

【分享】如何在自动化测试中应用Python图像识别技术

图像识别技术是计算机视觉领域的一个重要研究方向。Python作为一种功能强大且易于学习的编程语言,被广泛用于数据分析、机器学习和人工智能领域。

qq_31856023的博客 3118

opencv-python识别二维码并判断内容

然后,使用`pyzbar.decode`函数识别图中的二维码。在`decodeDisplay`函数中,第一步是将图像转换成灰度图(`cv2.cvtColor(video, cv2.COLOR_BGR2GRAY)`),因为灰度图处理起来更快,而且对于条码和二维码识别来说是足够的。- 函数`detect`:此函数初始化摄像头,并不断读取摄像头的帧,对每一帧调用`decodeDisplay`函数进行处理。- 导入库:首先,我们导入必要的库,包括`cv2`(OpenCV)和`pyzbar.pyzbar`。

realman_Rop的博客 2438

表格内容识别(python-opencv)(一)【9/8】

暑假都在弄这个,一开始以为是要弄一个通用的对表格进行分块和把内容全部识别,所以又分块又分行又把横线上的内容单独弄出来,后来说是对于已知的特定表格,所以最后都用python来写了,比较方便。在网上只找到一个比较巧妙的提取表格框架的方法,用横向和竖向的细长的条去腐蚀膨胀可以得到横线和竖线,拼在一起就是完整的表格框架,而且这样正好把一些小点和文字去除了。 这样的话因为有些线太细,就检测所有轮...

xxxmy 1万+

用 Python 进行 OCR 图像识别

数据采集就怕遇到图片,只能看不能复制怎么办。手动将文字提取出来,要耗费很大的工作量。例如下图,某楼盘的一房一价表,怎么样发现单价低位的房子?光凭肉眼很难发现吧,能否让计算机进行文字的识别,...

Python中文社区 1万+

python | glob 识别特定格式的文件

python 的第三方包glob识别特定格式的文件 在做kaggle的猫狗识别的比赛时,要对图片来分区是猫还是狗,glob包起了很大的作用。下面来用例子说明:from glob import glob import os os.chdir("E:\\Windows.old\\Users\\zhangxiang\\Desktop\\tensorflow_learning\\tensorflowCatV

求知:数据科学家之路 3350

Python利用pyzbar、OpenCV识别二维码中文内容乱码

在用Python通过pyzbar、OpenCV识别二维码,对部分中文内容出现乱码,通过几次尝试发现,可以在内容里添加部分中文字符,来解决这个问题!代码如下: # -*- coding:utf-8 -*- # author: Ueliang time:2020/2/11 import cv2 as cv from pyzbar import pyzbar as pyzbar import qrco...

qq_37071753的博客 4594

Python物体检测与目标识别

Python物体检测与目标识别是一种基于计算机视觉技术的应用,它可以用于自动检测图像或视频中的物体,并识别其种类和位置。在许多应用程序中,包括自动驾驶、安保、医学影像分析、智能家居等领域,Python物体检测与目标识别是一个关键的工具。在选择适合的模型后,需要进行模型的训练。传统的物体检测方法主要基于特征工程和机器学习技术,例如使用滑动窗口和HOG特征,使用分类器对图像区域进行分类,从而检测出物体的位置和种类。1、定位物体的位置:通过在图像中确定物体所在的矩形框,来定位物体的位置。

吃不胖. 1341

Python dlib 之 实现简单的人脸中识别特定脸的 简单 人脸识别

Python dlib 之 实现简单的人脸中识别特定脸的 简单 人脸识别 目录 Python dlib 之 实现简单的人脸中识别特定脸的 简单 人脸识别 一、简单介绍 二、环境搭建 三、注意事项 四、结果预览 五、实现步骤 六、关键代码 一、简单介绍 Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell...

仙魁XAN 2051

在Python中通过OpenCV自己训练分类器 进行特定物体实时识别

在Python中通过OpenCV自己训练分类器进行特定物体实时识别 0、 前言 OpenCV中提供了一些训练好的分类器供我们调用,从而实现物体识别和分类,如人脸检测、年龄和性别预测、猫脸检测、(汽车、船、猫、狗、沙发等)物体识别等。本篇文章的目的主要是介绍如何利用OpenCV自己训练分类器,实现特定物体的识别,这里以人手识别为例,对整个训练及识别测试过程进行说明,并附有程序代码。 1、 运行环境 操作系统:win10-64bit; 集成开发环境(IDE):Visual Studio Code; Python

weixin_46405486的博客 7389

手把手教你用DaVinci Configurator配置AUTOSAR SWC接口(含RTE避坑指南)

本文提供了一份基于DaVinci Configurator工具的AUTOSAR软件组件(SWC)接口配置实战指南。文章详细拆解了SR(发送者-接收者)和CS(客户端-服务器)接口的配置流程,并重点分享了运行时环境(RTE)生成阶段在多核部署、数据类型匹配等常见陷阱中的避坑方案与调试技巧,旨在帮助汽车电子工程师高效完成配置并规避错误。

uuu88的博客 547

Linux下利用python实现语音识别详细教程

Linux下python实现语音识别详细教程语音识别工作原理简介选择合适的python语音识别包安装SpeechRecognition识别器类音频文件的使用英文的语音识别噪音对语音识别的影响麦克风的使用中文的语音识别小范围中文识别语音合成 网关于语音识别的教程很多都是关于调用第三方平台的API实现,而这片文章用的是PocketSphinx进行的,小范围的语音识别绝对够用

万里羊的博客 6587

从7V到28V宽压输入,手把手教你设计一个5V/3A的DCDC电源模块(附MPS1584选型与原理图避坑)

本文详细解析了基于MPS1584芯片的7V至28V宽压输入到5V/3A输出的DCDC电源模块设计全流程。从电源架构选择、原理图设计要点到实际调试经验,涵盖了输入保护电路、功率转换核心电路及系统级优化测试,帮助工程师规避常见设计陷阱,实现高效稳定的电源解决方案。

weixin_33712987的博客 499

把 ABAP 选择屏幕 Selection Screen 打造成可维护的交互面板:常用屏幕元素与动态控制全解析

本文详细介绍了ABAP报表中Selection Screen的设计技巧,包括空行(SKIP)、横线(ULINE)、注释(COMMENT)等基础元素的使用方法,以及如何通过MODIF ID实现动态界面调整。重点讲解了行内布局(BEGIN OF LINE)、按钮(PUSHBUTTON)和区块(BLOCK)等高级功能,帮助开发者将选择屏幕从"能用"提升到"好用、易扩展、可维护"的水平。文章还分享了项目实践中的命名规范和分组策略,特别适合需要优化ABAP报表用户体验的开发人员

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 331

python利用pytesseract自动识别图片特定区域的数字和汉字

之前尝试了训练Tesseract-OCR 图片数字识别的样本库,现在利用这个数字库对图片中的字符(汉字/数字)进行识别。代码很简单: # coding=gbk import pytesseract from PIL import ImageGrab, Image def grab(): img = ImageGrab.grab([800, 220, 840, 239]) o...

大大卷的博客 2万+

MATLAB 与 STK 互联生成Walker并导出轨道数据(CSV导出)

本文介绍了使用 MATLAB 控制 STK 完成以下自动化流程:打开并连接 STK 场景;自动创建 Delta 型 Walker 星座;添加矩形传感器并配置视场;获取轨道六根数与视场角信息;自动保存至 CSV 文件,供后续使用。

weixin_52370774的博客 737

Python 代码实现验证码识别,很稳

作者:叶庭云源自:快学python昨天十行代码实现文字识别,感觉怎样,是不是很爽今天咋们继续利用pillow和pytesseract来实现验证码的识别一、环境配置需要 pillow 和 ...

苏克的博客 4万+

解决RabbitMq登录时报出Not management user(Login failed)错误以及rabbitmqctl(RabbitMq)新增用户和用户角色权限

解决RabbitMq登录时报出Not management user(Login failed)错误以及rabbitmqctl(RabbitMq)查看用户权限、新增用户和用户角色权限。

念兮为美 7479

【逐函数讲解ORB_SLAM3源码】获取普通帧率、关键帧、IMU数据

获得imu的旋转 mRwc * mImuCalib.mTcb.rotationMatrix(); Sophus::SE3 mTwc 创建ORB_SLAM3系统 Create SLAM system. It initializes all system threads and gets ready to process frames. ORB_SLAM3::System SLAM(argv[1],argv[2],ORB_SLAM3::System::IMU_RGBD, true, 0, file_nam

小秋 AI SLAM 入门实战教程 1245

自然场景下特定人工标识的识别

文章目录一、目标二、需学习和调用的内容三、解决方案和实施1. 总体方案2.具体实施详细代码 一、目标 在自然场景下检测并识别出五类特定标识(特定标志是用蓝色A4纸打印)。输入为自然场景下的图像,输出为该图像中该标识对应的数字标号。对于五类之外的样本输出数字0,达到字母识别分类. 二、需学习和调用的内容 (1)Python的Opencv库调用,百度OCR字符识别 (2)K均值聚类,HSV蓝色区域提取,矩形形态比计算 三、解决方案和实施 1. 总体方案 对于字母的识别采用两步走,分别为图像截取和字母识别分类,首

misjiayang的博客 3690

移动端HDR

移动HDR是近年来移动设备最大的技术进步之一。自2017年起,它就开始出现在旗舰手机上,包括苹果(Apple)和三星(Samsung)在内的大多数制造商都加入了这一行列。这一趋势在过去几年里席卷了整个电视行业,但在最近几年才真正深入人心。而且,最近,将更多的HDR内容放到移动设备上的趋势已经加快。对于这种新兴技术来说,它还处于相对早期的阶段,但它也非常有趣,值得关注。 HDR是什么? HDR是...

ISP行业的忠实粉丝 1340

python 制定识别图片的某些区域_python批量识别图片指定区域文字内容

Python批量识别图片指定区域文字内容,供大家参考,具体内容如下简介对于一张图片,需求识别指定区域的内容1.截取原始图上的指定图片当做模板2.根据模板相似度去再原始图片上识别准确坐标3.根据坐标剪切出指定位置图片,也就是所需的内容区域4.对指定位置图片进行ocr识别环境Ubuntu18.04Python2.7所需Python模块1.aircv用于识别模板再原始图的位置坐标pip install ...

weixin_39761195的博客 1836

Linux系统安装部署Redis完整教程(图文详解)

最近需要在Linux服务器安装部署Redis,参考了网上很多的文章,比较零碎,所以我自己写了一篇完整的Redis安装部署文档,在部署Redis之前重装了我的华为服务器,就是为了给大家一步步阐述我的操作过程,配合图文进行讲解更加通俗易懂!

黄团团的个人博客 6691

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

python识别图片指定位置文字_python批量识别图片指定区域文字内容

Python批量识别图片指定区域文字内容,供大家参考,具体内容如下简介对于一张图片,需求识别指定区域的内容1.截取原始图上的指定图片当做模板2.根据模板相似度去再原始图片上识别准确坐标3.根据坐标剪切出指定位置图片,也就是所需的内容区域4.对指定位置图片进行ocr识别环境Ubuntu18.04Python2.7所需Python模块1.aircv用于识别模板再原始图的位置坐标pip install ...

weixin_39667801的博客 1275

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

上一篇: MUSCLE:Apple研发,解决了模型每次更新后出现的结果不一致问题
下一篇: ExAvatar: 通过简短视频克隆人像并转化为3D数字形象
CodeMicheal
博客等级 码龄4年 260粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CodeMicheal

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值