x3设置hdmi输出后屏幕无显示黑屏

import cv2
import os
import numpy as np
from hobot_vio import libsrcampy as srcampy
from hobot_dnn import pyeasy_dnn as dnn # BSP Python API
cap = cv2.VideoCapture(9) # 打开摄像头
def bgr2nv12_opencv(image):
height, width = image.shape[0], image.shape[1]
area = height * width
yuv420p = cv2.cvtColor(image, cv2.COLOR_BGR2YUV_I420).reshape((area * 3 // 2,))
y = yuv420p[:area]
uv_planar = yuv420p[area:].reshape((2, area // 4))
uv_packed = uv_planar.transpose((1, 0)).reshape((area // 2,))
nv12 = np.zeros_like(yuv420p)
nv12[:height * width] = y
nv12[height * width:] = uv_packed
return nv12
def get_display_res():
if os.path.exists(“/usr/bin/get_hdmi_res”) == False:
return 1920, 1080
import subprocess
p = subprocess.Popen([“/usr/bin/get_hdmi_res”], stdout=subprocess.PIPE)
result = p.communicate()
res = result[0].split(b’,')
res[1] = max(min(int(res[1]), 1920), 0)
res[0] = max(min(int(res[0]), 1080), 0)
return int(res[1]), int(res[0])
disp = srcampy.Display()
disp_w, disp_h = get_display_res()
disp.display(0, disp_w, disp_h)
while True:
ret, frame = cap.read()
if not ret:
break
disp = srcampy.Display()
rett = disp.display(0, 1920, 1080, 0, 1)
codec = cv2.VideoWriter_fourcc( ‘M’, ‘J’, ‘P’, ‘G’ )
cap.set(cv2.CAP_PROP_FOURCC, codec)
cap.set(cv2.CAP_PROP_FPS, 30)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
frame = cv2.flip(frame, 1)
cv2.imshow(“capture”, frame)
# Convert to nv12 for HDMI display
box_nv12 = bgr2nv12_opencv(frame)
disp.set_img(box_nv12.tobytes())
cap.release()
cv2.destroyAllWindows()

这是我的使用opencv打开usb摄像头的代码,结果是设置显示屏分辨率后显示屏黑屏无输出,报错如下libiar: hb_disp_set_timing done!
[ERROR][“vot”][vot/hb_vot.c:2310] [232.211299]HB_VOT_SendFrame[2310]: hbvo: HB_VOT_SendFrame: invalid frame size 460800, resolution is 1920x1080.
同时,使用cv2.imshow也不能正常显示画面,只有一个黑色小角落窗口。经过测试,usb摄像头连接正常,也能正常截图使用,只是imshow失败。使用官方usb摄像头例程,显示屏能显示画面,但是imshow的使用情况和之前一样,只有黑色的小角落窗口

报错 invalid frame size 460800, resolution is 1920x1080 说明:

  • HDMI 显示要求的分辨率是 1920x1080,对应的 NV12 格式图像大小应为 1920*1080*3/2 = 3110400 字节(NV12 格式的大小计算为 宽*高*1.5

代码读取的分辨率为480x640