小编Ste*_*eve的帖子

在OpenCV(Python)中,为什么我从灰度图像中获取3个通道图像?

我在Ubuntu 12.04上使用Python(2.7)和OpenCV 2.4.6的绑定

我加载图像

    image = cv2.imread('image.jpg')
Run Code Online (Sandbox Code Playgroud)

然后我检查图像阵列的形状

    print image.shape
Run Code Online (Sandbox Code Playgroud)

我得到(480,640,3),我期望640x480彩色图像.然后我将图像转换为灰度并再次检查形状.

    gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    print gray_image.shape
Run Code Online (Sandbox Code Playgroud)

我得到(480,640,1),我期望640x480 灰度图像.然后我保存图像:

    cv2.imwrite('gray.jpg', gray_image)
Run Code Online (Sandbox Code Playgroud)

我在linux上,所以我试着用gThumb查看图像,它显示了所有的颜色通道.当我将灰色图像带回OpenCV时,图像再次有三个通道.我知道这个标志用于阅读图像:

    CV_LOAD_IMAGE_GRAYSCALE - If set, always convert image to the grayscale one
Run Code Online (Sandbox Code Playgroud)

但这听起来像是将图像作为彩色图像引入然后转换它.我正在将这个项目移植到RaspberryPi,所以我不希望发生不必要的操作.

编辑:我做了一些计时检查,我发现使用CV_LOAD_IMAGE_GRAYSCALE标志设置加载图像会导致图像加载速度提高两倍,而不管图像输入如何.

     Using a 3072 x 4608 x 3 image
     0.196774959564 seconds with default loading
     0.0931899547577 seconds with CV_LOAD_IMAGE_GRAYSCALE
Run Code Online (Sandbox Code Playgroud)

问题似乎是OpenCV正在创建3通道JPG输出,无论我是否有灰度图像矩阵!

我可以用什么其他应用程序来确保我得到一个8位通道JPG图像?(也许gThumb错误地报告了频道).

如果图像不是单通道,为什么OpenCV会在磁盘写入时将我的灰度图像保存为3通道图像?

提前致谢.

python jpeg opencv image-processing grayscale

33
推荐指数
2
解决办法
5万
查看次数

如何在Pandas系列中找到与输入数字最接近的值?

我见过:

这些与香草蟒蛇有关,而不是熊猫.

如果我有这个系列:

ix   num  
0    1
1    6
2    4
3    5
4    2
Run Code Online (Sandbox Code Playgroud)

我输入3,我怎样才能(有效地)找到?

  1. 如果在系列中找到,则索引为3
  2. 如果在系列中找不到,则该值的索引低于和高于3.

IE浏览器.使用上面的系列{1,6,4,5,2}和输入3,我应该得到带有索引(2,4)的值(4,2).

python ranking dataframe pandas

30
推荐指数
4
解决办法
3万
查看次数

OpenCV cvtColor()使用什么灰度转换算法?

将OpenCV中的图像从彩色转换为灰度时,使用什么转换算法?我试着在GitHub的源代码中查看这个,但我没有任何成功.

亮度方法平均最突出和最不突出的颜色:

  (max(R, G, B) + min(R, G, B)) / 2.
Run Code Online (Sandbox Code Playgroud)

平均方法只是平均值:

  (R + G + B) / 3.
Run Code Online (Sandbox Code Playgroud)

发光度方法是普通方法的更复杂版本.它还对这些值进行平均,但它形成了一个加权平均值来说明人类的感知.我们对绿色比其他颜色更敏感,所以绿色最重要.

    The formula for luminosity is 0.21 R + 0.72 G + 0.07 B.
Run Code Online (Sandbox Code Playgroud)

以下是一些转换算法的示例:http: //www.johndcook.com/blog/2009/08/24/algorithms-convert-color-grayscale/

algorithm opencv grayscale

12
推荐指数
1
解决办法
9235
查看次数

如何在 RSpec 中使用 I18n 翻译测试 Ruby 代码

在 RSpec 中使用 I18n 翻译测试 Ruby 代码时,我收到如下错误:

translation missing: en.lib.filter.equal_to
Run Code Online (Sandbox Code Playgroud)

这是一个简化的示例:

def word_for_operator
  I18n.t('lib.filter.equal_to')
end
Run Code Online (Sandbox Code Playgroud)

规格:

it "returns the correct label" do
  expect(filter.word_for_operator).to eq("some value")
end
Run Code Online (Sandbox Code Playgroud)

Rails 中一切工作正常。

如何在我的规格中使用 I18n?

ruby rspec ruby-on-rails internationalization rails-i18n

5
推荐指数
1
解决办法
1839
查看次数

Axlsx-格式化单元格中的文本

我似乎找不到有关是否可以用多个格式设置选项填充单个单元格的任何信息。

