opencv에서 매트 파일을 만들고 0으로 초기화하려고합니다 (모든 픽셀을 검정색으로 초기화). 나는 그 이미지 내부의 위치와 약간의 사각형을 가지고 그 후히트 맵에서 투표와 같은 직사각형을 그립니다.
Mat img = Mat::zeros(image.rows, image.cols, CV_8UC1);
을 나는 사각형 흰색의 대응 영역을 그리려 : 따라서 나는 초기화 목적으로 를 사용합니다. 어떻게 매트 파일에 영역을 그릴 수 있습니까?
나는 직사각형을 그리는 다음과 같은 기능을 가지고 있습니다. 그러나 경계 만이 아닌 모든 사각형을 그립니다. 중복 경계 상자 (가까운 255) 간단한 비 중첩 사각형 더 높은 값을 가질 수 있도록
static Mat image_draw(Mat image, vector<Rect> rect, CvScalar color){
for(int i = 0; i < faces.size(); i++)
{
Point pt1(rect[i].x + rect[i].width, rect[i].y + rect[i].height);
Point pt2(rect[i].x, rect[i].y);
rectangle(image, pt1, pt2, color, 5, 8, 0);
}
return image;
}
는 내가 원하는 정확한 것은 내 직사각형 열 맵을 작성하는 것입니다. 나는 두께를 바꾼다 :
img = image_draw(img, rects, cvScalar(255, 102, 255, 0), -1);
가변 rect는 0에서 10까지의 직사각형을 포함한다. 어떻게 든 사각형 그리기를 집계하고 싶습니다. 직사각형을 다시 그리기 만하면 안됩니다.
내가 functionize하려면
는 그렇게 somwthing한다 : 편집 최종 솔루션 :static Mat heatmap2(Mat image1, vector<Rect> faces, CvScalar color, int thickness) {
cv::Mat heatmap(image1.rows, image1.cols, CV_8U,cv::Scalar(0));
for(int i = 0; i < faces.size(); i++)
{
cv::Mat temp(image1.rows, image1.cols , CV_8U, cv::Scalar(0));
Point pt1(faces[i].x + faces[i].width, faces[i].y + faces[i].height);
Point pt2(faces[i].x, faces[i].y);
rectangle(temp, pt1, pt2, color, thickness, 8, 0);
heatmap+=temp;
}
return heatmap;
}
만약 내가 그것을 functinonize하고 싶습니까? –
글쎄, 생각해 보라. 이것은 사소한 질문이다. 아주 기본적인 것들 (함수와 클래스). – William
히트 맵에 색상을 추가하려면 어떻게해야합니까? –