这里tf.browser.fromPixels返回只有零的张量。 image.data包含预期的值(不仅是零)。使用脚本标记加载tfjs。 tfjs 1.0.0,但更改发行版无济于事。
有什么问题?可能有些愚蠢。我是Tensorflow.js的新手...
<canvas id="canvas" width="100" height="100" style="border:1px solid #FF0000;"></canvas>
....
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var image = ctx.getImageData(0, 0, canvas.height, canvas.width);
var x = tf.browser.fromPixels(image);
答案 0 :(得分:1)
创建后,画布的所有像素值均设置为0。
var canvas = document.getElementById('canvas');
canvas
是只有0个值的imageData。所创建的张量的值为0也就不足为奇了,因为用于创建它的画布除了0值之外没有任何图像数据。
CSS样式不会更改画布的基础值。结果,即使边框颜色设置为红色,也不会反映在imageData上。
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var image = ctx.getImageData(0, 0, canvas.height, canvas.width);
var x = tf.browser.fromPixels(image);
console.log(x.shape) // height, width, 3
<html>
<head>
<!-- Load TensorFlow.js -->
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.0"> </script>
</head>
<body>
<canvas id="canvas" width="100" height="100" style="border:1px solid #FF0000;"></canvas>
</body>
</html>
答案 1 :(得分:0)
问题是我使用了ctx.strokeStyle ='#000000'(黑色)。但是画布已经充满了0(如edkeveked所说)。这意味着该图形不可见。我看到的数据可能是alpha通道,但是alpha通道已被fromPixels删除。
解决方案是使用'#000000'以外的其他strokeStyle和/或将ctx.fillRect与fillStyle =“ #FFFFFF”(白色)一起使用。
所以fromPixels还可以...