我正在尝试将RGB转换为感知均匀的色彩空间CIELAB。维基百科指出:
“首先必须将RGB或CMYK值转换为特定的绝对色彩空间,例如sRGB或Adobe RGB。此调整将取决于设备,但是转换后的结果数据将与设备无关,从而允许对数据进行转换转换为CIE 1931颜色空间,然后转换为L * a * b *。”
我知道一旦转换为sRGB,会有一些简单的转换,但是我还没有发现任何从RGB到sRGB的材料。那么,存在哪些方法可以进行这种转换?
所以我试图计算每个任意维度的两个矩阵的克罗内克积。(我仅在示例中使用相同维度的方阵)
最初我尝试使用 kron:
a = np.random.random((60,60))
b = np.random.random((60,60))
start = time.time()
a = np.kron(a,b)
end = time.time()
Output: 0.160096406936645
Run Code Online (Sandbox Code Playgroud)
为了尝试加快速度,我使用了tensordot:
a = np.random.random((60,60))
b = np.random.random((60,60))
start = time.time()
a = np.tensordot(a,b,axes=0)
a = np.transpose(a,(0,2,1,3))
a = np.reshape(a,(3600,3600))
end = time.time()
Output: 0.11808371543884277
Run Code Online (Sandbox Code Playgroud)
在网上搜索了一下之后,我发现(或至少据我所知)numpy 在必须重塑已转置的张量时会生成一个额外的副本。
所以我然后尝试了以下(这段代码显然没有给出 a 和 b 的 kronecker 乘积,但我只是把它作为测试):
a = np.random.random((60,60))
b = np.random.random((60,60))
start = time.time()
a = np.tensordot(a,b,axes=0)
a = np.reshape(a,(3600,3600))
end = time.time()
Output: 0.052041053771972656
Run Code Online (Sandbox Code Playgroud)
我的问题是:如何在不遇到与转置相关的问题的情况下计算克罗内克积?
我只是在寻找更快的速度,因此解决方案不必使用tensordot. …
我一直试图让这个矩形移动我用for循环创建的.这段代码发生的一切就是有一个原始的矩形,然后在那个矩形旁边有一个新的矩形.没有动画发生,只有那两个矩形显示在窗口上.有什么方法可以让这个矩形动画化?
import java.awt.*;
import javax.swing.*;
public class Gunman extends JComponent {
/**
*
*/
private static final long serialVersionUID = 1L;
public int x = 10;
public int y = 10;
public int width = 8;
public int height = 10;
public void paint(Graphics g) {
g.setColor(Color.red);
g.drawRect (x, y, width, height);
g.fillRect (x, y, width, height);
for(int i = 0; i<=1024; i++){
g.setColor(Color.red);
g.drawRect(x++, y, width, height);
g.fillRect(x++, y, width, height);
}
}
}
Run Code Online (Sandbox Code Playgroud) 嗨,我想尝试用javascript设置子字符串.这是我的代码:
function runtest(){
document.getElementById("test1").innerHTML.substring(0,2).style.fontStyle="italic";
}
Run Code Online (Sandbox Code Playgroud)
子字符串函数有效,但是当我添加样式时,错误控制台会给出错误"undefined".如何使用javascript设置此子字符串的样式?