图像无法显示首先考虑图像读取路径问题。
读取原图:
一、图像无法显示
1、读取图像代码如下:
src = cv2.imread("C:\Users\jiang\Desktop\-12-26\DSC00359(1).JPG", 0)
输出如下错误提示:
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape
2、解决(一)
将图像路径中的“\”替换成“/”或"//"。
如果替换后出现如下错误提示,则参考解决(二)
cv2.error: OpenCV(4.5.2) C:\Users\runneradmin\AppData\Local\Temp\pip-req-build-ttbyx0jz\opencv\modules\highgui\src\window.cpp:404: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'
解决(二)
图像路径中不能出现中文,包括符号。“C:\Users\jiang\Desktop\-12-26\DSC00359(1).JPG”中的“(1)”的括号为中文。
二、图像显示后闪退
添加显示窗口显示时间代码:
cv2.waitKey(int delay=0)
int delay设置为空或0时,图像显示无限延长,按任意键退出
int delay>0时,函数返回值为按下的键的ASCⅡ码值,超时则返回-1
三、显示过大,显示不全
将图像读取路径修改后图像显示过大
添加显示窗口尺寸代码:
cv2.namedWindow(const string& winname,int flags=WINDOW_AUTOSIZE )
(1)const string& winname:给窗口命名
(2)int flags:窗口尺寸,默认参数为WINDOW_AUTOSIZE
1)WINDOW_AUTOSIZE:窗口以图像实际大小显示
2)WINDOW_NORMAL:窗口以合适大小显示,且可以调整大小
3)WINDOW_OPENGL:创建支持OpenGL,需要有OpenGL支持
最终显示如下:
完整代码如下:
import cv2src = cv2.imread("C://Users//jiang//Desktop//-12-26//DSC00359.JPG", 0)canny = cv2.Canny(src, 50, 150)cv2.namedWindow("src", cv2.WINDOW_NORMAL)cv2.namedWindow("Canny", cv2.WINDOW_NORMAL)cv2.imshow("src", src)cv2.imshow("Canny", canny)cv2.waitKey(0)cv2.destroyAllWindows()