Fonce
Enthusiast
Thread Starter
- Mitglied seit
- 27.07.2006
- Beiträge
- 480
- Laptop
- Macbook Pro 14" (M1 Pro)
- Details zu meinem Desktop
- Prozessor
- Ryzen 7 7800X3D
- Mainboard
- Asrock B650E PG Riptide WiFi
- Kühler
- Alphacool Eisblock XPX
- Speicher
- 32GB Kingston FURY Renegade DDR5-6000@6400MT/s
- Grafikprozessor
- Nvidia RTX 4080 FE
- Display
- MSI MPG321URX; MSI MPG 271QRX
- SSD
- WD_Black SN850X 2TB; Samsung 990 Pro 4TB; Seagate Firecude 530 1TB
- Gehäuse
- Phanteks Enthoo Pro 2
- Netzteil
- Enermax Revolution DF 850W
- Keyboard
- Evoworks EVO80 Cream
- Mouse
- Razer Viper V3 Pro
- Betriebssystem
- Windows 11 Pro
- Webbrowser
- Firefox
- Internet
- ▼250MBit/s ▲100MBit/s
Hi ich habe ein Problem mit OpenCV und zwar bekomme ich als Ergebnis ein Schwarzes Bild wieder, wenn ich absdiff auf zwei Farbbilder anwende. Wenn ich hier ein Graubild verwende funktioniert es hingegen ohne Problem.
Ich versteh nur nicht wieso.
Ich versteh nur nicht wieso.

Code:
void MainWindow::grabFrame()
{
if(capture.isOpened())
{
Mat input_frame;
capture >> input_frame;
GaussianBlur(input_frame,input_frame,Size(3,3),0,0);
Mat output_frame;
if(VT_GRAYSCALED==ui->cbView->currentIndex())
cvtColor(input_frame,output_frame,CV_BGR2GRAY);
else if(VT_THRESHOLD==ui->cbView->currentIndex())
{
cvtColor(input_frame,output_frame,CV_BGR2GRAY);
output_frame = output_frame > 65;
}
else if(VT_ABSOLUT_DIFFERENCE==ui->cbView->currentIndex() ||
VT_DETECTION==ui->cbView->currentIndex())
{
Mat frame_gray_cur;
frame_gray_cur=input_frame;
// cvtColor(input_frame,frame_gray_cur,CV_BGR2GRAY);
if(!firstRun)
{
Mat frame_absDiff = cvCreateMat(input_frame.cols,input_frame.rows,CV_8UC3);
Mat frame_threshold;
absdiff(frame_gray_prev,frame_gray_cur,frame_absDiff);
// cvtColor(frame_absDiff,frame_absDiff,CV_BGR2GRAY);
// frame_threshold = frame_absDiff > 70; //& frame_absDiff < 70;
// dilate(frame_threshold,frame_threshold,Mat(),Point(-1,-1),1);
// erode(frame_threshold,frame_threshold,Mat(),Point(-1,-1),2);
if(VT_DETECTION==ui->cbView->currentIndex())
{
}
output_frame=frame_absDiff;
//output_frame=frame_threshold;
}
else
{
firstRun=false;
output_frame=input_frame;
}
frame_gray_prev=frame_gray_cur;
}
else
output_frame=input_frame;
if(output_frame.type()==CV_8UC1)
cvtColor(output_frame,output_frame,CV_GRAY2RGB);
else
cvtColor(output_frame,output_frame,CV_BGR2RGB);
QImage img((const uchar*)output_frame.data,
output_frame.cols,
output_frame.rows,
QImage::Format_RGB888);
QPixmap pixmap = QPixmap::fromImage(img);
ui->frameLabel->setPixmap(pixmap);
}
}