簡體   English   中英

如何顯示矢量<Point2f>作為圖像?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM