小编zop*_*eux的帖子

使用Python PIL更改图像色调

使用Python PIL,我正在尝试调整给定图像的色调.

我对图形的术语不太满意,所以我所说的"调整色调"就是做了名为"Hue/saturation"的Photoshop操作:这是统一改变图像的颜色,如下所示:

  • 原版的: 原版的
  • 色调调整为+180(红色): 色调:-180
  • 色调调整为-78(绿色): 色调:-78

仅供参考,Photoshop为此色调设置使用-180到+180的比例(其中-180等于+180),这可能代表HSL色调比例(以0-360度表示).

我正在寻找的是一个函数,给定PIL图像和[0,1]内的浮动色调(或[0,360]内的int,无关紧要),返回图像,其色调被移位如上例所示的色调.

到目前为止我所做的是荒谬的,显然没有给出理想的结果.它只是将原始图像与填充颜色的图层混合了一半.

import Image

im = Image.open('tweeter.png')
layer = Image.new('RGB', im.size, 'red') # "hue" selection is done by choosing a color...
output = Image.blend(im, layer, 0.5)
output.save('output.png', 'PNG')
Run Code Online (Sandbox Code Playgroud)

(请不要笑)结果: output.png

提前致谢!


解决方案:这里更新了unutbu代码,因此它完全符合我的描述.

import Image
import numpy as np
import colorsys

rgb_to_hsv = np.vectorize(colorsys.rgb_to_hsv)
hsv_to_rgb = np.vectorize(colorsys.hsv_to_rgb)

def shift_hue(arr, hout):
    r, g, b, a = np.rollaxis(arr, axis=-1)
    h, s, v = rgb_to_hsv(r, g, b) …
Run Code Online (Sandbox Code Playgroud)

python image python-imaging-library hue

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

Python:解析JSON字符串时处理损坏的unicode字节

我的代码从UserVoice网站获取一些内容.您可能知道,UserVoice是一个无法正确处理数据的软件.实际上,为了减少搜索页面上的文本量,他们将文本剪切为300个字符,然后在末尾添加"...".事实上,他们不关心在多字节字符的中间切割,导致部分utf-8"字节":例如.对于èchar,我得到了\xc3而不是\xc3\xa8s.

当然,当我给这个可怕的汤时json.loads,它失败了UnicodeDecodeError.所以我的问题很简单:我怎么能问json.loads忽略这些坏字节,因为我会做用.decode('utf-8', 'ignore'),如果我有访问函数的内部?

谢谢.

python unicode json

13
推荐指数
2
解决办法
6908
查看次数

Sox:使用pad合并两个音频文件

我正在使用该sox工具,我想合并两个音频文件,让我们说long.oggshort.ogg输出一个文件output.ogg.这很容易使用$ sox -m long.ogg short.ogg output.ogg.

事情是,我想short.oggn秒后打(而long.ogg应该从一开始就启动).为此,我找到了效果.但我不理解只延迟short.ogg输入文件的语法,而不是延迟输入文件的语法long.ogg.

我找到了一种(脏)方式(n = 6):

$ sox short.ogg delayed.ogg pad 6
$ sox -m long.ogg delayed.ogg output.ogg
Run Code Online (Sandbox Code Playgroud)

我不想创建一个中间文件.在此先感谢您的帮助.

audio merge delay pad sox

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

QVariantList.append() 合并列表而不是嵌套

当我尝试将 a 嵌套QVariantList在 another 中时QVariantList,结果是两个列表的平面合并,而不是子列表。

演示代码:

QVariantList container;

QVariantList nested() << "bar" << "baz";

container.append("foo");  // or container << "foo";
container.append(nested); // or container << nested; 
Run Code Online (Sandbox Code Playgroud)

我得到了什么(缩进是我的):

QVariant(QVariantList,
  QVariant(QString, "foo"),
  QVariant(QString, "bar"),
  QVariant(QString, "baz"),
)
Run Code Online (Sandbox Code Playgroud)

我期望什么:

QVariant(QVariantList,
  QVariant(QString, "foo"),
  QVariant(QVariantList, 
    QVariant(QString, "bar"),
    QVariant(QString, "baz")
  )
)
Run Code Online (Sandbox Code Playgroud)

list qvariant qt5.5

4
推荐指数
1
解决办法
1825
查看次数

jq:从嵌套对象中选择键的子集

输入:

\n\n
{"success": true, "results": {"a": \xe2\x80\xa6, "b": \xe2\x80\xa6, "c": \xe2\x80\xa6}}\n
Run Code Online (Sandbox Code Playgroud)\n\n

考虑到我想保留所需的输出b

\n\n
{"success": true, "results": {"b": \xe2\x80\xa6}}\n
Run Code Online (Sandbox Code Playgroud)\n\n

我尝试过的事情:

\n\n
$ jq \'del(select(.results.b | not))\'\n{"success": true, "results": {"a": \xe2\x80\xa6, "b": \xe2\x80\xa6, "c": \xe2\x80\xa6}}\n# removes nothing from "results"\n\n$ jq \'with_entries(select(.key == "success" or .key == "results.b"))\'\n{"success": true}\n# nested comparison not understood; returns only "success"\n
Run Code Online (Sandbox Code Playgroud)\n\n

谢谢!

\n

json nested edit jq

4
推荐指数
1
解决办法
2221
查看次数

Python:解析类似JSON的Javascript数据结构(带连续逗号)

我想解析类似JSON的字符串.它们与普通JSON的唯一区别在于数组中存在连续的逗号.当有两个这样的逗号时,它隐含意味着null应插入其中.例:

       JSON-like:  ["foo",,,"bar",[1,,3,4]]
      Javascript:  ["foo",null,null,"bar",[1,null,3,4]]
Decoded (Python):  ["foo", None, None, "bar", [1, None, 3, 4]]
Run Code Online (Sandbox Code Playgroud)

本机json.JSONDecoder类不允许我更改数组解析的行为.我只能修改对象(dicts),整数,浮点数,字符串的解析器(通过给kwargs函数JSONDecoder(),请参阅doc).

那么,这是否意味着我必须从头开始编写JSON解析器?可以使用Python代码,json但它非常混乱.我宁愿使用它的内部而不是复制它的代码!

javascript python parsing json

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

标签 统计

json ×3

python ×3

audio ×1

delay ×1

edit ×1

hue ×1

image ×1

javascript ×1

jq ×1

list ×1

merge ×1

nested ×1

pad ×1

parsing ×1

python-imaging-library ×1

qt5.5 ×1

qvariant ×1

sox ×1

unicode ×1