例如,我要在单元格A1中填充以下文本:“ Hello world,这是excel

这可能吗?如果可以,我应该使用哪种语法来做到这一点?

ruby ruby-on-rails axlsx

4
推荐指数
2
解决办法
3417
查看次数

如何找出分支中没有master的提交?

我们正在使用GitHub来存储代码存储库,并且我们希望所有开发人员在进行本地开发人员测试和合并之前,确保分支与master保持最新。

有两种使用master提交更新分支的方法:

  1. 合并master到我的分支feature_branch,然后推送feature_branch
  2. 将分支重新建立feature_branch到master上,然后强制push feature_branch

鉴于相关团队当前正在使用1.(合并工作流程),我如何看到:

  1. 提交的数量是在远程master分支,而不是远程的feature_branch
  2. 如果1中的数字> 0,则为true,否则为false。

具有与GitHub集成的功能是最可取的,但是我也想知道如何从命令行执行此操作。

我知道我可以做一个git diff master..feature_branch,但是实际上给了我所有的更改(并且是针对本地分支的)。我只想知道前面和后面的提交数量,与本地master和远程之间显示的方式相同master

git version-control merge github rebase

3
推荐指数
1
解决办法
1376
查看次数

检查哈希是否包含另一个哈希

鉴于我有一个哈希数组abc和一个哈希ghi:

abc = [{
  'a' => '1',
  'b' => '2',
  'c' => '3',
  'd' => '4'
}]
ghi = {
  'a' => '1',
  'b' => '2'
}
Run Code Online (Sandbox Code Playgroud)

选择散列的最干净,最有效的方法是什么?abc包含所有键值对ghi

我能够做到这一点:

abc.map {|n| n.slice(*ghi.keys) == ghi }.all?
Run Code Online (Sandbox Code Playgroud)

虽然它看起来不是很干净.

ruby hash ruby-1.9

2
推荐指数
1
解决办法
596
查看次数

Pandas 中两个数据帧的简单连接

我在使用 Pandas 的 Python 程序中有两个数据框。我是熊猫的新手。

每个都有许多列和行 - 第一个类似于:

   calc_1  calc_2 calc_3
0  34.3   43.1  42.0
2  3.0    4.0   5.0
3  6.1    6.1   6.2
4  4.2    4.3   4.5
Run Code Online (Sandbox Code Playgroud)

第二个类似于:

   gender  age 
0  M      25
2  M      27
3  M      27
4  F      36
Run Code Online (Sandbox Code Playgroud)

对于每个整数行索引,在第二个数据框中都有一个相应的条目。我想将它们连接到行索引相等的结果数据框中,例如 SQL 中的内部连接。

我似乎无法正确理解。附加结果是我应该拥有的行数的 2 倍。信息来自 CSV。

   calc_1  calc_2 calc_3  gender age
0  34.3   43.1  42.0      M      25
2  3.0    4.0   5.0       M      27
3  6.1    6.1   6.2       M      27
4  4.2    4.3   4.5       F      36
Run Code Online (Sandbox Code Playgroud)

如果可能,我想在加入时保留列顺序。

编辑: …

python dataframe pandas

0
推荐指数
1
解决办法
1559
查看次数

使用true/false值数组选择数组元素的最佳方法是什么?

我有两个数组:

a = [1, 2, 3, 4]
b = [true, true, false, false]
Run Code Online (Sandbox Code Playgroud)

选择a其对应元素的元素的最佳方法btrue什么?在这个例子中,我期望:

result = [1, 2]
Run Code Online (Sandbox Code Playgroud)

我是这样做的:

zipped = a.zip(b)
zipped.select{ |z| z[1] }.map{ |n| n.first }
# => [1, 2]
Run Code Online (Sandbox Code Playgroud)

我想知道纯Ruby中的最佳解决方案,但我也愿意接受GSL等的建议.

表现:

array_size = 4000
iterations = 1000

Benchmark.bm do |bm|
  bm.report do
    iterations.times do
      a.each_with_index.map { |a, i| a if b[i] }.compact
    end
  end
end

Benchmark.bm do |bm|
  bm.report do
    iterations.times do
      zipped = a.zip(b).select{ |z| z[1] }.map{ |n| …
Run Code Online (Sandbox Code Playgroud)

ruby arrays

0
推荐指数
2
解决办法
94
查看次数

将List <int>拆分为字符串的有效方法

我有一个List<int>可以包含1到n值的值.

让我们说它们是四个整数{3,11,108,32} 我需要将整数列表构造成这样的字符串

(3,11,108,32) - 即.逗号分隔

我意识到这是非常微不足道的,但我正在寻找最有效的解决方案.

例如,如果您只有一个项目,则字符串中不应该有逗号,但应该存在所有其他项目之间.

c#

-2
推荐指数
1
解决办法
70
查看次数