import qrcode
import cv2
img = qrcode.make("town.eiot.kr")
img.save("static/town.png")
print(type(img))
print(img.size)
img2 = cv2.imread("static/town.png")
qr = cv2.QRCodeDetector()
data, box, straight_qrcode = qr.detectAndDecode(img2)
print(data)
-
위 코드는 Python에서 QR 코드를 생성하고, OpenCV를 사용하여 이를 읽어오는 작업을 수행합니다. 코드를 단계별로 분석하겠습니다.
---
### 코드 분석
1. **QR 코드 생성**
```python
import qrcode
img = qrcode.make("town.eiot.kr")
img.save("static/town.png")
```
- `qrcode` 모듈을 사용하여 `"town.eiot.kr"` 문자열로 QR 코드를 생성합니다.
- 생성된 QR 코드를 `static/town.png` 경로에 저장합니다.
- `qrcode.make()`의 반환값은 `PIL.Image.Image` 객체입니다.
2. **QR 코드 속성 출력**
```python
print(type(img))
print(img.size)
```
- `type(img)` 출력: `<class 'PIL.Image.Image'>`
- 이는 QR 코드 이미지가 `PIL.Image.Image` 객체임을 나타냅니다.
- `img.size` 출력: `(크기, 크기)`
- 생성된 QR 코드 이미지의 픽셀 크기(예: `(290, 290)`)입니다.
3. **OpenCV를 이용한 QR 코드 읽기**
```python
import cv2
img2 = cv2.imread("static/town.png")
qr = cv2.QRCodeDetector()
data, box, straight_qrcode = qr.detectAndDecode(img2)
print(data)
```
- `cv2.imread("static/town.png")`: OpenCV로 QR 코드 이미지를 읽습니다.
- `cv2.QRCodeDetector()`:
- OpenCV의 QR 코드 디코더 객체를 생성합니다.
- `qr.detectAndDecode(img2)`:
- QR 코드 검출과 디코딩을 한 번에 처리합니다.
- 반환값:
- `data`: QR 코드에 포함된 데이터(디코딩된 문자열).
- `box`: QR 코드 영역의 네 모서리 좌표.
- `straight_qrcode`: 정렬된 QR 코드 이미지.
4. **디코딩 결과 출력**
```python
print(data)
```
- QR 코드에서 읽어낸 데이터(`"town.eiot.kr"`)를 출력합니다.
---
### 주요 결과 예시
- **`print(type(img))` 결과**
```plaintext
<class 'PIL.Image.Image'>
```
- **`print(img.size)` 결과**
```plaintext
(290, 290)
```
- **`print(data)` 결과**
```plaintext
town.eiot.kr
```
---
### 결론
- QR 코드 생성 및 디코딩이 성공적으로 이루어졌습니다.
- 코드에서 오류는 없으며, `data` 변수에 QR 코드 문자열 `"town.eiot.kr"`이 올바르게 저장되었습니다.
plaintext
town.eiot.kr
결론
- QR 코드 생성 및 디코딩이 성공적으로 이루어졌습니다.