iOS 프로젝트에서 zxing 라이브러리를 사용하고 있습니다. QR 코드를 읽고 작성하기위한 라이브러리입니다. 이 이루어지는 웹상 내 연구 브라우징 화상을 디코딩하는 과정에서 반전 픽셀 - zxing
는 단계 :- 소스로부터의 화상을 얻어,
- 255 계조
- 디코딩 모든 화소 변환 데이터
이 특정 라이브러리에서 지원하지 않는 한 가지로 역변환 된 QRCode의 읽기/디코딩 (작성시 누락 된 것 같습니다)입니다.
반전 된 QR 코드는 기본적으로 일반 코드와 동일하지만 반전 된 색상 (흰색은 검은 색이고 검은 색은 흰색)입니다. 그러나 QRCodes 표준은 거꾸로 된 QRCodes 구현을 설명하지 않으며 zxing 프로젝트 웹 사이트에는 몇 가지 요청과 문제가 있으므로 직접 구현해야합니다.
아래의 방법은 픽셀 (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