#!/usr/bin/env python2.7 import os import sys import cv2 from pyzbar import pyzbar def main(image_folder_path, output_file_name): img_files = [f for f in os.listdir(image_folder_path) if f.endswith(('.png')) qr_codes_found = [] for img_file in img_files: img_path = os.path.join(image_folder_path,img_file) img = cv2.imread(img_path) barcodes = pyzbar.decode(img) for barcode in barcodes: if barcode.type == 'QRCODE': qr_data = barcode.data.decode("utf-8") qr_codes_found.append((img_file, qr_data)) with open(output_file_name,'w') as f: for file_name,qr_content in qr_codes_found: f.write(f"{file_name}: {qr_content}\n") if __name__ == "__main__": image_folder_path = '/home/spurs/qr_test/' output_file_name = 'qr_codes_found.txt' main(image_folder_path,output_file_name)
时间: 2024-04-11 09:32:21 浏览: 171
这段代码是一个完整的脚本,用于在给定的图像文件夹中查找并解码 QR 码,并将解码结果保存到一个文件中。
脚本首先导入了需要的库和模块,包括 `os`、`sys`、`cv2` 和 `pyzbar`。
然后定义了 `main` 函数,这个函数是用来查找和解码 QR 码的核心部分,具体的功能和之前解释的一样。
最后,在 `__name__ == "__main__"` 的条件下,脚本设置了图像文件夹路径和输出文件名,并调用了 `main` 函数来执行查找和解码操作。
如果你运行这个脚本,它将会在指定的图像文件夹中查找并解码 QR 码,并将解码结果保存到一个名为 `qr_codes_found.txt` 的文件中。
相关问题
#!/usr/bin/env python3 import os import sys import cv2 from pyzbar import pyzbar def main(image_folder_path, output_file_name): img_files = [f for f in os.listdir(image_folder_path) if f.endswith(('.png'))] qr_codes_found = [] for img_file in img_files: img_path = os.path.join(image_folder_path,img_file) img = cv2.imread(img_path) barcodes = pyzbar.decode(img) for barcode in barcodes: if barcode.type == 'QRCODE': qr_data = barcode.data.decode("utf-8") qr_codes_found.append((img_file, qr_data)) with open(output_file_name,'w') as f: for file_name,qr_content in qr_codes_found: f.write(f"{file_name}: {qr_content}\n") if __name__ == "__main__": image_folder_path = '/home/' output_file_name = 'qr_codes_found.txt' main(image_folder_path,output_file_name)
这段代码看起来有点问题,但我会尝试帮你解决。首先,确保你已经安装了以下依赖库:`cv2` 和 `pyzbar`。
接下来,你需要注意以下几点:
1. 请确保 `image_folder_path` 变量的值是指向包含要处理图像的文件夹的正确路径。
2. 请确保你有读取图像文件和写入结果文件的权限。
3. 请确保 `output_file_name` 变量的值包含一个合法的文件名。
如果你仍然遇到错误,请提供完整的错误信息以便更好地帮助你解决问题。
#!/usr/bin/env python2.7 # coding=UTF-8 import os import sys import cv2 from pyzbar import pyzbar def main(image_folder_path, output_file_name): img_files = [f for f in os.listdir(image_folder_path) if f.endswith(('.png'))] qr_codes_found = [] print("Image files:") for img_file in img_files: print(img_file) for img_file in img_files: img_path = os.path.join(image_folder_path,img_file) img = cv2.imread(img_path) barcodes = pyzbar.decode(img) for barcode in barcodes: if barcode.type == 'QRCODE': qr_data = barcode.data.decode("utf-8") qr_codes_found.append((img_file, qr_data)) with open(output_file_name,'w') as f: for file_name,qr_content in qr_codes_found: file_name = os.path.splitext(file_name)[0] # 去掉文件名的扩展名 f.write("{}: {}\n".format(file_name, qr_content)) if __name__ == "__main__": image_folder_path = '/root/Pictures' output_file_name = 'qr_codes_found.txt' main(image_folder_path,output_file_name)如果识别到相同代码,如何让最后获得的文本中没有相同的解码内容
如果要确保最后获得的文本中没有相同的解码内容,您可以在保存解码结果之前进行一些处理。以下是一种方法:
1. 在`qr_codes_found`列表中保存所有解码结果。
2. 创建一个新的列表`unique_qr_codes`来保存唯一的解码内容。
3. 遍历`qr_codes_found`列表,将每个解码内容添加到`unique_qr_codes`列表中,但仅当该解码内容不在`unique_qr_codes`列表中时才添加。
4. 将`unique_qr_codes`列表中的内容保存到文件中。
下面是修改后的代码示例:
```python
def main(image_folder_path, output_file_name):
img_files = [f for f in os.listdir(image_folder_path) if f.endswith(('.png'))]
qr_codes_found = []
print("Image files:")
for img_file in img_files:
print(img_file)
for img_file in img_files:
img_path = os.path.join(image_folder_path,img_file)
img = cv2.imread(img_path)
barcodes = pyzbar.decode(img)
for barcode in barcodes:
if barcode.type == 'QRCODE':
qr_data = barcode.data.decode("utf-8")
qr_codes_found.append((img_file, qr_data))
unique_qr_codes = []
for file_name, qr_content in qr_codes_found:
if qr_content not in unique_qr_codes:
unique_qr_codes.append(qr_content)
with open(output_file_name,'w') as f:
for qr_content in unique_qr_codes:
f.write("{}\n".format(qr_content))
if __name__ == "__main__":
image_folder_path = '/root/Pictures'
output_file_name = 'qr_codes_found.txt'
main(image_folder_path,output_file_name)
```
这样,最后生成的文本文件中将只包含唯一的解码内容,不会有重复的内容出现。
阅读全文