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
时间: 2023-08-29 07:04:36 浏览: 187
根据你的描述,这是一段 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。
相关问题
D:\python3.8\python.exe D:/pythonProject1/bishe1.py 俯视or侧视:俯视 Traceback (most recent call last): File "D:/pythonProject1/bishe1.py", line 58, in <module> edge = cv.Canny(opening, 50, 160, color1=(255, 255, 255), color2=(0, 0, 255))#提取轮廓50,160 cv2.error: OpenCV(4.6.0) :-1: error: (-5:Bad argument) in function 'Canny' > Overload resolution failed: > - 'color1' is an invalid keyword argument for Canny() > - 'color1' is an invalid keyword argument for Canny() > - Canny() missing required argument 'threshold2' (pos 4) > - Canny() missing required argument 'threshold2' (pos 4) 进程已结束,退出代码1
根据你的描述,这是一段 Python 代码,使用了 OpenCV 库中的 Canny 函数进行轮廓提取。但是在调用 Canny 函数时,出现了错误。错误信息显示 Canny 函数的参数有误,可能是由于 color1 这个参数不被识别导致的。建议检查一下 Canny 函数的参数是否正确,并确认 color1 这个参数是否被正确识别。另外,还需要确认函数的其他参数是否正确设置,例如 threshold1 和 threshold2。
Cannot invoke "javafx.scene.layout.Pane.getScene()" because "this.rootPane" is null at com.bishe.user/com.bishe.user.UserController.initialize(UserController.java:62) at javafx.fxml/javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2655) ... 12 more
这个错误提示说明在调用 `rootPane.getScene()` 方法时,`rootPane` 对象为空,即在 `UserController` 类中找不到名为 `rootPane` 的控件。请检查你的 FXML 文件中是否正确定义了名为 `rootPane` 的控件,并且在 `UserController` 类中使用 `@FXML` 注解将其与 FXML 文件中的控件关联起来。
例如,你的 FXML 文件中可能包含以下代码:
```xml
<Pane fx:id="rootPane" xmlns:fx="http://javafx.com/fxml/1">
<!-- 具体的界面组件 -->
</Pane>
```
然后,在 `UserController` 类中,你需要使用 `@FXML` 注解将 `rootPane` 属性与 FXML 文件中的 `fx:id="rootPane"` 控件关联起来,如下所示:
```java
public class UserController implements Initializable {
@FXML
private Pane rootPane; // 与 FXML 文件中的 fx:id="rootPane" 控件关联起来
@Override
public void initialize(URL location, ResourceBundle resources) {
// 获取场景对象
Scene scene = rootPane.getScene();
// 将整体对象的宽度和高度与场景的宽度和高度绑定
rootPane.prefWidthProperty().bind(scene.widthProperty());
rootPane.prefHeightProperty().bind(scene.heightProperty());
}
}
```
如果你已经正确关联了 `rootPane` 控件,但仍然出现上述错误提示,请检查 FXML 文件中的 `fx:id` 是否与 `@FXML` 注解中的属性名一致。
阅读全文