【OpenCv】 如何把圖片的矩形、多邊形區域內容置零
阿新 • • 發佈:2018-11-07
#include <iostream> #include <opencv2/opencv.hpp> #include "opencv2/core/core.hpp" #include "opencv2/highgui/highgui.hpp" using namespace std; using namespace cv; int main() { Mat srcImg = imread("..\\src.jpg"); if (srcImg.empty()) { cout<<"Read Image Failed!"<<endl; return -1; } resize(srcImg, srcImg, Size(700, 500)); Point root_points[1][6]; root_points[0][0] = Point(100, 100); root_points[0][1] = Point(200, 100); root_points[0][2] = Point(300, 200); root_points[0][3] = Point(200, 300); root_points[0][4] = Point(100, 300); root_points[0][5] = Point(0, 200); const Point* ppt[1] = { root_points[0] }; int npt[] = { 6 }; Mat dstImg = srcImg.clone(); polylines(dstImg, ppt, npt, 1, 1, Scalar(0,0,0), 1, 8, 0); fillPoly(dstImg, ppt, npt, 1, Scalar(0, 0, 0)); imshow("srcImg", srcImg); imshow("dstImg", dstImg); waitKey(0); return 0; }
效果如下:
#include <iostream> #include <opencv2/opencv.hpp> #include "opencv2/core/core.hpp" #include "opencv2/highgui/highgui.hpp" using namespace std; using namespace cv; int main() { Mat srcImg = imread("..\\src.jpg"); if (srcImg.empty()) { cout<<"Read Image Failed!"<<endl; return -1; } resize(srcImg, srcImg, Size(700, 500)); Mat dstImg = srcImg.clone(); Rect targetRect(100,100,150,200); Mat allZeroZone(targetRect.height, targetRect.width, CV_8UC3, Scalar(0)); Mat tmpMat = dstImg(targetRect); allZeroZone.copyTo(tmpMat); imshow("srcImg", srcImg); imshow("dstImg", dstImg); waitKey(0); return 0; }
效果如下: