1. 程式人生 > >opencv 替換圖像中的一部分

opencv 替換圖像中的一部分

nal img tails body zeros copy mage 取圖 原始的

首先選取圖像中的Roi區域,然後對Roi區域進行賦值,那麽原圖像相應的區域也跟著變化了:

    dst = src.clone();
    cv::Mat Roi(dst, cv::Rect(x, y, cut_out_len, cut_out_len));
    cv::RNG rnger(cv::getTickCount());
    rnger.fill(Roi, cv::RNG::UNIFORM, cv::Scalar::all(0), cv::Scalar::all(256));

上述代碼是將Roi區域進行隨機的顏色填充

技術分享圖片

再例如:

//創建一幅320×240的圖像
Mat img(Size(320
,240), CV_8UC3); //選擇一塊ROI Mat roi(img, Rect(10, 10, 100, 100)); //將ROI的顏色填充為綠色,原始的img圖像將會改變。 roi=Scalar(0,255,0);

再例如:

cv::Mat image = cv::Mat::zeros(512, 512, CV_8UC3);  
image.setTo(cv::Scalar(100, 0, 0));  
cv::imshow("original", image);  
cv::Mat roi = cv::imread("E:\\Images\\Hepburn.png", cv::IMREAD_COLOR);  
cv::imshow(
"roi", roi); cv::Rect roi_rect = cv::Rect(128, 128, roi.cols, roi.rows); roi.copyTo(image(roi_rect)); cv::imshow("result", image); cv::waitKey(0); return;

另外生成一定範圍的隨機數:https://www.cnblogs.com/vathena/articles/4356646.html

srand((unsigned)time(null));
(low,up) #define Random (rand()%(up-low+1)) + low - 1
[low,up) 
#define Random (rand()%(up-low)) + low (low,up] #define Random (rand()%(up-low))+ low + 1 [low,up] #define Random (rand()%(up-low+1)) + low

opencv 替換圖像中的一部分