Im 프로그래밍 및 opencv에 새로운 기능이있어서 색상 분할을 사용하여 hdd를 감지하려고합니다. 내 코드는 지금까지 이미지를로드 다른 색상으로 3 마스크를 생성하고 비 제로 포인트 주위에 수직 경계 상자립니다고정 된 각도없이 이미지에 회전 된 경계 상자 그리기
int main(int argc, char** argv)
{
//Load the image
Mat img = imread(argv[1], 1);
if (img.empty()){
cout << "No image found..." << endl;
return -1;
}
//Extracting colors - BGR
Mat silver, white, black;
//Silver
inRange(img, Scalar(180, 180, 180), Scalar(200, 200, 200), silver);
//White
inRange(img, Scalar(240, 240, 240), Scalar(255, 255, 255), white);
//Black
inRange(img, Scalar(0, 0, 0), Scalar(30, 30, 30), black);
// logical OR mask
Mat1b mask = silver | white | black;
// Find non zero pixels
vector<Point> pts;
findNonZero(mask, pts);
cout << "Non-Zero Locations = " << pts << endl << endl; // get non zero coordinates
// Compute bounding box
Rect box = boundingRect(pts);
// Show bounding box
rectangle(img, box, Scalar(0, 0, 255), 3);
namedWindow("box", CV_WINDOW_NORMAL);
imshow("box", img);
imshow("mask", mask);
waitKey(0);
destroyAllWindows;
return 0;}
가 지금은 작은 경계 상자를 그리려을, 그래서 나는
를 사용하려고cv::RotatedRect box2 = cv::minAreaRect(pts);
대신. 내가
RotatedRect box2 = minAreaRect(pts);
에러 출력과
Rect box = boundingRect(pts);
을 대체하여 그것을 시각화 할 때 그러나 컴파일 나던 다음 cv::Rectangle
Opencv Docs 당으로
error: no matching function for call to ‘rectangle(cv::Mat&, cv::RotatedRect&, cv::Scalar, int)’
rectangle(img, box2, Scalar(0, 0, 255), 3);
무엇 스택 추적입니까? 어디에서 붙어 있나요? – ZdaR
그게 당신이 의미 한 것입니까? 게시물을 수정하는 것이 옳은가요? 아니면 코멘트에 변경 사항을 적용해야합니까? 죄송합니다. 빠른 답장을 보내 주셔서 감사합니다. –
과부하가 없기 때문에 "크래시"란 말은 컴파일도되지 않습니다. [docs] (https://docs.opencv.org/3.3.0/d6/d6e/group__imgproc__draw.html)를 읽으십시오. ! [기존 튜토리얼] (https://docs.opencv.org/3.3.0/dd/d49/tutorial_py_contour_features.html)을 참조하십시오. 파이썬을 사용하더라도 회전 된 사각형을 그릴 수 있습니다. 'boxPoints'를 사용하고'drawContours'를 사용하여 결과를 렌더링하십시오. 왜 똑같은 방법을 시도해 보지 않으시겠습니까? –