c++ - Opencv imshow 显示奇怪的图像
问题描述
我正在尝试使用 opencv 显示由 gphoto 在 Ubuntu 中连续捕获的图像系列(以校准相机)。但是,我得到了一个奇怪的输出,它混合在所需的图像和当前窗口之间。
寻找棋盘代码
camera.Capture(image,true); // capture image from gphoto
while(successes<numBoards) // check if the number of boards meets
{
cvtColor(image, gray_image, CV_BGR2GRAY);
bool found = findChessboardCorners(image, board_sz, corners, CV_CALIB_CB_ADAPTIVE_THRESH | CV_CALIB_CB_FILTER_QUADS);
if(found)
{
cornerSubPix(gray_image, corners, Size(11, 11), Size(-1, -1), TermCriteria(CV_TERMCRIT_EPS | CV_TERMCRIT_ITER, 30, 0.01));
drawChessboardCorners(gray_image, board_sz, corners, found);
}
imshow("Camera", image.clone());
imshow("Camera_gray", gray_image.clone());
int key = waitKey(30);
camera.Capture(image,true);
}
camera.Capture 代码
void GphotoCapture::Capture(Mat &image, bool isToCalibrate){
char *data;
unsigned long size;
capture_to_memory(camera, context, (const char**)&data, &size);
std::vector<unsigned char> ImVec(data, data + size);
Mat ImMat;
ImMat = imdecode(ImVec, 1); // convert data in memory to Mat
image=ImMat ;
}
解决方案
推荐阅读
- c++ - 计算二叉搜索树 C++ 中的节点数
- string - AWK 比较两个字符串变量
- reactjs - 创建并发布可重用的 React Native UI 组件库
- python - Python Pandas - 如果使用 groupby 函数对两列中的数据进行汇总,则将一列中的数据除以另一列
- flutter - 用于 OnLongPressed 的颤振 GestureDetector
- webpack - 如何追踪捆绑节点模块的原因
- ios - 如何在 ViewController 中显示弹出窗口
- oracle-wallet - 向 Oracle 钱包添加证书
- ios - Mapbox 图像标记
- sorting - 如何在窗口中使用命令对目录进行排序