【问题标题】:Raspberry Pi - Open CV & C++树莓派 - Opencv 和 C++
【发布时间】:2016-06-03 22:31:33
【问题描述】:

我们正在学校做一个需要进行基本图像处理的项目。我们想要在我们的项目中做的是使用我们的 Raspberry Pi 每 50 毫秒(或更快)拍摄一张照片,并进行实时图像处理。

我们尝试将 raspistill 包含在我们的 python 程序中,但到目前为止没有任何效果。我们项目的目标是在图像处理的帮助下设计一辆遵循蓝/红/任何颜色线的遥控车。

我们认为制作一个 python 程序来完成所有必要的图像处理是一个好主意,但我们目前正在努力将记录的图像带入 python 程序的想法。有没有办法用 picamera 做到这一点,还是我们应该尝试不同的方式?

提前致谢,anthrx。

【问题讨论】:

  • 您是在寻找代码还是只是在寻找如何解决此问题的一般结构?
  • 这可能会有所帮助...stackoverflow.com/a/37441369/2836621
  • @ZWiki 嘿,很抱歉没有更快地响应。我忙于学校和其他事情,所以我真的没有时间检查。我只是好奇我们应该如何处理这个问题,而不是寻找特定的代码。
  • @ZWiki 我们现在正在做的是读取预先录制的图片的像素值,但现在我们只读取我们控制伺服系统所需的最低行像素。我们现在的主要目标是只拍一张底线的照片,以便我们优化运行时间,而现在我们只是转向硬代码。我们的目标是转向和控制我们的伺服系统,这取决于我们的算法。如果你愿意,我可以用我们目前使用的代码联系你,但不是今天,而是明天这个时候。

标签: python opencv raspberry-pi3


【解决方案1】:

我只是在不编写完整程序的情况下掩盖如何做到这一点。简短的回答是这是非常可能的,而且相对简单。

第 1 步:从相机中获取图像
为此,我建议只使用VideoCapture 并处理传入的每个图像。可以这样做:

import numpy as np
import cv2
cap = cv2.VideoCapture(0)

while True:
    ret, frame = cap.read() # Read the current frame

第 2 步:检测颜色(我将举一个红色的例子)
为此,您需要在 RGB 颜色空间中定义一些边界。为此,您实际上只需要确定一些下限和上限

boundaries = [
([17, 15, 100], [50, 56, 200]),
([25, 146, 190], [62, 174, 250])
]

这是两个边界的下界和上界。例如([17, 15, 100], [50, 56, 200]) 表示我们正在寻找R>=17B>=15G>=100R<=50B<=56G<=200。是的,格式是 RBG 因为 OpenCV 中的默认方案

第 3 步:放在一起

while True:
    ret, frame = cap.read() # Read the current frame
    for (lo, up) in boundaries:
        lo = np.array(lo, dtype='uint8')
        up = np.array(up, dtype='uint8')

        # Find the colors within those boundaries in the image
        mask = cv2.inRange(frame, lo, up)
        out = cv2.bitwise_and(frame, frame, mask=mask)

out 现在包含当前帧,但仅包含这些边界内图像中的red。然后,您可以确定图像中是否有足够的红色跟随,或者转向或什么。如果你想真正确定它是否是某种线,你也可以使用findContours 来确定红色对象的形状,然后判断它是否是一条线。

【讨论】:

  • 这里有什么我不明白的,假设我们只是取帧并将其用于我们的算法。我究竟如何实现它?现在我们正在使用“img = cv2.imread('image1.jpg')”,但看起来我们并没有真正使用 .jpg。
  • 当你这样做时,你会得到一个 numpy 数组 [0,255] 之间的值。您需要创建/找到一种算法,然后允许根据颜色像素的范围(例如我上面列出的边界)跟踪该红线。
猜你喜欢
  • 2015-10-14
  • 2019-08-08
  • 1970-01-01
  • 2017-06-11
  • 2016-05-15
  • 2023-03-30
  • 2017-06-07
  • 1970-01-01
  • 2014-08-15
相关资源
最近更新 更多