通过Opencv使用MIPICamera 错误

固件用的是VIM3_Ubuntu-xfce-bionic_Linux-4.9_arm64_EMMC_V20191231.7z


请问如何处理

Hello @Frank 帮忙确认下这个问题。

@heshunchao 这里是我的测试源码

import cv2 

if __name__ == '__main__':

    val = True

    cap = cv2.VideoCapture(0)
    cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
    cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)

    fourcc = cv2.VideoWriter_fourcc(*'XVID')

    out = cv2.VideoWriter("./test.avi", fourcc, 20.0, (640, 480), True)

    while val is True:
        ret, frame = cap.read()
        cv2.cvtColor(frame,cv2.COLOR_RGB2BGR)
        if frame is None:
            break
        else:
            out.write(frame)
            cv2.imshow("video", frame)
            k = cv2.waitKey(1) & 0xFF
            if k == 27: 
                break

    cap.release()
    out.release()

是能正常工作的,这个打开摄像头的操作,你的源码应该没有错,你 应该确认你的摄像头是不是正确的插上了.系统里有一个摄像头软件可以打开mipi摄像头的,你应该看看这个软件能不能打开这个摄像头

Guvcview 是可以用的,opencv 不行,不知道opencv 编译需要开启什么选项吗?

@heshunchao 我们的固件是自带了opencv的,是3.4.3的版本,我在这个版本下测试我的代码,是正常可以运行的

我试过,也不行提示一样的,不知道如何搞了 :grinning:

@heshunchao 按照我的步骤测试

  1. 烧录0530的gnome桌面的ubuntu固件
  2. sudo apt update && sudo apt install python3-numpy
  3. python3 mipi_test.py

mipi_test.py的源码如下

import cv2 

if __name__ == '__main__':

    val = True

    cap = cv2.VideoCapture(0)
    cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920)
    cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080)

    fourcc = cv2.VideoWriter_fourcc(*'XVID')

    out = cv2.VideoWriter("./test.avi", fourcc, 20.0, (640, 480), True)

    while val is True:
        ret, frame = cap.read()
        cv2.cvtColor(frame,cv2.COLOR_RGB2BGR)
        if frame is None:
            break
        else:
            out.write(frame)
            cv2.imshow("video", frame)
            k = cv2.waitKey(1) & 0xFF
            if k == 27: 
                break

    cap.release()
    out.release()

测试完可以在这里反馈

成功了,图偏色比较严重,还有设置成3840*2160 帧率很低,慢慢研究了,感谢帮助!

@heshunchao 偏色严重是偏红还是?你关闭IR-Cut了么