智能车二维码识别

1.Ubutu自带python3.6环境
2.安装opencv,参考博客ubuntu 18.04 上安装opencv【全程】_forever_008的博客-优快云博客_ubuntu18.04安装opencv 注:如果Ubuntu下载包太慢可以在windows下下载好直接拉到ubuntu中然后再进行编译。
3.安装aruco,只需要安装opencv-contrib-python这个库,aruco包放在这个库里面,参考博客OpenCV-Aruco模块调用 [python版]_ShakalakaPHD的博客-优快云博客
或者参考https://pypi.org/project/opencv-contrib-python/(这是官网安装步骤)
4.标定摄像头,得到摄像头参数.下载aruco包安装,下载编译参考博客基于opencv的ArUco的视觉定位之ArUco安装_share space的博客-优快云博客_aruco opencv
标定摄像头参考博客ArUco 相机校准(from images)_gaiyonghuming110的博客-优快云博客
5.Aruco码识别:注:aruco中会涉及到aruco码预定义字典的使用,
Aruco字典介绍:DICT_6X6_250中,6x6表示的是边为6个方块的二维码,250则表示这个字典中有250个码。查看DICT_6X6_250的类型为“int”,然后直接输出DICT_6X6_250会得到一个数字,这样在加载与定义字典的时候可以直接使用这个数字,

因此加载与定义字典DICT_6X6_250就可以用10代替,这一步很重要,这样可以用一个for循环将所有的字典同时调用起来。
代码参考博客玩了下opencv的aruco(python版)_weixin_30617695的博客-优快云博客,加上自己的修改,得到以下代码。
Aruco在电脑上识别参考代码:

import time
import cv2
from cv2 import aruco

cap = cv2.VideoCapture(0)
ret, frame = cap.read()#le ret:
while True:
ret, frame = cap.read()#
h1, w1 = frame.shape[:2]#frame.shape[ : 2] 表示取彩色图片的长、宽,frame.shape[ : 3] 则表示取彩色图片的长、宽、通道。


 # 读取摄像头画面
 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
 for i in range(16):
  aruco_dict = aruco.Dictionary_get(i)#  i表示所有的预装字典,用数字表示出来,方便使用
  parameters = aruco.DetectorParameters_create()
  corners, ids, rejectedImgPoints = aruco.detectMarkers(gray,
                                                      aruco_dict,
                                                      parameters=parameters)
  aruco.drawDetectedMarkers(frame, corners, ids)

  #cv2.putText(frame,)
 if ids is not None:
     print('id:'+str(ids))
 cv2.imshow("frame", frame)
 key = cv2.waitKey(1)
 if key == 27:  # 按esc键退出
    print('esc break...')
    cap.release()
    cv2.destroyAllWindows()
    break
#if key == ord(' '):  # 按空格键保存
    #        num = num + 1
    #        filename = "frames_%s.jpg" % num  # 保存一张图像
    #filename = str(time.time())[:10] + ".jpg"
    #cv2.imwrite(filename, frame)

解决错误:
1.pip install 时报错 ERROR: Could not install packages due to an EnvironmentError: [WinError 5] 拒绝访问(已解决)
参考博客pip install 时报错 ERROR: Could not install packages due to an EnvironmentError: [WinError 5] 拒绝访问(已解决)_小小白学计算机的博客-优快云博客
2小车上识别二维码,小车上获得的是原图,因此需要进行镜像转换,参考代码:

import time
import numpy as np
import cv2
from cv2 import aruco
cap = cv2.VideoCapture(0)
ret, frame = cap.read()
while ret:
ret, frame = cap.read()
picture=cv2.flip(frame,1)#图片镜像转换
h1, w1 = picture.shape[:2]

    
    gray = cv2.cvtColor(picture, cv2.COLOR_BGR2GRAY)
    #for i in range(16):
    aruco_dict = aruco.Dictionary_get(3)
    parameters = aruco.DetectorParameters_create()
    corners, ids, rejectedImgPoints = aruco.detectMarkers(gray,
                                                          aruco_dict,
                                                          parameters=parameters)
    aruco.drawDetectedMarkers(picture, corners, ids)

    #cv2.putText(frame,)
    if ids is not None:

        print('id:'+str(ids))
    cv2.imshow("frame", picture)
    key = cv2.waitKey(1)
    if key == 27:  # 
        print('esc break...')
        cap.release()
        cv2.destroyAllWindows()
        break
    #if key == ord(' '):
        #        num = num + 1
        #        filename = "frames_%s.jpg" % num  # 
      #  filename = str(time.time())[:10] + ".jpg"
       # cv2.imwrite(filename, frame)
Ros工作空间创建、节点编写参考博客ROS 发布消息和订阅消息 for Python_Coxhuang的博客-优快云博客_python订阅ros消息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值