我想通過像素的索引從 cv::Mat 中提取資料。這適用于顏色,例如 cv::Vec3b,但是當嘗試獲取點資訊時,它會崩潰,說明:
錯誤: cv::Mat::at 中的斷言失敗 (elemSize() == sizeof(_Tp)),
這是我正在使用的代碼:
cv::Mat src = imread(image_path, cv::IMREAD_COLOR);
int max_index = src.size().area() // gives total amount of pixels (i.e. max index)
std::cout << src.at<cv::Vec3b>(max_index -1) << std::endl; // gives me colour of final pixel
std::cout << src.at<cv::Point>(max_index -1) << std::endl; // ERROR should give point of final pixel but crashes
我該如何解決這個問題,以便我可以在特定像素索引處獲得點?
uj5u.com熱心網友回復:
你不能,使用Mat::at(). (它旨在檢索像素內容,而不是位置)
右下角可以是:
Point(src.cols-1, src.rows-1);
或在您的計算中:
Point((max_index-1)%src.cols, (max_index-1)/src.cols);
(imo,使用的整個想法max_index有點不切實際......)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/408483.html
標籤:
上一篇:錯誤:“HAAR_DO_CANNY_PRUNING”不是“cv”的成員
下一篇:使用opencv-rust做翻轉
