opencv 我需要一个Python程序来检测相机RAW文件中的QR码

cld4siwp  于 2023-03-03  发布在  Python
关注(0)|答案(2)|浏览(139)

我需要遍历一个相机原始数据文件夹(cr2)文件,并检测图像是否包含QR码,如果是,则捕获数据。我需要将其作为Automator程序运行,希望作为Python脚本。我可以使用jpg或png文件,但我需要读取相机原始数据。我是Python新手,曾尝试找到解决方案,但一无所获。所有的解决方案,我可以文件读取jpg或png文件,而不是RAW。有人能帮忙吗?
我试过python cv2库,它可以很好地处理jpg或png文件,但在阅读佳能相机的原始文件时,会出现图像为空的错误。我能找到的所有解决方案都只能处理jpg,png或视频文件

ncgqoxb0

ncgqoxb01#

你能把RAW文件转换成JPG或PNG格式吗?这似乎是最简单的解决方案。也许你可以建立一个脚本来转换图像,然后检查QR码。

ztyzrc3y

ztyzrc3y2#

通过翻转图像修复了这个问题。虽然我的iPhone摄像头可以检测到转换后文件上的QR码数据,但CV2检测器无法检测到。当我添加一行代码来翻转图像时,检测器工作正常。

import os
from os import listdir
import cv2
from PIL import Image

#convert camera raw image to jpg
im = Image.open("JBS_9036.CR2")
rgb_im = im.convert('RGB')
rgb_im.save('JBS_9036.JPG')

#read the converted image
image = cv2.imread("JBS_9036.JPG")
mirrored_image = cv2.flip(image, 1)

#initalize the cv2 QRCode detector
detector = cv2.QRCodeDetector()

# detect and decode
data, bbox, straight_qrcode = detector.detectAndDecode(mirrored_image)

#show results
# if there is a QR code
if bbox is not None:
    myData = (f"{data}")
    print(f"QRCode Found data= {data}")

else:
    print("No QR Code Found")

相关问题