- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
OpenCV的calcHist()
返回的3d直方图到底是什么?
对于一维直方图,我知道:
-x轴代表我想要的bin(为简单起见,请说0-255-灰度颜色值)。
-y轴表示具有该bin /颜色值的像素数。
对于3d直方图...我纠正了:
-有3个x轴阵列?每个颜色通道一个(在我的情况下为b,g,r)?
-有3个y轴阵列?以上各一项?
要么
最佳答案
OpenCV的calcHist()
可以计算任意数量的图像/通道的直方图。返回的直方图的轴数与输入图像中通道的数目相同,并且每个轴的值与为该通道指定的仓数一样多。例如,假设您有一个RGBD图像;也就是说,有四个通道:一个用于红色,蓝色,绿色,另一个用于深度。如果出于任何原因想要计算此类图像的直方图,则OpenCV可让您:
import cv2
import numpy as np
img = cv2.imread('lane.jpg')
img = np.dstack([img, img[:, :, 0]])
print('Input image shape:', img.shape)
n_channels = img.shape[2]
channels = list(range(n_channels))
sizes = [8,]*n_channels
ranges = [0, 255]*n_channels
hist = cv2.calcHist(img, channels, None, sizes, ranges)
print('Output histogram shape: ', hist.shape)
Input image shape: (540, 960, 4)
Output histogram shape: (8, 8, 8, 8)
np.dstack([img, img[:, :, 0]])
行中,我只是将第一个通道添加到图像的末尾,作为第四个通道。您可以修改程序以在通道深度为9的图像上运行,并获得输出9D直方图:
img = cv2.imread('lane.jpg')
img = np.dstack([img, img, img])
print('Input image shape:', img.shape)
n_channels = img.shape[2]
channels = list(range(n_channels))
sizes = [8,]*n_channels
ranges = [0, 255]*n_channels
hist = cv2.calcHist(img, channels, None, sizes, ranges)
print('Output histogram shape: ', hist.shape)
Input image shape: (540, 960, 9)
Output histogram shape: (8, 8, 8, 8, 8, 8, 8, 8, 8)
dstack
行,在那里我简单地将图像堆叠了3次以创建具有9个通道的图像。
x
,
y
等,您不应该将它们视为每个通道中的
bins
,即
ch1bins, ch2bins, ...
等。如果您拍摄单通道图像的直方图,那么请确保;当我绘制它们时,
x
-axis具有您的容器,而
y
-axis具有您的计数,但这只是绘制它们的一种方法。确实,您有一个垃圾箱数组和一个计数数组。如果绘制两通道图像的直方图并使用3D条形图将其可视化,则
x
-轴具有bin,但是
y
-轴也具有bin,在这种情况下
z
轴具有计数。
x
轴将具有第一个通道的仓位,
y
轴将具有第二个通道的仓位。如果您有一个三通道图像,则要在绘图中可视化,所有三个轴都是对应于每个通道的仓,因此您必须用其他方式可视化每个仓中的数量,例如标记的大小该垃圾箱,否则您将不得不根据标记的强度或某些东西为标记着色。
calcHist()
提供了一个2D直方图(即两通道)的示例,您可以在其中分析色相和饱和度值的直方图。这意味着对于给定的色相和饱和度值范围(例如,色相介于0到32之间,饱和度介于144和176之间),您可以看到属于该范围的像素数。
numpy
可以像OpenCV一样处理D维直方图。在这些图中,标记的颜色与bin代表的实际颜色相对应,并且标记的大小在某种程度上与每个bin中的值数量相对应。
[0, 127], [128, 255]
[0, 127], [128, 255]
[0, 127], [128, 255]
[0, 255, 0]
的像素。这对应于在通道0的bin 0,通道1的bin 1和通道3的bin 0中。总共有多少种可能性?一个像素可能在垃圾箱中:
img = cv2.imread('lane.jpg')
print('Input image shape:', img.shape)
n_channels = img.shape[2]
channels = list(range(n_channels))
sizes = [2, 2, 2]
ranges = [0, 255]*n_channels
hist = cv2.calcHist(img, channels, None, sizes, ranges)
print('Output histogram shape: ', hist.shape)
Input image shape: (540, 960, 3)
Output histogram shape: (2, 2, 2)
关于opencv - OpenCV 3d直方图是3轴直方图吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46498041/
我使用 为 .dat 文件中的一些数据创建了直方图 binwidth=... bin(x,width)=width*floor(x/width) plot 'file' using (bin($1,b
我需要能够在单个直方图上显示多条线,其中每条线都应该由一个参数表示。我有多个服务器,我想监控它们的 CPU 使用率。我的 Kibana 输入数据如下所示: 时间戳 |机器 |姓名 |值(value)
我在 Elasticsearch 中有一个索引,它包含一个简单对象数组(键值,请参见下面的示例)。 文档有时间戳。 我可以在 Kibana 中为每个键值创建单独的直方图(即一个用于 bytes_sen
所以我想出了如何将我的数据下钻到频率表 - Overall.Cond Freq 235 1 0 236 2 0 237
我的目标是使用 gnuplot 5.4 框创建直方图,并用特定的 RGB 值对每个框进行着色(出于测试目的,它是“绿色”,但在最终数据集中将是 #RRGGBB) 我的数据如下所示: 5.800507
我有 chr totgenes FST>0.4 %FST>0.4 exFST>0.4 %exFST>0.4 inFST>0.4 %inFST>0.4 chrtotlen 1 14
我用 matplotlib 创建了一个直方图使用 pyplot.hist()功能。我想在条形图中添加 bin 高度 ( sqrt(binheight) ) 的毒物误差平方根。我怎样才能做到这一点? .
我有兴趣在 R 中创建一个包含两个(或更多)人口的直方图,这意味着 - 我不希望两个直方图共享同一个图形,而是一个包含两种或更多颜色的条形图。 找到下面的图片 - 这就是我想要完成的。 有什么想法吗?
所以,我需要按日期制作数据直方图,但我有 xticlabel 重叠的问题,所以,我试图找到一个解决方案,如何跳过 xtics 以避免重叠。考虑到日期不是整数抽动,我试图以这种方式解决它: .dat 文
给定每小时都有数据点的(电力)市场数据的时间序列,我想显示一个包含每小时数据的所有时间/时间范围平均值的条形图,以便分析师可以轻松地将实际价格与所有时间平均值进行比较(一天中哪个小时最贵/最便宜)。
+----+----+--------+ | Id | M1 | trx | +----+----+--------+ | 1 | M1 | 11.35 | | 2 | M1 | 3.4
所以,我需要按日期制作数据直方图,但我有 xticlabel 重叠的问题,所以,我试图找到一个解决方案,如何跳过 xtics 以避免重叠。考虑到日期不是整数抽动,我试图以这种方式解决它: .dat 文
我有以下示例数据文件,我想在 gnuplot 中将其绘制为直方图 1 1 2 2 4 3 我正在使用以下命令绘制数据:用方框绘制“sample.data”,生成以下图表: ##
我是 Java 编码新手,我正在尝试使用提供给我的以下方法创建直方图。这些注释是对每个方法的说明,稍后我们将使用它们来创建主方法并打印直方图。我已经达到了方法 3,并且能够很好地编译所有内容,但我不确
我有一个由服务器上的程序生成的连续生成的数据(文本文件)。我想将数据绘制为实时图表,就像 powergrid做。这是我的方法: 由于数据是在服务器上以文本文件的形式连续生成的,因此我编写了一个 PHP
我正在尝试通过一个函数使用 D3 创建一个简单的直方图。图表的 y 值作为数组传递给函数,然后函数创建 svg 和条形图。我得到了正确的轴,但条被切断了。 似乎我的矩形 x 值太大而无法放入 svg
有没有办法用 linq 做一个分段直方图?我见过几个示例,您可以在其中计算特定对象的出现次数。是否可以创建一个基于 linq 的直方图来计算两个值之间的一系列对象的出现次数? 我不知道您将如何按一系列
我正在参加初级 Java 类(class),任务是创建一个具有以下输出的直方图程序:(100 和 10 是用户输入)。 有多少个数字? 100 间隔多少? 10 Histogram ---------
如何使用 corePlot 实现直方图。实际上,我正在尝试使用条形图。 在条形图中是否有任何选项可以对我的值进行分组。例如:所以我只能打印 3 条。这样值应该像这样分组: X 0...5: B
我有一个简单的数据集,其中脚本需要时间来完成各个步骤。时间是不可预测的,但主要分组在特定的时间范围内,但我想以十分之一秒的分组来绘制图表。 (我知道这很奇怪,这是一些报告可视化内容的要求)。我可以将我
我是一名优秀的程序员,十分优秀!