OpenCV로 간단한 QrCode 감지 및 디코딩 코드를 작성했습니다.
하지만 제가 직면 한 문제는 QR 코드가 감지되었지만 다음 이미지로 디코딩 할 수 없다는 것입니다 (아래 참조).
내가 작성한 코드는 다음과 같습니다.
int main(int argc, char* argv[])
{
cv::Mat src = imread("scaled.png");
if(src.empty())
{
cout << "can not open " << "Picture" << endl;
return -1;
}
QRCodeDetector qrDecoder = QRCodeDetector();
std::string data;
data = qrDecoder.detectAndDecode(src);
if(data.length()>0)
{
cout << "data: " << data; //data should be STOP
}
return 0;
}
누군가 QR 코드를 감지 할 수 있지만 디코딩 할 수없는 이유를 알고 있습니까?
내가 사용한 이미지는 다음과 같습니다.
편집 : OpenCv로 QR 코드 감지에 대해 조금 더 검색 한 결과 다음에서 코드 스 니펫을 찾았습니다. https://docs.opencv.org/3.4.9/de/dc3/classcv_1_1QRCodeDetector.html
setEpsX(double epsX)
setEpsY(double epsY)
불행히도 문서가 매우 나쁘기 때문에 누군가이 두 매개 변수가 무엇인지 알고 내 문제를 해결할 수 있는지 알고 있습니까?
문제를 발견 한 것 같습니다
. 사용하는 이미지의 크기가 2400x1600으로 디코딩하기에 큽니다. 따라서 이미지를 디코딩하기 전에 이미지 크기를 조정하여 코드가 다음과 같이 보이도록합니다.
int main(int argc, char* argv[])
{
cv::Mat src = imread("scaled.png");
if(src.empty())
{
cout << "can not open " << "Picture" << endl;
return -1;
}
std::string data;
cv::resize(src,src, cv::Size(1600,1200));
QRCodeDetector qrDecoder = QRCodeDetector();
data = qrDecoder.detectAndDecode(src);
if(data.length()>0)
{
cout << "data: " << data; //data should be STOP
}
return 0;
}
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다