#如果是绝对路径使用一个反斜杠就会报错
img_path='D:\python_work\objectDetection\YOLOv4\pytorch-YOLOv4\myData\JPEGImages\000247.jpg'
img = cv2.imread(img_path)
print(img)
cv2.imshow('img',img)
cv2.waitKey(0)
img1= cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
print("================")
print(img1)
显示错误
cv2.imshow('img',img)
cv2.error: OpenCV(4.5.2) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-1bq9o88m\opencv\modules\highgui\src\window.cpp:404: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'
原因:路径找不到,输出字符串时,如果想输出一个换行,那就要加上'\n'这个标志,类似的,输出一个TAB,就加上'\t',也就是说,反斜杠("\")这个符号会把跟在它后面的字符结合起来转义成其它字符。根据这个原理,如果想输出双引号('"'),就需要输入'\"',这样才会将包含了双引号的字符串正确的写入内存中。那么如果想输入一个反斜杠呢?很简单,只要敲'\\'就可以了。
如果"C:\Windows\System"这个路径字符串交给编译器编译,实际写入内存的字符串并没有包含反斜杠"\",甚至紧跟在反斜杠后面的字母也一起被转义成了其它的字符,再次调用的话势必会出问题。
问题解决:
程序没有问题,问题出在绝对路径上,如果我们将imread("C:\Users\Administrator\Desktop\图库\a.jpg")改为imread("C:\\Users\\Administrator\\Desktop\图库\\a.jpg")或者imread("C:/Users/Administrator/Desktop/图库/a.jpg")问题就解决了。
例如:
img_path='D:/python_work/objectDetection/YOLOv4/pytorch-YOLOv4/myData/JPEGImages/000210.jpeg'
#如果是绝对路径使用一个反斜杠就会报错
#img_path='D:\python_work\objectDetection\YOLOv4\pytorch-YOLOv4\myData\JPEGImages\000247.jpg'
img = cv2.imread(img_path)
print(img)
cv2.imshow('img',img)
cv2.waitKey(0)
img1= cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
print("================")
print(img1)
问题完美解决!!!