python3_opencv_直线检测_HoughLinesP_ 'NoneType' object is not subscriptable 我就是我 2023-07-13 15:13 45阅读 0赞 ## python3\_opencv\_直线检测\_HoughLinesP\_报错之’NoneType’ object is not subscriptable ## 今天在学习python3\_opencv\_直线检测\_HoughLinesP\_ ‘NoneType’ object is not subscriptable的时候突然报了一个错误,明明和书上的代码一模一样,一直想不清楚为什么,后来print(lines)才发现是None,源代码如下: import cv2 import numpy as np img = cv2.imread('xiaoyu.jpg') #这是一张没有直线图案的图片 # img = cv2.imread('true.jpeg') #这是一张有直线图案的图片 gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) edges = cv2.Canny(gray, 50, 120) minLineLength = 100 maxLineGap = 10 lines = cv2.HoughLinesP(edges, 1, np.pi/180, 100, minLineLength, maxLineGap) for x1, y1, x2, y2 in lines[0] : cv2.line(img, (x1, y1), (x2, y2), (0,255,0), 2) # print(lines) cv2.imshow("edges", edges) cv2.imshow("lines", img) cv2.waitKey() cv2.destoryAllWindows() ![xiaoyu.jpg][]![true.jpeg][] 当读取图片是xiaoyu.jpg时,我们print(lines)时,得到的结果是: ![在这里插入图片描述][20200313003816632.png] 当读取图片是true.jpeg时,我们print(lines)时,得到的结果是: ![...][] 所以可以发现,导致报错【‘NoneType’ object is not subscriptable】的根本原因就是前面lines信息是空的,那么为什么会出现lines信息为空呢? 我们仔细研究图片会发现,xiaoyu.jpg里面根本有没有直线,那么它检测不到直线自然就是None,所以会导致信息无法读取,那么true.jpeg里面的图案有很多的直线,所以就可以读取到很多的信息,正确运行后结果如下: ![正确的运行结果][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NjI2NDY1_size_16_color_FFFFFF_t_70] [xiaoyu.jpg]: https://img-blog.csdnimg.cn/20200313003421334.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NjI2NDY1,size_16,color_FFFFFF,t_70 [true.jpeg]: /images/20230529/e131eea84e4344239e42527404b2cbe4.png [20200313003816632.png]: /images/20230529/390ac884707a490d8cc979db927809c6.png [...]: /images/20230529/a54023f8b1f541dfb0ea7252307bdc70.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NjI2NDY1_size_16_color_FFFFFF_t_70]: /images/20230529/a9062a72d30f44e8a6c4cadbe820e7c5.png
还没有评论,来说两句吧...