关于QT和VS的基本使用和添加基本的响应函数请参考另一篇博客:
http://blog.csdn.net/shakevincent/article/details/52966557
另外一些简单的opencv的配置在网上有很多的博客:
但是我建议在每次使用的都可以新建一个属性文件,每次需要用到的时候再添加即可,防止添加很多属性后会导致程序无缘无故的缺少很多lib或者Link error 等。
1:放置一个lable控件用于显示图片和一个按键打开摄像头
2:添加响应函数代码:
void QT::But_close()
{
capture.open(0); //open the default camera
capture >> frame;
while (1)
{
capture >> frame;
if (!frame.empty())
{
cv::Mat frame1;
cv::imshow("yuantu", frame);
cv::Canny(frame, frame1, 0, 500, 3);
cv::waitKey(1);
image = Mat2QImage(frame1);
ui.label->setPixmap(QPixmap::fromImage(image));
}
}
}
其中用到了Mat 转化为QImage
QImage Mat2QImage(cv::Mat cvImg)
{
QImage qImg;
if (cvImg.channels() == 3) //3 channels color image
{
cv::cvtColor(cvImg, cvImg, CV_BGR2RGB);
qImg = QImage((const unsigned char*)(cvImg.data),
cvImg.cols, cvImg.rows,
cvImg.cols*cvImg.channels(),
QImage::Format_RGB888);
}
else if (cvImg.channels() == 1) //grayscale image
{
qImg = QImage((const unsigned char*)(cvImg.data),
cvImg.cols, cvImg.rows,
cvImg.cols*cvImg.channels(),
QImage::Format_Indexed8);
}
else
{
qImg = QImage((const unsigned char*)(cvImg.data),
cvImg.cols, cvImg.rows,
cvImg.cols*cvImg.channels(),
QImage::Format_RGB888);
}
return qImg;
}
其中一个是QT的显示界面,一个是Opencv直接imshow的结果。