使用条款 使用Opencv和Qt减去两个灰度图像
Terms of use subtraction for two grayscale Images using Opencv & Qt
我想每 40 毫秒减去两张灰度图像,我每 40 毫秒从两台相机捕获两张图像,然后将两张图像大小设置为(高度 = 480,宽度 = 640),之后我转换为灰度。 但是当我对两个图像使用减法 (absdiff) 时,我得到"运行时错误"。 我注意到,当我显示两个图像的大小时,我得到了两个灰度图像大小不匹配的结果。
src_gray1 cols is: =640 src_gray1 rows is: =480 src_gray1.size =0x28fd5c
src_gray2 cols is: =640 src_gray2 rows is: =480 src_gray2.size =0x28fdcc
在标题中,我声明: cv::垫边1 , src_gray1 , 边2 , src_gray2 , src_gray3;
我的问题:减法有什么问题,是大小 灰度垫是问题所在?,我如何为 两个图像来克服这一点。
我在这里使用Qt 5.5.0,我的代码:
void MainWindow::on_pushButton_pressed()
{
timer_40_ms->start();
timer2_40_ms->start();
cap1.open(0);
if( !cap1.isOpened() )
{
std::cout<<"Camera1 did not open";
return;
}
cap2.open(1);
if( !cap2.isOpened() )
{
std::cout<<"Camera2 did not open";
return;
}
cap1.set(CV_CAP_PROP_FRAME_HEIGHT,480);
cap1.set(CV_CAP_PROP_FRAME_WIDTH,640);
cap2.set(CV_CAP_PROP_FRAME_HEIGHT,480);
cap2.set(CV_CAP_PROP_FRAME_WIDTH,640);
}
void MainWindow::ProcessFrame()
{
cv::Mat frame1;
ii++;
ui->textEdit->setText(QString::number(ii));
cap1 >> frame1;
cvtColor(frame1, src_gray1, CV_BGR2GRAY);
std::cout<<"src_gray1 cols is:"<<" ="<<src_gray1.cols<<" "<<"src_gray1 rows is:"<<" ="<<src_gray1.rows<<" "<<"src_gray1.size ="<<src_gray1.size<<'n';
}
void MainWindow::ProcessFrame2()
{
cv::Mat frame2;
ii2++;
cap2 >> frame2;
cvtColor(frame2, src_gray2, CV_BGR2GRAY);
ui->textEdit_3->setText(QString::number(ii2));
absdiff(src_gray1,src_gray2,src_gray3);
cv::imshow( "CAM2 Video Labeler", src_gray3 );
std::cout<<"src_gray2 cols is:"<<" ="<<src_gray2.cols<<" "<<"src_gray2 rows is:"<<" ="<<src_gray2.rows<<" "<<"src_gray2.size ="<<src_gray2.size<<'n';
}
问题是ProcessFrame2()是在ProcessFrame()之前调用的,谢谢Masek@dan帮助:
void MainWindow::on_pushButton_pressed()
{
timer_40_ms->start();
timer2_40_ms->start();
cap1.open(0);
if( !cap1.isOpened() )
{
std::cout<<"Camera1 did not open";
return;
}
cap2.open(1);
if( !cap2.isOpened() )
{
std::cout<<"Camera2 did not open";
return;
}
cap1.set(CV_CAP_PROP_FRAME_HEIGHT,480);
cap1.set(CV_CAP_PROP_FRAME_WIDTH,640);
cap2.set(CV_CAP_PROP_FRAME_HEIGHT,480);
cap2.set(CV_CAP_PROP_FRAME_WIDTH,640);
}
void MainWindow::ProcessFrame()
{
cv::Mat frame1;
ii++;
ui->textEdit->setText(QString::number(ii));
cap1 >> frame1;
cvtColor(frame1, src_gray1, CV_BGR2GRAY);
absdiff(src_gray1,src_gray2,src_gray3);
cv::imshow( "CAM2 Video Labeler", src_gray3 );
std::cout<<"src_gray1 cols is:"<<" ="<<src_gray1.cols<<" "<<"src_gray1 rows is:"<<" ="<<src_gray1.rows<<" "<<"src_gray1.size ="<<src_gray1.size<<'n';
}
void MainWindow::ProcessFrame2()
{
cv::Mat frame2;
ii2++;
cap2 >> frame2;
cvtColor(frame2, src_gray2, CV_BGR2GRAY);
ui->textEdit_3->setText(QString::number(ii2));
std::cout<<"src_gray2 cols is:"<<" ="<<src_gray2.cols<<" "<<"src_gray2 rows is:"<<" ="<<src_gray2.rows<<" "<<"src_gray2.size ="<<src_gray2.size<<'n';
}
相关文章:
- OpenCV - 如何在灰度图像上应用 Kmeans?
- C++灰度图像处理
- 如何显示具有 opengl 纹理的灰度图像
- (C++)(Visual Studio) 将高斯模糊滤镜应用于 RGB 中的灰度图像
- 使用 SSE 以最快的速度缩小 8 位灰度图像
- 使用 OpenCV 和 C++将 16 位灰度图像更改为彩色图像
- 有没有办法使用 glDrawPixel 渲染单通道灰度图像?
- 如何在OpenCV中减去两个不同尺寸的图像和灰度图像
- 使用 ImageMagick 从像素强度数组创建灰度图像时遇到问题
- 将高斯模糊应用于灰度图像
- 在OpenCV中将灰度图像转换为单色
- Mat的convertTo函数在OpenCV中将灰度图像的类型转换为CV_32F时抱怨断言错误
- 使用 FreeImage 加载 RAW 灰度图像
- 使用条款 使用Opencv和Qt减去两个灰度图像
- 使用OpenCV在Android上使用神经网络进行灰度图像分类
- 使用 C++ 从 16 位数据创建灰度图像
- 使用Opencv直接从网络摄像头获取灰度图像
- 在 openCV 中访问某些像素的强度值(灰度图像)
- 在 C 或 C++ 中翻转灰度图像
- 魔鬼库:保存灰度图像在三个矩阵而不是一个