câu hỏi dễ dàng nhưng không thể hiểu được.Làm thế nào để cv :: mặt nạ trông giống như cho opencv minMaxLoc?
normaly void minMaxLoc (InputArray src, double * minVal, double * maxVal = 0, Point * minLoc = 0, Point * maxLoc = 0, InputArray mask = noArray()) Nhưng mặt nạ trông như thế nào?
Đây là những gì tôi muốn: Một chiều một chiều (chỉ một hàng) và tôi muốn vị trí minMax của một khoảng (thấp hơn đến upperBorder) của Mat (maxRowGChnnl).
int lowerBorder,upperBorder;
lowerBorder = 30;
upperBorder = 100;
cv::minMaxLoc(maxRowGChnnl.row(0),&minValue,&maxValue,&minLoc,&maxLoc,(lowerBorder,upperBorder));
Đây là kích thước maxRowGChnnl:
maxRowGChnnl {flags=1124024325 dims=2 rows=1 ...} cv::Mat
flags 1124024325 int
dims 2 int
rows 1 int
cols 293 int
Đoạn mã trên abborts với:
OpenCV Error: Assertion failed ((cn == 1 && (mask.empty() || mask.type() == CV_8
U)) || (cn >= 1 && mask.empty() && !minIdx && !maxIdx)) in unknown function, fil
e ..\..\..\src\opencv\modules\core\src\stat.cpp, line 787
Nhờ sự giúp đỡ của bạn.
đây là câu trả lời tôi đã suy nghĩ (cách thức giải quyết). Nhưng thực tế nó không hoạt động. Khi in maxLoc tôi reseave [-1, -1]. Khi in maxRowGChnnl (cv :: Rect (thấp hơn, 0, trên-dưới, 0)) đầu ra là [] - trống. Nhưng Mat maxRowGChnnl có giá trị trong đó! Tôi đang làm gì sai? – user1651460
Oups. Lỗi của tôi. Chiều cao nên là 1 tất nhiên. Không 0. Sử dụng maxRowGChnnl (cv :: Rect (thấp hơn, 0, upper-lower, 1)) –
Hoàn hảo. Đó là nó! okay tôi thấy việc xây dựng của rect ngay bây giờ. – user1651460