私はiOSプロジェクトでzxingライブラリを使用しています。 QRコードを読んで作成するためのライブラリです。反転ピクセル - zxing
画像の復号処理は、このステップ作られたウェブの周りに私の研究・ブラウジングから:
- は255のグレースケール
- デコードにすべてのピクセルを変換し
- 、ソースからの画像を撮影しますこの特定のライブラリでサポートされていないデータ
ことの一つは、反転QRCodesの/デコードを(と私は、これはまた、作成に欠落していることをかなり確信して)読んでいます。
反転QRコードは基本的に通常のコードと同じですが、反転色(白は黒、黒は白)です。しかし、QRコードの標準では、逆向きのQRコードの実装やzxingのプロジェクトのWebサイトについては記述されていないため、いくつかのリクエストや問題がありますので、これを自分で実装する必要があります。
以下の方法は、ピクセル(unsigned char*
)を反転するロジックを挿入するのに適していますが、C++での経験がないため、この書き込みが行われます。
grayData_
は、unsigned char*
データ型です。この変数の中には、ソースからのgrayScaledピクセルがあります。
私がしたいことは、これらのピクセルを反転させることです。
私が正しい場合、これはunsigned char cz = (255 - val);
によって行われますか?
unsigned char* GreyscaleLuminanceSource::getMatrix() {
int size = width_ * height_;
unsigned char* result = new unsigned char[size];
if (left_ == 0 && top_ == 0 && dataWidth_ == width_ && dataHeight_ == height_) {
memcpy(result, greyData_, size);
} else {
for (int row = 0; row < height_; row++) {
memcpy(result + row * width_, greyData_ + (top_ + row) * dataWidth_ + left_, width_);
}
}
//return result;
//from this point down is my implementation
printf(" %c", result[200]);
printf(" %c", result[600]);
printf(" %c", result[6000]);
printf(" %c", result[7000]);
for (int i = 0; i < size; i++)
{
int val = static_cast<int>(result[i]);
unsigned char cz = (255 - val);
result[i] = cz;
}
printf("******\n");
printf(" %c", result[200]); //prints a " " char to console/terminal
printf(" %c", result[600]); //prints a " " char to console/terminal
printf(" %c", result[6000]); //prints a " " char to console/terminal
printf(" %c", result[7000]); //prints a " " char to console/terminal
return result;
}
これは、ピクセルを反転する正しい方法ですか?そして、私はresult
変数のデータを変更することに満足していません。
C++コードをAndroidアプリケーションに追加/編集するにはどうすればよいですか? –
Francis、iOSのZXingを使った逆バーコードをサポートするための変更を、他の人が使用できるかもしれないオープンソースのレポに入れましたか?私たちは同じ機能が必要です。ありがとう! – Uniphonic