python+opencv+wxPython ,用opencv读取视频帧,将读取到的视频帧显示子wxPython控件上

python+opencv+wxPython ,用opencv读取视频帧,将读取到的视频帧显示子wxPython控件上,第1张

建议还是用pyqt吧~网上很多文档,wx怎么都感觉麻烦,而且维护也不好~

况且pyqt本身的demos就可以参考到一定水平了!

第一次用pyqt做线程和sleep的时候用的是py自带的,能运行,但是经常出错

后来发现必须用qt自己那个什么模式,给你参考一下

class T_login(QtCore.QThread):

def run(self):

self.emit(QtCore.SIGNAL(loginfun(QString)),fun)

self.dologin = T_login()

self.connect(self.dologin, QtCore.SIGNAL(loginfun(QString)), self.do_login)

其他的都差不多

你取出前景的每一帧,然后对每一帧的处理就像对一张图像的处理一样处理。

比如你的前景设为:IplImage* foreground

那么对前景的边缘检测,滤波都跟单张图像是一样的

cvSmooth(foreground,foreground,CV_GAUSSIAN,3,3)

cvCanny(foreground,edge,30,180,3)

如果我这样说不对的话,请你把问题再描述详细一点。

1:可以使用opencv读取。

2:其代码如下:

#includehighgui.h

#includecv.h

//从摄像头中读入数据

int main(int argc,char** argv)

{

cvNamedWindow(Example1,CV_WINDOW_AUTOSIZE)

CvCapture* capture//初始化一个CvCapture结构的指针

if(argc==1)

{

capture=cvCaptureFromCAM(0)//如果参数为1,则从摄像头中读入数据,并返回一个CvCapture的指针

} //注:《学习OpenCV》中此处用cvCreateCameraCapture为错

else

{

capture=cvCreateFileCapture(argv[1])

}

assert(capture!=NULL)//断言(assert)使用,检查capture是否为空指针,为假时程序退出,并打印错误消息

IplImage* frame

while(1)

{

frame=cvQueryFrame(capture)//用于将下一帧视频文件载入内存(实际是填充和更新CvCapture结构中),返回一个对应当前帧的指针

if(!frame)

break

cvShowImage(Example1,frame)

char c=cvWaitKey(33)

if(c==27) break//出发ESC键退出循环,读入数据停止

}

cvReleaseCapture(capture)//释放内存

cvDestroyWindow(Example1)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11904259.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存