OPENCV - !ssize.empty()

OPENCV - !ssize.empty()

这是我的代码:

import cv2 as cv
import numpy as np


cap = cv.VideoCapture(0)
imgTarget = cv.imread('photos\TargetImage.jpg') #bu resmimiz
Vid = cv.VideoCapture('photos\video.mp4')


detection = False
frameCounter = 0

success, Video = Vid.read()
h,w,c = imgTarget.shape #burada resmimizin yüksekliğini, kalınlığını genişliğini falan alıyoruz.
Video = cv.resize(Video, (w, h))

伙计们,这是我代码的一部分。我正在尝试调整图像大小,但出现以下错误:

error: OpenCV(4.0.1) C:\ci\opencv-suite_1573470242804\work\modules\imgproc\src\resize.cpp:3784: error: (-215:Assertion failed) !ssize.empty() in function 'cv::resize'

你有什么解决这个问题的建议吗?

首先,视频捕获主要是在一个循环中完成的,在这个循环中,您检查抓取帧是否“成功”,然后继续显示帧或进行任何类型的处理,一个非常简单的示例是:

import cv2

cap = cv2.VideoCapture(0)
while True:
    ret, frame = cap.read()
    if ret:
        cv2.imshow('camera', frame)
        k = cv2.waitKey(1)
    else:
        cap.release()
        cv2.destroyAllWindows()

如果未接收到帧,捕获将停止。

其次,我看到您打开了两个单独的捕获:

cap = cv.VideoCapture(0)
Vid = cv.VideoCapture('photos\video.mp4')

一个用于设备摄像头,另一个用于您提供的视频路径。如果您是两个并行捕获的句柄,还建议使用上述方法检查它们是否正确捕获帧。

最后我猜是视频路径提供不正确,所以我的建议是应用以上内容,然后提供您要打开的视频的完整路径。

图像也一样。如本文所述 您应该首先检查图像是否已加载。

如果我没记错的话,你想调整视频帧的大小与 imgTarget

的大小相同

分两步解决


    1. 检查视频是否打开
    1. 如果视频打开则resize

首先你应该检查你的视频是否可以打开

h,w,c = imgTarget.shape #burada resmimizin yüksekliğini, kalınlığını genişliğini falan alıyoruz.

while Vid.isOpened():
    success, Video = Vid.read()

现在需要检查当前帧是否returns

h,w,c = imgTarget.shape #burada resmimizin yüksekliğini, kalınlığını genişliğini falan alıyoruz.

while Vid.isOpened():
    success, Video = Vid.read()
    if success:

现在调整大小

h,w,c = imgTarget.shape #burada resmimizin yüksekliğini, kalınlığını genişliğini falan alıyoruz.

while Vid.isOpened():
    success, Video = Vid.read()
    if success:
        Video = cv.resize(Video, (w, h))

如果要显示可以使用imshow

h,w,c = imgTarget.shape #burada resmimizin yüksekliğini, kalınlığını genişliğini falan alıyoruz.

while Vid.isOpened():
    success, Video = Vid.read()
    if success:
        Video = cv.resize(Video, (w, h))
        cv2.imshow("Video")
        key = cv2.waitKey(1) & 0xFF

        # if the `q` key was pressed, break from the loop
        if key == ord("q"):
            break

确保释放代码末尾的 capVid 变量。

h,w,c = imgTarget.shape #burada resmimizin yüksekliğini, kalınlığını genişliğini falan alıyoruz.

while Vid.isOpened():
    success, Video = Vid.read()
    if success:
        Video = cv.resize(Video, (w, h))
        cv2.imshow("Video")
        key = cv2.waitKey(1) & 0xFF

        # if the `q` key was pressed, break from the loop
        if key == ord("q"):
            break

Vid.release()
cap.release()