opencv读取摄像头,发现有黑边
#ifdef WIN32
cv::VideoCapture capture(mCameraIndex,cv::CAP_DSHOW);
#else
cv::VideoCapture capture(mCameraIndex,cv::CAP_AVFOUNDATION);
#endif
capture.set(cv::VideoCaptureProperties::CAP_PROP_FRAME_WIDTH,640);
capture.set(cv::VideoCaptureProperties::CAP_PROP_FRAME_HEIGHT,480);
capture.set(cv::VideoCaptureProperties::CAP_PROP_FPS,10);
capture.open(mCameraIndex);
经过百度、google一番搜索,发现黑边跟capture.open()的第二参数有关,
#ifdef WIN32
cv::VideoCapture capture(mCameraIndex,cv::CAP_DSHOW);
#else
cv::VideoCapture capture(mCameraIndex,cv::CAP_AVFOUNDATION);
#endif
capture.set(cv::VideoCaptureProperties::CAP_PROP_FRAME_WIDTH,640);
capture.set(cv::VideoCaptureProperties::CAP_PROP_FRAME_HEIGHT,480);
capture.set(cv::VideoCaptureProperties::CAP_PROP_FPS,10);
capture.open(mCameraIndex, cv::CAP_DSHOW);
构造函数传入的第二个参数apiPreference设定为cv::CAP_DSHOW了,
本以为open可以不用设定了,结果open的第二个参数有默认值,导致apiPreference并没有设定为cv::CAP_DSHOW,所以需要传入cv::CAP_DSHOW作为第二个参数