python - _src.empty() 在函数'cv::cvtColor
问题描述
除了我不断收到此错误外,此代码没有任何问题。
rgb_frame =cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)
cv2.error: OpenCV(4.4.0) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-2b5g8ysb\opencv\modules\imgproc\src\color.cpp:182:
error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
我用谷歌搜索了这个错误,他们告诉我检查框架是否保存完好。我检查了一下,它做得很好。他们还告诉我检查路径'video3.mp4'
。我将视频保存在与此 python 文件相同的文件夹中。
谁能告诉我为什么我不断收到这个错误?
import cv2
import openpyxl
cap = cv2.VideoCapture('video3.mp4')
wb= openpyxl.Workbook()
sheet= wb.active
a=1
b=1
while(1):
_, frame = cap.read()
frame_pos=cap.get(cv2.CAP_PROP_POS_FRAMES)
#error here!
rgb_frame =cv2.cvtColor(frame,cv2.COLOR_BGR2RGB)
hsv_frame01=cv2.cvtColor(frame,cv2.COLOR_BGR2HSV)
ycrb_frame=cv2.cvtColor(frame,cv2.COLOR_BGR2YCrCb)
planes=cv2.split(ycrb_frame)
planes[0]=cv2.equalizeHist(planes[0])
dst_ycrb=cv2.merge(planes)
dst=cv2.cvtColor(dst_ycrb,cv2.COLOR_YCrCb2BGR)
hsv_frame = cv2.cvtColor(dst, cv2.COLOR_BGR2HSV)
lower_hsv = cv2.inRange(hsv_frame, (30, 150, 50), (255, 255, 180))
upper_hsv = cv2.inRange(hsv_frame, (0, 70,100), (10, 255, 255))
added_hsv = cv2.addWeighted(lower_hsv, 1.0, upper_hsv, 1.0, 0.0)
se=cv2.getStructuringElement(cv2.MORPH_RECT,(5,3))
bi=cv2.medianBlur(added_hsv,3)
dilate=cv2.dilate(bi,se,iterations=6)
res = cv2.bitwise_and(frame, frame, mask=dilate)
contours, _ = cv2.findContours(dilate,cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for i in contours:
M=cv2.moments(i)
cy=int(M['m01']/M['m00'])
cx=int(M['m10']/M['m00'])
cv2.drawContours(res,[i],0,(255,0,0),3)
cv2.circle(res,(cx,cy),3,(255,0,0),-1)
if frame_pos>=285 and cy<320:
text1='RGB : ' + str(rgb_frame[cy,cx])
text2='HSV : ' + str(hsv_frame01[cy,cx])
cv2.putText(res,text1,(cx-200 ,cy),cv2.FONT_HERSHEY_PLAIN,1 ,(255,255,255))
cv2.putText(res,text2,(cx-200 ,cy-30),cv2.FONT_HERSHEY_PLAIN,1 ,(255,255,255))
if cx<=427:
sheet.cell(row=a,column=1).value=str(rgb_frame[cy,cx])
a=a+1
else:
sheet.cell(row=b,column=2).value=str(rgb_frame[cy,cx])
b=b+1
elif 350<= cy <=400 :
text1='RGB : ' + str(rgb_frame[cy,cx])
text2='HSV : ' + str(hsv_frame01[cy,cx])
cv2.putText(res,text1,(cx-200 ,cy),cv2.FONT_HERSHEY_PLAIN,1 ,(255,255,255))
cv2.putText(res,text2,(cx-200 ,cy-30),cv2.FONT_HERSHEY_PLAIN,1 ,(255,255,255))
if cx<=427:
sheet.cell(row=a,column=1).value=str(rgb_frame[cy,cx])
a=a+1
else:
sheet.cell(row=b,column=2).value=str(rgb_frame[cy,cx])
b=b+1
wb.save('1.xlsx')
cv2.namedWindow('frame',cv2.WINDOW_NORMAL)
cv2.namedWindow('added_hsv',cv2.WINDOW_NORMAL)
cv2.namedWindow('res',cv2.WINDOW_NORMAL)
cv2.imshow('frame',frame)
cv2.imshow('added_hsv',added_hsv)
cv2.imshow('res',res)
if cv2.waitKey(5)>0:
break
cv2.destroyAllWindows()
解决方案
推荐阅读
- nlp - pytorch 中的自注意力实现
- amazon-web-services - 适用于 CDN 和 API 的 AWS WAF
- python - 一旦我包含 BiLSTM 层,Tensorflow 模型的形状等级问题
- c# - 如何检查 Angular 项目中的 ASP.NET Web API 是否返回错误?
- python - GoogleAds 搜索流转 json
- c# - 在 Blazor 中使用 Process.Start() 时按钮未更改的问题
- java - @Autowired 对 String 对象意味着什么?
- r - st_within 和 st_valid 帮助 - 大文件中的非法几何
- archlinux - 列出 arch 中特定 repo 的所有已安装包
- spring-boot - Spring Boot 存储库 java.lang.NullPointerException 错误