新しい画像を作成するコードを記述しました。私の背景イメージには黒い領域があり、forループが黒のピクセルになると、新しいイメージに青のイメージが描画されます。それ以外の場合は元のピクセルが描画されます。私はこれを行うことができると思ったが、プログラムは実行し続ける。新しい画像で元のピクセルが黒だった場合、Qtは青のピクセルを描画します
QApplication a(argc, argv);
int c, m, y, k, al;
QColor color;
QColor drawColor;
QImage background;
QImage world(1500, 768, QImage::Format_RGB32);
QSize sizeImage;
int height, width;
background.load("Background.jpg");
world.fill(1);
QPainter painter(&background);
sizeImage = background.size();
width = sizeImage.width();
height = sizeImage.height();
for(int i = 0; i < height; i++)
{
for(int z = 0; z < width; z++)
{
color = QColor::fromRgb (background.pixel(i,z));
color.getCmyk(&c,&m,&y,&k,&al);
if(c == 0 && m == 0 && y == 0 && k == 0) //then we have black as color and then we draw the color blue
{
drawColor.setBlue(255);
painter.setPen(drawColor);
painter.drawPoint(i,z);
}
}
}
//adding new image to the graphicsScene
QGraphicsPixmapItem item(QPixmap::fromImage(background));
QGraphicsScene* scene = new QGraphicsScene;
scene->addItem(&item);
QGraphicsView view(scene);
view.show();
私のループは間違っているのですか、それとも私の画家ですか?それはQImage :: pixel:座標(292,981)が範囲外ですが、soo多くのピクセルでは、使用するのに十分速くありません。
「プログラムは実行し続けています」とはどういう意味ですか?それは決してforループから出ることはありませんか?あなたは期待した結果を得られないのですか? – Bart
ループが非常に遅いのは単純ですか?そのような個々のピクセルを読み書きすることによって大きなイメージを変換することは少し遅れていくだろうと私には思われます! – Robinson
その後、より良いアプローチは何ですか?青のピクセルだけを再描画すると思っていたかもしれませんが、イメージをループする方法はわかりません。 – user1007522