我需要将我的网络摄像头输入调整为常量值,如430 * 315,以便从我的j面板查看而不调整大小仅显示一个小面积,等于调整大小的j面板,使用OpenCV VideoCapture方法从网络摄像头捕获视频
下面是我以前用来抓取框架的代码部分
if (webSource.grab()) {
try {
webSource.retrieve(frame);
Graphics g = jPanel2.getGraphics();
我试过
Size sz = new Size(430, 315);
Imgproc.resize(frame, frame, sz);
和
webSource.set(CV_CAP_PROP_FRAME_WIDTH, 430);
webSource.set(CV_CAP_PROP_FRAME_HEIGHT, 315);
我无法完成任何要求,所以有办法可以做到这一点
答案 0 :(得分:0)
要将当前图像的某些部分作为新图像,请使用ROI(感兴趣区域)指定该部分。 ROI在这里是一个矩形,可以通过多种方式初始化。
很抱歉这是用C ++编写的,而不是Java;
指定区域的一些方法:
Rect ROI = Rect(Point(0, 0), Size(430, 315));
Rect ROI = Rect(0, 0, 430, 315);
Rect ROI = Rect(Point(x, y), Point(x + 430, y + 315));
现在获取捕获帧的一部分:
Mat windowedframe = frame(ROI);
警告:此方法不关心矩形的边界是否位于图像中,因此如果超出帧的分辨率,它将崩溃。
答案 1 :(得分:0)
从网络摄像头捕获帧时,您可以使用调整大小功能调整大小。
// Using C++
VideoCapture cap(0);
cap.set(CV_CAP_PROP_FRAME_WIDTH, 430);
cap.set(CV_CAP_PROP_FRAME_HEIGHT, 315);
Mat image;
cap.read(image);
resize(image, image, Size(430, 315), 0, 0, INTER_CUBIC);
namedWindow("firstframe", 1);
imshow("firstframe", image);
waitKey(0);
也许这可以解决问题。