微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

opencv python中的限制扫描区域

如何解决opencv python中的限制扫描区域

我有一个二维码扫描仪的代码。如何限制这样的扫描区域?
https://www.checkfront.com/wp-content/uploads/2017/08/Android-Mobile-QR-Scanner.png
在照片中,您可以找到扫描区域。我试图在网上搜索我的问题。但不幸的是,我没有找到有用的东西。希望你能帮助我。谢谢

代码

import cv2
import numpy as np
import sys
import time
import pyzbar.pyzbar as pyzbar

cap = cv2.VideoCapture(0)
hasFrame,frame = cap.read()
vid_writer = cv2.VideoWriter('output.avi',cv2.VideoWriter_fourcc('M','J','P','G'),10,(frame.shape[1],frame.shape[0]))

# display barcode and QR code location
def display(im,decodedobjects):

  # Loop over all decoded objects
  for decodedobject in decodedobjects:
    points = decodedobject.polygon

    # If the points do not form a quad,find convex hull
    if len(points) > 4 :
      hull = cv2.convexHull(np.array([point for point in points],dtype=np.float32))
      hull = list(map(tuple,np.squeeze(hull)))
    else :
      hull = points;

    # Number of points in the convex hull
    n = len(hull)

    # Draw the convext hull
    for j in range(0,n):
      cv2.line(im,hull[j],hull[ (j+1) % n],(255,0),3)

  # display results
  # cv2.imshow("Results",im);

# Create a qrCodeDetector Object
qrDecoder = cv2.QRCodeDetector()

# Detect and decode the qrcode
t = time.time()
while(1):
    hasFrame,inputimage = cap.read()
    if not hasFrame:
        break
    decodedobjects = pyzbar.decode(inputimage)
    if len(decodedobjects):
        zbarData = decodedobjects[0].data
    else:
        zbarData=''
    opencvData,bBox,rectifiedImage = qrDecoder.detectAndDecode(inputimage)
    if zbarData:
        cv2.putText(inputimage,"ZBAR : {}".format(zbarData),(10,50),cv2.FONT_HERShey_SIMPLEX,1,(0,255,2,cv2.LINE_AA)
    else:
        cv2.putText(inputimage,"ZBAR : QR Code NOT Detected",255),cv2.LINE_AA)
    if opencvData:
        cv2.putText(inputimage,"OpenCV:{}".format(opencvData),150),"OpenCV:QR Code NOT Detected",cv2.LINE_AA)

    display(inputimage,decodedobjects)
    cv2.imshow("Result",inputimage)
    vid_writer.write(inputimage)
    k = cv2.waitKey(20)
    if k == 27:
        break
cv2.destroyAllWindows()
vid_writer.release()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?