`

ROI感兴趣区域提取

 
阅读更多
#include <iostream>  
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
//ROI感兴趣区域提取
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
	   Mat ImageSrc = imread("D:\\XR\\CUT\\2003.jpg",0);//二值化之前一定要灰度化
	   //namedWindow("原图", 0);
	   //resizeWindow("原图", 500, 500);
	   Mat minSrc;
	   resize(ImageSrc, minSrc,Size(ImageSrc.cols/3, ImageSrc.rows/3));
	   imshow("原图", minSrc);
		
	   Mat binary;
	   //threshold(minSrc, binary, 0, 255, THRESH_OTSU | THRESH_BINARY);
	   threshold(minSrc, binary, 100, 255, THRESH_BINARY);
	   //namedWindow("二值化", 0);
	   //resizeWindow("二值化", 500, 500);
	   imshow("二值化", binary);

	   
	   vector<Point> county, countx;
	   //传y
	   for (int y = 0; y < binary.rows;y++) {
		   for (int x = 0; x < binary.cols; x++) {

			   if (binary.at<uchar>(y, x) == 255)
			   {
				   county.push_back(Point(x,y));
				  
			   }
			  
		   }
		   
	   }
	   //传x
	   for (int x = 0; x < binary.cols; x++) {
		   for (int y = 0; y < binary.rows; y++) {

			   if (binary.at<uchar>(y, x) == 255)
			   {
				   countx.push_back(Point(x, y));
				   
			   }
			   
		   }
		  
	   }
	   Point leftUp, rightDown;
	   leftUp.y = county[0].y;
	   leftUp.x = countx[0].x;
	   rightDown.y = county[county.size()-1].y;
	   rightDown.x = countx[county.size()-1].x;

	   cout << "leftup: "<< leftUp << endl;
	   cout << " rightDown: " << rightDown << endl;

	   Mat imageROI;
	   imageROI = minSrc(Rect(leftUp.x, leftUp.y, rightDown.x - leftUp.x,rightDown.y - leftUp.y));
	   
	   imshow("imageROI", imageROI);
	   //imwrite("D:\\XR\\CUT\\imageROI06.jpg", imageROI);
	   waitKey(0);
	   return 0;
}

 

 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

Global site tag (gtag.js) - Google Analytics