问题描述
这是我的代码,我遇到了问题。请问怎么解决? 我做了一个屏幕录像机:
import numpy as np
import cv2
import pyautogui
codec = cv2.VideoWriter_fourcc(*"XVID")
out = cv2.VideoWriter("Recorded.avi",codec,60,(1366,768))
cv2.namedWindow("Recording",cv2.WINDOW_norMAL)
cv2.resizeWindow("Recording",480,270)
while True:
img = pyautogui.screenshot #capturing screenshot
frame = np.array(img) # converting the image into numpy array representation
frame = cv2.cvtColor(frame,cv2.COLOR_BGR2RGB) # converting the BGR image into RGB image
out.write(frame) # writing the RBG image to file
cv2.imshow('Recording',frame) # display screen/frame being recorded
if cv2.waitKey(1) == ord('q'): # Wait for the user to press 'q' key to stop the recording
break
out.release() # closing the video file
cv2.destroyAllWindows() # destroying the recording window
这里的问题:
回溯(最近一次调用最后一次): 文件“C:\Users\mhmdj\PycharmProjects\learn\main.py”,第 13 行,在 frame = cv2.cvtColor(frame,cv2.COLOR_BGR2RGB) # 将 BGR 图像转换为 RGB 图像 cv2.error: OpenCV(4.5.2) ? 错误: (-5:Bad argument) in function 'cvtColor'
重载解析失败:
不支持 src 数据类型 = 17 参数“src”的预期 Ptrcv::UMat
解决方法
您可以尝试使用 cv2.imread()
而不是 np.array() 加载图像以查看是否有效,因为示例使用此方法:
img = cv2.imread(imagePath)
gray = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)