opencv3.8中cv2.createLineSegmentDetector()函数
时间: 2023-06-15 18:04:21 浏览: 501
在 OpenCV 3.8 版本中,cv2.createLineSegmentDetector() 函数用于创建一个可以检测图像中线段的对象。该函数接受一个可选参数,即线段检测器的类型。它可以是 LSD_REFINE_STD(标准线段检测),也可以是 LSD_REFINE_ADV(改进的线段检测)。该函数返回一个名为 LSD(LineSegmentDetector)的对象,该对象具有detect()方法,该方法接受图像作为输入并返回检测到的线段的列表。检测到的每条线段都是一个四元组(x1,y1,x2,y2),其中(x1,y1)和(x2,y2)是线段的两个端点的坐标。
相关问题
使用opencv 4.0.1 和python 3.8 将图像进行小波变换 coeffs = pywt.dwt2(gray, 'haar') cA, (cH, cV, cD) = coeffs 已知cH 为266 × 500 为什么执行cH1 = cH.astype(np.uint8) cH2 = cv2.convertScaleAb(cH) 后.cH1 显示正常图像 cH2显示的图像为纯黑色
这是因为 `cv2.convertScaleAb()` 函数的参数传递有误。该函数需要传入两个参数:输入数组和输出数组。你可以将代码改为如下形式:
```
cH1 = cH.astype(np.uint8)
cH2 = np.zeros_like(cH1)
cH2 = cv2.convertScaleAbs(cH, dst=cH2)
```
这样,就可以正确地将小波变换后的系数数组转换为 OpenCV 可以显示的图像了。
D:\python3.8\python.exe D:/pythonProject1/bishe1.py 俯视or侧视:俯视 D:\python3.8\lib\site-packages\skimage\io\_plugins\matplotlib_plugin.py:149: UserWarning: Low image data range; displaying image with stretched contrast. lo, hi, cmap = _get_display_range(image) Traceback (most recent call last): File "D:/pythonProject1/bishe1.py", line 65, in <module> contours,h=cv.findContours(edge,cv.RETR_TREE,cv.CHAIN_APPROX_NONE) cv2.error: OpenCV(4.6.0) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src\contours.cpp:197: error: (-210:Unsupported format or combination of formats) [Start]FindContours supports only CV_8UC1 images when mode != CV_RETR_FLOODFILL otherwise supports CV_32SC1 images only in function 'cvStartFindContours_Impl' 进程已结束,退出代码1
根据你的描述,这是一段 Python 代码,使用了 OpenCV 库中的 findContours 函数进行轮廓查找。但是在调用 findContours 函数时,出现了错误。错误信息显示 findContours 函数的参数有误,可能是由于输入的图像格式不正确导致的。建议检查一下输入的图像是否为灰度图像,以及是否使用了正确的数据类型。在调用 findContours 函数时,可以使用 cv2.cvtColor() 函数将彩色图像转换为灰度图像,然后使用 astype() 函数将数据类型转换为 uint8,即可避免这个错误。代码如下:
```
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
gray = gray.astype('uint8')
contours, hierarchy = cv2.findContours(gray, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
```
其中,cv2.COLOR_BGR2GRAY 是将彩色图像转换为灰度图像的参数。astype() 函数用于将数据类型转换为 uint8。
阅读全文