gpt4 book ai didi

ios - cvWatershed 中不支持的格式或格式组合(仅支持 8 位、3 channel 输入图像)

转载 作者:行者123 更新时间:2023-12-02 03:59:24 25 4
gpt4 key购买 nike

您好,我是图像分割的新手,我正在尝试给定的代码来获取前景对象,但我在 cvWatershed 中收到类似“不支持的格式或格式组合(仅支持 8 位、3 channel 输入图像)”的错误”

cv::Mat img0 = [img toMat];
cv::Mat img1;
cv::cvtColor(img0, img0, CV_RGB2GRAY);
cv::threshold(img0, img0, 100, 255, cv::THRESH_BINARY);

cv::Mat fg;
cv::erode(img0,fg,cv::Mat(),cv::Point(-1,-1),6);

cv::Mat bg;
cv::dilate(img0,bg,cv::Mat(),cv::Point(-1,-1),6);
cv::threshold(bg,bg,1,128,cv::THRESH_BINARY_INV);

cv::Mat markers(img0.size(),CV_8U,cv::Scalar(0));
markers= fg+bg;

//cv::namedWindow("标记"); //cv::imshow("标记", 标记);

WatershedSegmenter segmenter;
segmenter.setMarkers(markers);
cv::Mat result1 = segmenter.process(img0);

//cv::Mat 结果1; result1.convertTo(结果1,CV_8U);

UIImage * result = [UIImage imageWithMat:result1 andImageOrientation:[img imageOrientation]];
return result;

我尝试调试并在行中遇到错误

cv::Mat result1 = segmenter.process(img0);

提前致谢

最佳答案

我再次分析了我的代码并解决了问题。将图像转换为ilpImage,然后使用代码将其更改为8位3 channel 图像

WatershedSegmenter segmenter;
segmenter.setMarkers(markers);
markers=cvCreateImage(cvGetSize(my_iplImage), IPL_DEPTH_8U, 3);
cv::Mat result1 = segmenter.process(markers);

关于ios - cvWatershed 中不支持的格式或格式组合(仅支持 8 位、3 channel 输入图像),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16371368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com