我想點的每一個載體進入像矩陣:從性病::向量<性病::矢量<cv::Point>>到CV ::墊
std::vector<std::vector<cv::Point>> vec;
......................
for (int i ; i < vec.size();i++){
imshow("stuff", cv::Mat(vec[i]); /// this crashes !!!
}
任何想法如何做到這一點? 在此先感謝
我想點的每一個載體進入像矩陣:從性病::向量<性病::矢量<cv::Point>>到CV ::墊
std::vector<std::vector<cv::Point>> vec;
......................
for (int i ; i < vec.size();i++){
imshow("stuff", cv::Mat(vec[i]); /// this crashes !!!
}
任何想法如何做到這一點? 在此先感謝
imshow查找完整的圖片。
通過將輪廓投射到墊子上,您不會有圖片。 你可以做的是:(SRC是你的圖片)
src = imread(argv[1], 1);
/// Convert image to gray and blur it
cvtColor(src, src_gray, CV_BGR2GRAY);
blur(src_gray, src_gray, Size(3,3));
Mat canny_output;
vector<vector<Point> > contours;
vector<Vec4i> hierarchy;
/// Detect edges using canny
Canny(src_gray, canny_output, thresh, thresh*2, 3);
/// Find contours
findContours(canny_output, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_SIMPLE, Point(0, 0));
/// Draw contours
for(int i = 0; i< contours.size(); i++)
{
Mat test_image = Mat::zeros(canny_output.size(), CV_8UC3);
Scalar color = Scalar(rng.uniform(0, 255), rng.uniform(0,255), rng.uniform(0,255));
drawContours(test_image, contours, i, color, 2, 8, hierarchy, 0, Point());
imshow("test",test_image);
waitKey();
}
你可以這樣說:
void draw_contour(cv::Mat &dst_img, const std::vector<cv::Point> &contour, const cv::Scalar &color)
{
for (auto &point: contour)
{
dst_img.at<unsigned char>(point) = color;
}
}
或者,如果你正在使用的輪廓近似:
void draw_contour(cv::Mat &dst_img, const std::vector<cv::Point> &contour, const cv::Scalar &color)
{
for (unsigned i = 0; i < contour.size(); ++i)
{
cv::line(dst_img, contour[i], contour[(i + 1) % contour.size(), color);
}
}
請仔細複製粘貼! imshow之後的括號沒有關閉! – hivert
也許你的cv :: Mat的拷貝構造函數有問題,你的參數是通過引用傳遞的? – minicaptain
如果你只是想看到他們的答案是在那裏。 – Khashayar