Quantcast
Channel: OpenCV Q&A Forum - Latest question feed
Viewing all articles
Browse latest Browse all 19555

What problem with my program? and how to solve it?

$
0
0
**The mistake is vector subscript out of range , I don't know how to change it to right. please help me~thanks** void bo_lb(Mat &image, Mat & outputimage, int &count) { int value = 0; std::vector < vector> blob; std::vector::iterator itr; for (int y = 1; y < image.rows - 1; y++) { for (int x = 1; x < image.cols - 1; x++) { value = Mpixel(image, x, y); if (value == 255) { int topvalue = Mpixel(image, x-1, y ); int leftvalue = Mpixel(image, x , y-1); if (topvalue > 0 && leftvalue > 0) { if (topvalue == leftvalue) { vector&set = blob[leftvalue]; set.push_back(Point2i(x, y)); value = leftvalue; } else { vector&set2 = blob[leftvalue]; set2.push_back(Point(x, y)); value = leftvalue; vector&set1 = blob[topvalue]; if (set1.size() != 0) { for (itr = set1.begin(); itr != set1.end(); itr++) { value = leftvalue; } set2.insert(set2.end(), set1.begin(), set1.end()); set1.clear(); } } } else if (topvalue == 0 && leftvalue == 0) { vector vec; vec.push_back(Point2i(x, y)); blob.push_back(vec); value = blob.size() - 1; } else if (topvalue == 0 && leftvalue > 0) { vector set = blob[leftvalue]; set.push_back(Point(x, y)); value = leftvalue; } else if (topvalue > 0 && leftvalue == 0) { vector&set = blob[topvalue]; set.push_back(Point(x, y)); value = topvalue; } } } } int cout = 0; vector< vector>::iterator itr1; for (itr1 = blob.begin(); itr1 != blob.end(); itr1++) { vector vec = *itr1; if (vec.size() == 0) { continue; } unsigned char r = rand() % 255; unsigned char g = rand() % 255; unsigned char b = rand() % 255; for (itr = vec.begin(); itr != vec.end(); itr1++) { int x = itr->x; int y = itr->y; CB(image, x, y) = b; CG(image, x, y) = g; CR(image, x, y) = r; } cout++; } count = cout; }

Viewing all articles
Browse latest Browse all 19555

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>