[英]Converting between VTK framebuffer and OpenCV Mat data
我在VTK中可視化數據,我想抓取renderwindow的幀緩沖區並在OpenCV應用程序中顯示它。
我目前正在嘗試通過:
void aig::VirtualScene::Mat(cv::Mat &m) {
typedef unsigned char pixel;
pixel *pixels = this->window_->GetRGBACharPixelData(0, 0, this->w_, this->h_, true);
m = cv::Mat(this->h_, this->w_, CV_8UC4, pixels);
}
但我最終得到一個扭曲的圖像:
(倒掛和傾斜,我認為這是一個步驟問題。
此代碼中是否存在明顯錯誤? 我知道顛倒的問題是因為兩個數據坐標的起源。 對傾斜問題最感興趣。
看看GetRGBACharPixelData
的定義:
virtual unsigned char *GetPixelData(int x,int y,int x2,int y2,int front);
您可以看到它采用了右上角 (x2,y2) 的索引 ,而不是子圖像的大小 。
因此你想要的是:
pixel *pixels = this->window_->GetRGBACharPixelData(0, 0, this->w_ - 1, this->h_ - 1, true);
^^^^ ^^^^
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.