我想用黑色替换图像中的每个白色像素,但保持其他一切不变
Window {
id: window;
width: 800;
height: 600;
visible: true;
Image {
id: sourceImage
anchors.centerIn: parent
source: "qrc:/source.png"
}
Item {
anchors.fill: sourceImage
layer.enabled: true
layer.samplerName: "maskSource"
layer.effect: ShaderEffect {
fragmentShader: "
uniform lowp sampler2D maskSource;
uniform lowp float qt_Opacity;
varying highp vec2 qt_TexCoord0;
void main() {
vec4 pixel = texture2D(maskSource, qt_TexCoord0);
if (pixel == vec4(1.0, 1.0, 1.0, pixel.a)) {
pixel = vec4(0.0, 0.0, 0.0, pixel.a);
}
gl_FragColor = vec4(pixel.r, pixel.g, pixel.b, pixel.a);
}"
}
}
}
我无法让它发挥作用
答案 0 :(得分:1)
我找到了解决问题的方法:
var board = "";
//you can also set the size of the grid
var size = 8;
for ( var i = 1; i < size; i++ ) {
for ( var j = 1; j < size; j++) {
if ( i%2 === 0 ) {
board += "#";
board += " ";
}
else {
board += " ";
board += "#";
};
};
board += "\n";
};
console.log(board);
我用来检测白色的值(0.2,0.2,0.2)适用于我的图像,但它们可能不适用于所有情况。我不知道这是否是最好的。
答案 1 :(得分:-2)
也许您应该在image preprocessing algorithm
或Python
中使用C++
作为图片?然后将其加载到QML
应用程序中。
QML旨在用于UI部分,您必须尽可能避免在QML
中执行图像处理等操作。