cimport numpy as np报错_「树莓派」使用OpenCV & Numpy机器视觉来巡线

本文介绍如何利用OpenCV和Numpy在树莓派上进行机器视觉巡线,通过分析图像中的黑白线条定位,适用于不同背景颜色的场景。
摘要由CSDN通过智能技术生成
d2224ed1d134f98d9c201cc5118e896a.png

本期讲解如何使用OpenCV以及Numpy来分析画面中的黑线或白线的所在位置,从而实现机器视觉来巡线。

85298f8f42a6d228a9dc127707f3d80b.gif

我们可以从黑色背景上寻白线也可以从白色背景上寻黑线

你可以将这个功能应用在你自己的机器人上面

所需代码:

CVline:

#!/usr/bin/env/python3# File name   : RPiCam.py# Date: 2019/12/23import cv2import zmqimport base64import picamerafrom picamera.array import PiRGBArrayimport numpy as npIP = '192.168.3.11'camera = picamera.PiCamera()camera.resolution = (640, 480)camera.framerate = 20rawCapture = PiRGBArray(camera, size=(640, 480))context = zmq.Context()footage_socket = context.socket(zmq.PAIR)footage_socket.connect('tcp://%s:5555'%IP)print(IP)linePos_1 = 380linePos_2 = 430lineColorSet = 255for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):frame_image = frame.arrayframe_findline = cv2.cvtColor(frame_image, cv2.COLOR_BGR2GRAY)retval, frame_findline =  cv2.threshold(frame_findline, 0, 255, cv2.THRESH_OTSU)frame_findline = cv2.erode(frame_findline, None, iterations=6)colorPos_1 = frame_findline[linePos_1]colorPos_2 = frame_findline[linePos_2]try:lineColorCount_Pos1 = np.sum(colorPos_1 == lineColorSet)lineColorCount_Pos2 = np.sum(colorPos_2 == lineColorSet)lineIndex_Pos1 = np.where(colorPos_1 == lineColorSet)lineIndex_Pos2 = np.where(colorPos_2 == lineColorSet)if lineColorCount_Pos1 == 0:lineColorCount_Pos1 = 1if lineColorCount_Pos2 == 0:lineColorCount_Pos2 = 1left_Pos1 = lineIndex_Pos1[0][lineColorCount_Pos1-1]right_Pos1 = lineIndex_Pos1[0][0]center_Pos1 = int((left_Pos1+right_Pos1)/2)left_Pos2 = lineIndex_Pos2[0][lineColorCount_Pos2-1]right_Pos2 = lineIndex_Pos2[0][0]center_Pos2 = int((left_Pos2+right_Pos2)/2)center = int((center_Pos1+center_Pos2)/2)except:center = Nonepassprint(center)try:cv2.line(frame_image,(left_Pos1,(linePos_1+30)),(left_Pos1,(linePos_1-30)),(255,128,64),1)cv2.line(frame_image,(right_Pos1,(linePos_1+30)),(right_Pos1,(linePos_1-30)),(64,128,255),)cv2.line(frame_image,(0,linePos_1),(640,linePos_1),(255,255,64),1)cv2.line(frame_image,(left_Pos2,(linePos_2+30)),(left_Pos2,(linePos_2-30)),(255,128,64),1)cv2.line(frame_image,(right_Pos2,(linePos_2+30)),(right_Pos2,(linePos_2-30)),(64,128,255),1)cv2.line(frame_image,(0,linePos_2),(640,linePos_2),(255,255,64),1)cv2.line(frame_image,((center-20),int((linePos_1+linePos_2)/2)),((center+20),int((linePos_1+linePos_2)/2)),(0,0,0),1)cv2.line(frame_image,((center),int((linePos_1+linePos_2)/2+20)),((center),int((linePos_1+linePos_2)/2-20)),(0,0,0),1)except:passencoded, buffer = cv2.imencode('.jpg', frame_image)jpg_as_text = base64.b64encode(buffer)footage_socket.send(jpg_as_text)rawCapture.truncate(0)

PC:

#!/usr/bin/python3# File name   : PC.py# Author  : William# Date: 2019/11/21import cv2import zmqimport base64import numpy as npcontext = zmq.Context()footage_socket = context.socket(zmq.PAIR)footage_socket.bind('tcp://*:5555')while True:frame = footage_socket.recv_string()img = base64.b64decode(frame)npimg = np.frombuffer(img, dtype=np.uint8)source = cv2.imdecode(npimg, 1)cv2.imshow("Stream", source)cv2.waitKey(1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: cimport numpy as np 报错可能是因为您没有正确安装 Cython 或者 NumPy 库。请先确保您已经正确安装了这两个库,然后再尝试使用 cimport numpy as np。如果问题仍然存在,可以提供更多的错误信息以便我们更好地帮助您解决问题。 ### 回答2: cimport是Cython中的一个关键字,用于导入C语言模块。而numpy是一个Python扩展库,提供多维数组的支持以及相关的操作函数。 在使用Cython时,如果需要调用numpy的函数或者是numpy数组,需要在Cython代码中进行导入。正确导入numpy模块可以使用如下代码: ``` cimport numpy as np ``` 然而,有时会遇到cimport numpy as np报错的问题。这可能是因为Cython没有正确配置或安装。在安装Cython时,也需要同时安装对应的numpy库。如果numpy库没有正确安装或未正确配置Cython,则会导致cimport numpy as np报错的问题。 解决这个问题的方法有以下几种: 1. 检查Cython和numpy的版本。有些版本不兼容会导致此问题。可以将Cython和numpy卸载,重新安装对应的版本。 2. 确保numpy库已正确安装,并且已被添加到系统路径中。可以使用import numpy”进行测试。 3. 检查Cython是否正确安装。可以使用import Cython”进行测试。 4. 在运行Cython代码前,确认Python环境中已经正确配置好了numpy。 总之,cimport numpy as np报错的问题往往是由Cython和numpy库版本不兼容或安装不正确造成。解决这个问题需要根据具体情况进行调试和修复。 ### 回答3: 在使用cimport导入numpy时,报错的原因可能有以下几种情况: 1.缺少依赖库:cimport numpy时需要确保已经安装了numpy库,若没有安装或者版本不匹配可能会出现报错。可以使用pip install numpy命令安装最新版本的numpy库。 2.版本不匹配:确保numpy的版本和所编写的c代码所需的numpy版本匹配。可以尝试在程序中明确指定numpy版本号,如"cimport numpy as npnp.import_array() # numpy版本1.16"。 3.环境变量问题:确保系统中的环境变量设置正确。可以在系统路径中添加numpy库的路径,这样cimport时就可以找到相应的库。 4.编译器问题:在使用cimport时,需要确保编译器支持对应的语言。例如需要使用Cython编译器对C语言进行编译,只有通过了编译才能使用。 对于以上问题,可以通过检查相应的依赖库、版本、环境变量、编译器等方面的设置来解决cimport numpy报错的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值