![](/img/trans.png)
[英]How to access video stream from an ip camera using opencv in python?
[英]How to show the correct video-image from calibrated camera stream?
我最近學習了OpenCV。 我的任務:顯示來自運動攝像機的校准圖像。 我校准了相機。 我可以輕松獲得良好的校准圖像。
#CODE TO WORK WITH IMAGE
import numpy as np
import cv2
import sys
#Matrix
DIM = (1280,720)
K = np.array([[670.6687634787847, 0.0, 625.8352066309077], [0.0, 665.8169620465114, 349.9286858249417], [0.0, 0.0, 1.0]])
D = np.array([[-0.01833489984490284], [0.12136347203846999], [-0.4637418712120781], [0.5817376362743433]])
img = cv2.imread("C:\Test\Fish_eye_remove\Test.jpg")
h, w = img.shape[:2]
map1, map2 = cv2.fisheye.initUndistortRectifyMap(K, D, np.eye(3), K, DIM, cv2.CV_16SC2)
undistorted_img = cv2.remap(img, map1, map2, interpolation=cv2.INTER_LINEAR, borderMode=cv2.BORDER_CONSTANT)
cv2.imshow("undistorted", undistorted_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
但是當我嘗試處理視頻中的幀時,我在輸出中得到了裁剪的圖像。 我不明白我在做什么錯。
#CODE TO WORK WITH VIDEO-IMAGE
import numpy as np
import cv2
DIM = (1280,720)
K = np.array([[670.6687634787847, 0.0, 625.8352066309077], [0.0, 665.8169620465114, 349.9286858249417], [0.0, 0.0, 1.0]])
D = np.array([[-0.01833489984490284], [0.12136347203846999], [-0.4637418712120781], [0.5817376362743433]])
cap = cv2.VideoCapture(0)
while True:
flag, img = cap.read()
try:
map1, map2 = cv2.fisheye.initUndistortRectifyMap(K, D, np.eye(3), K, DIM, cv2.CV_16SC2)
calibrated = cv2.remap(img, map1, map2, interpolation=cv2.INTER_LINEAR, borderMode=cv2.BORDER_CONSTANT)
cv2.imshow('result', calibrated)
except:
cap.release()
raise
k = cv2.waitKey(30)
if k == 27:
break
cap.release()
cv2.destroyAllWindows()
我得到了裁剪和扭曲的圖像
謝謝大家的幫助! 我這樣解決了我的問題:我意識到相機圖像的分辨率不正確。 我剛剛添加了cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)
,它起作用了!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.