Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ opencv中graphcut的奇怪结果_C++_Opencv - Fatal编程技术网

C++ opencv中graphcut的奇怪结果

C++ opencv中graphcut的奇怪结果,c++,opencv,C++,Opencv,我在stackoverflow中找到了代码并做了一些更改,但结果很奇怪,掩码是全白色或全黑色。现在我想知道如何使用GraphCut在两个重叠的图像之间找到seeam线。谢谢 int main() { Mat image0=imread("F:\\1\\1.jpg"); Mat image1=imread("F:\\1\\2.jpg"); image0.convertTo(image0,CV_32F,1.0/255.0); cv::imshow("i

我在stackoverflow中找到了代码并做了一些更改,但结果很奇怪,掩码是全白色或全黑色。现在我想知道如何使用GraphCut在两个重叠的图像之间找到seeam线。谢谢

int main()
{    
     Mat image0=imread("F:\\1\\1.jpg");
     Mat image1=imread("F:\\1\\2.jpg");
     image0.convertTo(image0,CV_32F,1.0/255.0);
     cv::imshow("image0",image0);
     image1.convertTo(image1,CV_32F,1.0/255.0);
     // our corners are just at (0,0)
     cv::Point corner1;
     corner1.x = 0;
     corner1.y = 0;

     cv::Point corner2;
     corner2.x = 0;
     corner2.y = 0;

     std::vector<cv::Point> corners;

     corners.push_back(corner1);
     corners.push_back(corner2);

     std::vector<cv::Mat> masks;
     //Mat imageMask0;
     //Mat imageMask1;
     Mat imageMask0(image0.size(),CV_8U);
     imageMask0(Rect(0,0,imageMask0.cols,imageMask0.rows)).setTo(255);
     Mat imageMask1(image1.size(),CV_8U);
     imageMask1(Rect(0,0,imageMask1.cols,imageMask1.rows)).setTo(255);
     masks.push_back(imageMask0);
     masks.push_back(imageMask1);

     std::vector<cv::Mat> sources;

     sources.push_back(image0);
     sources.push_back(image1);

     cv::detail::GraphCutSeamFinder *seam_finder = new cv::detail::GraphCutSeamFinder();
     seam_finder->find(sources, corners, masks);
     cv::imshow("mask",masks[1]);
     masks[0].convertTo(masks[0],CV_8UC3,255);
     cv::imwrite("F:\\1\\998.jpg",masks[0]);
     masks[1].convertTo(masks[1],CV_8UC3,255);
     cv::imwrite("F:\\1\\999.jpg",masks[1]);
     printf("%lu\n", masks.size());
     //for(int i = 0; i < masks.size(); i++)
     //{
     //     std::cout << "MASK = "<< std::endl << " "  << masks.at(i) << std::endl << std::endl;
     // }
     cv::waitKey();
      return 0;
}
intmain()
{    
Mat image0=imread(“F:\\1\\1.jpg”);
Mat image1=imread(“F:\\1\\2.jpg”);
image0.convertTo(image0,CV_32F,1.0/255.0);
cv::imshow(“image0”,image0);
图像1.转换到(图像1,CV_32F,1.0/255.0);
//我们的弯角刚好在(0,0)
cv::角点1;
角1.x=0;
1.y=0;
cv::角点2;
角2.x=0;
角2.y=0;
向量角点;
拐角。向后推(拐角1);
拐角。向后推(拐角2);
std::矢量掩模;
//matimagesk0;
//Mat-imagesk1;
Mat imageMask0(image0.size(),CV_8U);
imageMask0(Rect(0,0,imageMask0.cols,imageMask0.rows)).setTo(255);
Mat imageMask1(image1.size(),CV_8U);
imageMask1(Rect(0,0,imageMask1.cols,imageMask1.rows)).setTo(255);
掩模。推回(imageMask0);
掩模。推回(imageMask1);
std::矢量源;
源。推回(图像0);
来源。推回(图1);
cv::detail::GraphCutSeamFinder*seam_finder=新cv::detail::GraphCutSeamFinder();
seam_finder->find(源、角、遮罩);
cv::imshow(“面具”,面具[1]);
掩码[0]。转换为(掩码[0],CV_8UC3255);
cv::imwrite(“F:\\1\\998.jpg”,掩码[0]);
掩码[1]。转换为(掩码[1],CV_8UC3255);
cv::imwrite(“F:\\1\\999.jpg”,掩码[1]);
printf(“%lu\n”,masks.size());
//对于(int i=0;i//std::你没看到吗?谢谢你的回答,但是,我想用Opencv的GraphCut在重叠的图像之间找到接缝,这样我就可以缝合它们了!