我在Windows上使用opencv。当我使用3.4.1时,我能够捕获全高清图像和半高清图像。更新到3.4.2之后,该图像将被装箱。分辨率是正确的,但是在以前有黑条的地方有图像数据。如何摆脱这个信箱?
这是我的捕获代码:
import cv2
import json
scaleFactor = 1
cap = cv2.VideoCapture(2)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, int(1920*scaleFactor))
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, int(1080*scaleFactor))
print cap.get(cv2.CAP_PROP_FRAME_WIDTH)
print cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
while(True):
# Capture frame-by-frame
ret, frame = cap.read()
if not ret:
continue
# Display the resulting frame
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
输出的打印语句是
1920.0
1080.0
这是输出的图片
答案 0 :(得分:1)
我通过将cv::VideoCapture(index, apiPreference)
中的apiPreference
从cv::CAP_ANY
更改为cv::CAP_DSHOW
来自己解决了这个问题。
所以,就您而言:
cap = cv2.VideoCapture(2, cv2.CAP_DSHOW)