代码如下
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
VideoCapture video(2);
if(!video.isOpened())
{
cout << "图像错误" << endl;
return -1;
}
while(1)
{
Mat img;
video >> img;
if(img.empty())
{
break;
}
Mat img1, img2;
img.copyTo(img1);
img.copyTo(img2);
blur(img, img, Size(9, 9));
cvtColor(img, img, COLOR_BGR2HSV);
inRange(img, Scalar(26, 43, 46), Scalar(34, 255, 255), img);
Mat canny;
Canny(img, canny, 80, 160, 3, false);
Mat kernel = getStructuringElement(0, Size(3, 3));
dilate(canny, canny, kernel);
morphologyEx(canny, canny, MORPH_OPEN, kernel);
vector<vector<Point>> contours;
vector<Vec4i> hierarchy;
findContours(canny, contours, hierarchy, 0, 2, Point());
int ccc = 0;
double maxm = 0;
int j = 0;
for (int i = 0; i < contours.size(); i++)
{
double mianji = contourArea(contours[i]);
if (mianji > maxm)
{
maxm = mianji;
j = i;
}
if (i == (contours.size() - 1)) {
ccc = j;
}
}
Rect rect = boundingRect(contours[ccc]);
rectangle(img1, rect, Scalar(0, 0, 255), 2, 8, 0);
imshow("img1",img1);
waitKey(1000/video.get(CAP_PROP_FPS));
}
waitKey();
return 0;
}
删了rect那就可以开摄像头了 不然他就闪退