这里有两个关于opencv和python的问题

2024-10-01 00:26:34 发布

您现在位置:Python中文网/ 问答频道 /正文

守则: 我正在尝试构建一个python脚本,它将图像的RGB值以及轮廓宽度和高度输入到一个神经网络中,以确定我构建的小rc车应该向前行驶还是向右转弯。 代码:

import cv2

cam = cv2.VideoCapture(2)

class Pic_Capture:
    def __init__(self):
        # print("Fuck you")
        self.i = 0
    def Img_Mods(self, cam):
        self.ret, self.frame = cam.read()
        self.buf1 = cv2.flip(self.frame, 1)
        # self.buf2 = cv2.cvtColor(self.buf1, cv2.COLOR_BGR2RGB)
        self.buf3 = cv2.GaussianBlur(self.buf1,(5,5),0)
        cv2.imshow('buf2', self.buf3)

    def Measurement_Bullshit(self):
        self.buf4 = cv2.cvtColor(self.buf3, cv2.COLOR_RGB2GRAY)
        self.buf5 = cv2.adaptiveThreshold(self.buf4,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY,11,2)
        _, contours, hierarchy = cv2.findContours(self.buf5, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
        for cnt in contours:
            M = cv2.moments(cnt)
            self.cx = int(M['m10']/M['m00'])
            self.cy = int(M['m01']/M['m00'])
            print(self.cx, self.cy)
        cv2.imshow('buf4', self.buf4)

running = True
i = 0
Camera = Pic_Capture()

while running:
    Camera.Img_Mods(cam)

    if i % 30 == 0 and i != 0:
        Camera.Off_and_On_Again()
        Camera.Measurement_Bullshit()


    i += 1
    print(i)


    if cv2.waitKey(1) == 27:
        Camera.Stop_Code()

问题1: 我总是在控制台中收到此消息,我希望在以后调试时将其删除。
Corrupt JPEG data: 4 extraneous bytes before marker 0xd5 每次这个弹出,它是在一个不同的标记,所以我不知道如何不打印到控制台

问题2: 在if语句中的代码:if i % 10 == 0 and i != 0:运行后,代码会返回此错误。 File "Nueral_Network_Creation.py", line 23, in Measurement_Bullshit self.cx = int(M['m10']/M['m00']) ZeroDivisionError: float division by zero

我理解代码很可能没有找到足够的轮廓来正常运行,或者可能是完全不同的东西。一如既往,我们非常感谢您的帮助


Tags: 代码selfifdefcv2cameraintmeasurement