我正在使用下面的行从我的笔记本电脑摄像头获取视频流,效果很好。
vs = VideoStream(src=0).start()
Run Code Online (Sandbox Code Playgroud)
但现在,我希望来源是 IP 摄像头,而不是我的笔记本电脑摄像头。有没有办法像直接将 src 更改为摄像机的 IP 一样?我进行了全面搜索,最常见的是使用 cv2 VideoCapture 方法。我想知道该解决方案是否也适用于 VideoStream 功能。
谢谢!
运行我的代码后,我收到错误消息轮廓元组必须具有长度2或3,否则opencv再次更改了它们的返回签名。我目前运行的是 opencv 3.4.3.18 版本。当我抓取运行 imutils ver 0.5.2 的轮廓时,会出现此问题
该代码查找计数并返回在进行一些边缘检测后找到的轮廓。然后该算法使用 imutils 来抓取轮廓。这是正确的处理方法还是有一些最新的方法来获取轮廓而不是使用 imutils?
请看下面的例子:
image, contours, hier = cv.findContours(edged.copy(), cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(contours)
cnts = sorted(contours, key = cv.contourArea, reverse = True)[:5]
Run Code Online (Sandbox Code Playgroud) 我是 OpenCV 新手,按照本教程 ,这里是 Python 代码
from imutils import paths
import numpy as np
import imutils
import cv2
import os
rectKernel = cv2.getStructuringElement(cv2.MORPH_RECT, (13, 5))
sqKernel = cv2.getStructuringElement(cv2.MORPH_RECT, (21, 21))
image = cv2.imread("src/main/resources/passport/passport.jpg")
image = imutils.resize(image, height=600)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray, (3, 3), 0)
blackhat = cv2.morphologyEx(gray, cv2.MORPH_BLACKHAT, rectKernel)
gradX = cv2.Sobel(blackhat, ddepth=cv2.CV_32F, dx=1, dy=0, ksize=-1)
gradX = np.absolute(gradX)
(minVal, maxVal) = (np.min(gradX), np.max(gradX))
gradX = (255 * ((gradX - minVal) / (maxVal - minVal))).astype("uint8")
gradX …Run Code Online (Sandbox Code Playgroud) 我想对相邻帧进行视频处理。更具体地说,我想计算相邻帧之间的均方误差:
mean_squared_error(prev_frame,frame)
Run Code Online (Sandbox Code Playgroud)
我知道如何以线性直接的方式计算它:我使用 imutils包利用队列来解耦加载帧和处理它们。通过将它们存储在队列中,我不需要在处理它们之前等待它们。......但我想更快......
# import the necessary packages to read the video
import imutils
from imutils.video import FileVideoStream
# package to compute mean squared errror
from skimage.metrics import mean_squared_error
if __name__ == '__main__':
# SPECIFY PATH TO VIDEO FILE
file = "VIDEO_PATH.mp4"
# START IMUTILS VIDEO STREAM
print("[INFO] starting video file thread...")
fvs = FileVideoStream(path_video, transform=transform_image).start()
# INITALIZE LIST to store the results
mean_square_error_list = []
# READ PREVIOUS FRAME
prev_frame = fvs.read()
# LOOP over frames …Run Code Online (Sandbox Code Playgroud)