私の画像のHSV値を変更したい。私は以下のコードを書いた。私はHSVに間違っていますか?
は私が間違っているの何それは大丈夫ですか:私はそれを行うとき、生憎私はその結果を得ましたか。ご質問がありましたら、私にお書きください。私が何を意味するのか知っていれば幸いですありがとう!
#include "widget.h"
#include "ui_widget.h"
#include <iostream>
#include <stdlib.h>
#include <math.h>
using namespace std;
Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget)
{
image = QImage("D:/Pobrane/Grafika/Hsv (dla obrazka)/1.jpg");
imagee = QImage("D:/Pobrane/Grafika/Hsv (dla obrazka)/1.jpg");
bits = image.bits();
bitss = imagee.bits();
ui->setupUi(this);
h=s=v=0;
}
Widget::~Widget()
{
delete ui;
}
void Widget::paintEvent(QPaintEvent*)
{
QPainter p(this);
QImage pix(bitss, 600, 600, QImage::Format_RGB32);
p.drawImage(0,0,pix);
}
void Widget::on_H_slider_valueChanged(int value)
{
update();
h=value;
imagee=image;
for(int i=0; i<imagee.width(); i++)
{
for(int j=0; j<imagee.height(); j++)
{
QColor color = imagee.pixelColor(i,j);
if (s!=0 && v!=0) color.setHsv(h, s, v, color.alpha());
else if (s!=0) color.setHsv(h, s, color.value(), color.alpha());
else if (v!=0) color.setHsv(h, color.saturation(), v, color.alpha());
else color.setHsv(h, color.saturation(), color.value(), color.alpha());
imagee.setPixelColor(i, j, color);
}
}
}
void Widget::on_S_slider_valueChanged(int value)
{
update();
s=value;
imagee=image;
for(int i=0; i<imagee.width(); i++)
{
for(int j=0; j<imagee.height(); j++)
{
QColor color = imagee.pixelColor(i,j);
if (h!=0 && v!=0) color.setHsv(h, s, v, color.alpha());
else if (h!=0) color.setHsv(h, s, color.value(), color.alpha());
else if (v!=0) color.setHsv(color.hue(), s, v, color.alpha());
else color.setHsv(color.hue(), s, color.value(), color.alpha());
imagee.setPixelColor(i, j, color);
}
}
}
void Widget::on_V_slider_valueChanged(int value)
{
update();
v=value;
imagee=image;
for(int i=0; i<imagee.width(); i++)
{
for(int j=0; j<imagee.height(); j++)
{
QColor color = imagee.pixelColor(i,j);
if (h!=0 && s!=0) color.setHsv(h, s, v, color.alpha());
else if (h!=0) color.setHsv(h, color.saturation(), v, color.alpha());
else if (s!=0) color.setHsv(color.hue(), s, v, color.alpha());
else color.setHsv(color.hue(), color.saturation(), v, color.alpha());
imagee.setPixelColor(i, j, color);
}
}
}
開発環境に付属のデバッガを使用してこのコードをステップ実行すると、環境にデバッグツールが付属していない場合は、プログラムの環境がどこから外れていますか? – user4581301
私は分かりませんが、私のプログラムは間違っていると思います。 – zewukellorre
私は色相と彩度を変更すると大丈夫ですし、色相、彩度と値を変更すると絵のようになるので、これはおそらくVALUEの問題です。 – zewukellorre