如何修复在我自己的图像上运行本地 Otsu 阈值示例的错误?

如何解决如何修复在我自己的图像上运行本地 Otsu 阈值示例的错误?

我基本上是在尝试预处理图像以获得更好的 OCR 识别。我决定使用 scikit-image(或者我应该使用其他东西)?

我正在按照此处显示的示例进行操作:

https://scikit-image.org/docs/stable/auto_examples/applications/plot_thresholding.html#id4

而且,我已经下载了这个脚本:

https://scikit-image.org/docs/stable/_downloads/939bd4a228ba1525a5e2896c819e2218/plot_thresholding.py

为了用我自己的图像测试它,我已经替换了这一行

img = img_as_ubyte(data.page())

这样:

from skimage import io

img = img_as_ubyte(io.imread('test.jpg'))

但是,我收到此错误:

File "/Users/janine/Downloads/test.py",line 207,in <module>
  local_otsu = rank.otsu(img,selem)
File "/usr/local/lib/python3.9/site-packages/skimage/filters/rank/generic.py",line 1399,in otsu
  return _apply_scalar_per_pixel_3D(generic_cy._otsu_3D,image,File "/usr/local/lib/python3.9/site-packages/skimage/filters/rank/generic.py",line 278,in _apply_scalar_per_pixel_3D
  image,selem,out,mask,n_bins = _handle_input_3D(image,line 199,in _handle_input_3D
  raise ValueError('Image dimensions and neighborhood dimensions'
    ValueError: Image dimensions and neighborhood dimensionsdo not match

我尝试了多个图像,所以问题不是图像。

解决方法

检查 data.page(),我们注意到该图像是单通道(即灰度)图像。在后面的链接示例中,您可以像这样设置结构元素 selem

selem = disk(radius)

请注意,skimage.morphology.disk 是一个“2D 结构元素”,只能用于“2D 图像”,即灰度图像。

很可能,您的 test.jpg 现在是三通道(即彩色)图像,因此是“3D 图像”。将 disk 等“2D 结构元素”与“3D 图像”结合使用时,会出现给定的错误。

现在,您有两个选择:

  1. 只需在 skimage.io.imread 中设置 as_gray=True,即可将输入的彩色图像转换为某种灰度图像。然后,您可以按原样使用其余代码。
  2. 使用一些“3D 结构元素”,例如 skimage.morphology.ball,它相当于 disk 的 3D,按原样使用您的输入图像。

这里有一些最小的代码供参考:

from matplotlib import pyplot as plt
from skimage.filters import rank
from skimage.io import imread
from skimage.morphology import ball,disk
from skimage.util import img_as_ubyte

# Option #1: 2D image (e.g. grayscale input image),and 2D structuring element
img = img_as_ubyte(imread('path/to/your/image.png',as_gray=True))
radius = 15
selem = disk(radius)
local_otsu = rank.otsu(img,selem)
plt.figure(1)
plt.imshow(local_otsu,vmin=0,vmax=255,cmap='gray')

# Option #2: 3D image (original input image),and 3D structuring element
img = img_as_ubyte(imread('path/to/your/image.png'))
radius = 15
selem = ball(radius)
local_otsu = rank.otsu(img,selem)
plt.figure(2)
plt.imshow(local_otsu,vmax=255)

plt.show()

而且,两个结果输出:

Option 1

Option 2

----------------------------------------
System information
----------------------------------------
Platform:      Windows-10-10.0.19041-SP0
Python:        3.9.1
PyCharm:       2021.1.1
Matplotlib:    3.4.1
scikit-image:  0.18.1
----------------------------------------

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-
参考1 参考2 解决方案 # 点击安装源 协议选择 http:// 路径填写 mirrors.aliyun.com/centos/8.3.2011/BaseOS/x86_64/os URL类型 软件库URL 其他路径 # 版本 7 mirrors.aliyun.com/centos/7/os/x86
报错1 [root@slave1 data_mocker]# kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topic_db [2023-12-19 18:31:12,770] WARN [Consumer clie
错误1 # 重写数据 hive (edu)&gt; insert overwrite table dwd_trade_cart_add_inc &gt; select data.id, &gt; data.user_id, &gt; data.course_id, &gt; date_format(
错误1 hive (edu)&gt; insert into huanhuan values(1,&#39;haoge&#39;); Query ID = root_20240110071417_fe1517ad-3607-41f4-bdcf-d00b98ac443e Total jobs = 1
报错1:执行到如下就不执行了,没有显示Successfully registered new MBean. [root@slave1 bin]# /usr/local/software/flume-1.9.0/bin/flume-ng agent -n a1 -c /usr/local/softwa
虚拟及没有启动任何服务器查看jps会显示jps,如果没有显示任何东西 [root@slave2 ~]# jps 9647 Jps 解决方案 # 进入/tmp查看 [root@slave1 dfs]# cd /tmp [root@slave1 tmp]# ll 总用量 48 drwxr-xr-x. 2
报错1 hive&gt; show databases; OK Failed with exception java.io.IOException:java.lang.RuntimeException: Error in configuring object Time taken: 0.474 se
报错1 [root@localhost ~]# vim -bash: vim: 未找到命令 安装vim yum -y install vim* # 查看是否安装成功 [root@hadoop01 hadoop]# rpm -qa |grep vim vim-X11-7.4.629-8.el7_9.x
修改hadoop配置 vi /usr/local/software/hadoop-2.9.2/etc/hadoop/yarn-site.xml # 添加如下 &lt;configuration&gt; &lt;property&gt; &lt;name&gt;yarn.nodemanager.res