画像付きのOpenCVウィンドウを開く非常に基本的なGstreamer要素を実行しようとしています。
私の要素には、select_points.cppにあるselect_points()というウィンドウを開く関数のみを呼び出すチェーン関数があります。
chain_function:
static GstFlowReturn
gst_georeg_chain (GstPad * pad, GstBuffer * buf)
{
GstGeoreg *filter;
georeg_val gvals;
filter = GST_GEOREG (GST_OBJECT_PARENT (pad));
get_data(&gvals);
select_points(&gvals);
return gst_pad_push (filter->srcpad, buf);
}
select_points.cppに、次のコードがあります
#include <stdio.h>
#include "datasetup.h"
#include <opencv/cv.h>
#include <opencv/highgui.h>
using namespace cv;
extern "C" void select_points(georeg_val *gvals) //plugin is in C
{
IplImage* img=0;
img=cvLoadImage(gvals->imageName,1);
if(!img)
{
printf("Could not load image file: \n$%s$\n",gvals->imageName);
}
else
{
printf("Image was loaded\n");
cvNamedWindow("Select", CV_WINDOW_AUTOSIZE);
cvMoveWindow("Select", 200, 200); // offset from the UL corner of the screen
cvShowImage("Select",img);
cvDestroyWindow("Select");
cvReleaseImage(&img);
}
}
問題は、要素を使用してパイプラインを実行すると、cvNamedWindowを呼び出すときにハングすることです。助言がありますか?select_points()をコメントアウトすると、他のすべてが正常に機能します。