2
我想在OpenCV中使用C++實現抓取算法 我偶然發現了this site,發現了一個非常簡單的方法。不幸的是,它似乎代碼不工作對我來說OpenCV抓取算法示例不工作
#include "opencv2/opencv.hpp"
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
// Open another image
Mat image;
image= cv::imread("images/mango11a.jpg");
// define bounding rectangle
cv::Rect rectangle(50,70,image.cols-150,image.rows-180);
cv::Mat result; // segmentation result (4 possible values)
cv::Mat bgModel,fgModel; // the models (internally used)
// GrabCut segmentation
cv::grabCut(image, // input image
result, // segmentation result
rectangle,// rectangle containing foreground
bgModel,fgModel, // models
1, // number of iterations
cv::GC_INIT_WITH_RECT); // use rectangle
cout << "oks pa dito" <<endl;
// Get the pixels marked as likely foreground
cv::compare(result,cv::GC_PR_FGD,result,cv::CMP_EQ);
// Generate output image
cv::Mat foreground(image.size(),CV_8UC3,cv::Scalar(255,255,255));
image.copyTo(foreground,result); // bg pixels not copied
// draw rectangle on original image
cv::rectangle(image, rectangle, cv::Scalar(255,255,255),1);
cv::namedWindow("Image");
cv::imshow("Image",image);
// display result
cv::namedWindow("Segmented Image");
cv::imshow("Segmented Image",foreground);
waitKey();
return 0;
}
任何人都可以幫我這個嗎?什麼應該是問題 PS:在編譯時打印沒有錯誤。
你的代碼對我來說看起來很好。你確定你的圖片位於正確的文件夾?你的圖像是否大於150x180像素?否則,你正在圖像區域外定義一個矩形。 – kadav3r 2013-03-21 07:26:17
是的,我的圖像是930 X 700,並且圖像位於正確的文件夾中,因爲我現在已經使用相同的圖像很長時間了。我嘗試在命令提示符下打印,並在grabcut函數調用之後,cout似乎沒有實現。 – Mark 2013-03-21 10:15:14