[英]How to show the vector<Point2f> as a image?
我剛開始學習 opencv,我定義了一個向量,如:
vector<Point2f> cornersB;
之后我使用cornersB做了一些計算,如:goodFeaturesToTrack、cornerSubPix和calcOpticalFlowPyrLK。
現在我想顯示cornerB以查看已繪制的點,我的代碼是:
pointmat = Mat(cornersB);
imshow("Window", pointmat);
但是我收到錯誤消息,說 cvConvertImage 中的通道數不正確(源圖像必須有 1、3 或 4 個通道)。
誰能教我如何在圖像中顯示cornerB的點?
我只想看到點(白色的點和黑色的背景)。
更簡單的是使用 cv::drawKeypoints
drawKeypoints( InputArray image, const std::vector<KeyPoint>& keypoints, InputOutputArray outImage,const Scalar& color=Scalar::all(-1), int flags=DrawMatchesFlags::DEFAULT );
在您的情況下,讓我們將黑色圖像定義為圖像:
cv::Mat image(512,512,CV_8U)
image.setTo(0);
然后將cornersB 轉換為cv::KeyPoint kp_cornerB 並使用CV_RGB(255, 255, 255) 將顏色定義為白色
std::vector<cv::KeyPoint> kp_cornerB ;
// TODO convert cornersB to kp_cornerB
cv::Mat pointmat;
cv::drawKeypoints(image, kp_cornerB, pointmat, CV_RGB(255, 255, 255));
imshow("Window", pointmat);
可以使用向量上的 for 循環來完成轉換:
for(vector<Point2f>::const_iterator it = cornersB.begin();
it != cornersB.end(); it++) {
cv::KeyPoint kp(*it, 8);
kp_cornerB.push_back(kp);
}
此處,值“8”是關鍵點的“大小”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.