編輯:
我可以看到建議cvGet2d的意見。我想,如果你只是想展示「積分」,最好向他們展示一個小小的鄰居,這樣他們就可以看到他們在哪裏。爲此,您可以在(x,y)處使用起始點在面具上繪製白色實心圓,然後執行copyTo
。
using namespace cv;
Mat m(input_iplimage);
Mat mask=Mat::zeros(m.size(), CV_8UC1);
p1 = Point(x,y);
r = 3;
circle(mask,p1,r, 1); // draws the circle around your point.
floodFill(mask, p1, 1); // fills the circle.
//p2, p3, ...
Mat output = Mat::zeros(m.size(),m.type()); // output starts with a black background.
m.copyTo(output, mask); // copies the selected parts of m to output
舊文章:
創建一個面具和複製這些像素:
#include<opencv2/opencv.hpp>
using namespace cv;
Mat m(input_iplimage);
Mat mask=Mat::zeros(m.size(), CV_8UC1); // set mask 1 for every pixel you wanna copy.
Rect roi=Rect(x,y,width,height); // create a rectangle
mask(roi) = 1; // set it to 0.
roi = Rect(x2,y2,w2,h2);
mask(roi)=1; // set the second rectangular area for copying...
Mat output = 100*Mat::ones(m.size(),m.type()); // output with a gray background.
m.copyTo(output, mask); // copy selected areas of m to output
或者你可以複製矩形按矩形:
Mat m(input_iplimage);
Mat output = 100*Mat::ones(m.size(),m.type()); // output with a gray background.
Rect roi=Rect(x,y,width,height);
Mat m_temp, out_temp;
m_temp=m(roi);
out_temp = output(roi);
m_temp.copyTo(out_temp);
roi=Rect(x2,y2,w2,h2);
Mat m_temp, out_temp;
m_temp=m(roi);
out_temp = output(roi);
m_temp.copyTo(out_temp);
嗯,你可以這樣做就像你描述的那樣,我的意思是一個IplImage有一個指向數據的指針,你可以手動實現一些東西來複制ROI。 – SinisterMJ
我不想設置ROI,我想複製一些像素並將其顯示在輸出圖像中。 – MMH
你可以使用['cvGet2D'](http://docs.opencv.org/modules/core/doc/old_basic_structures.html?highlight=cvget2d#get-d) – sgarizvi