骑行的小牛 2021-06-03 09:50 采纳率: 53.8%
浏览 16

Qt对摄像头显示画面做直方图,不能实时显示图,只在关闭重启的瞬间出现一点点直方图,这是什么原因??

void CameraWidget::initChatView() {
	//
	//qDebug() << "ChartView begin:";
	int yRange = 0;
	_chart = new QChart();
	

	//设置横坐标
	QStringList categories;
	for (int i = 0; i<256; i++)
		if(i%50 == 0)
		{ 
			categories.append(QString::number(i));
		}
	QBarCategoryAxis *axisX = new QBarCategoryAxis();
	axisX->append(categories);

	//设置纵坐标
	QValueAxis *axisY = new QValueAxis;
	axisY->setLabelFormat("%d");
	axisY->setRange(0, yRange);

	_chart->setAxisX(axisX);
	_chart->setAxisY(axisY);
	//_chart->addAxis(axisX, Qt::AlignBottom);
	//_chart->addAxis(axisY, Qt::AlignLeft);
	//series->attachAxis(axisX);
	//series->attachAxis(axisY);

	_chart->setTitle("GrayHistogram");
	_chart->legend()->setVisible(false);
	_chart->createDefaultAxes();
	_chart->setAnimationOptions(QChart::SeriesAnimations);
	
	_series = new QBarSeries();
	ui->histwidget->setChart(_chart);
	ui->histwidget->setRenderHint(QPainter::Antialiasing);
	ui->histwidget->setVisible(true);
}

void CameraWidget::onUpdateBarSeries(int* data) {
	qDebug() << "CameraWidget::onUpdateBarSeries>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> make chart:";

	//设置每个“柱”的颜色,值,宽度等
	qDebug() << "Data::" << data;

	int yRange = 0;
	auto set = new QBarSet("Pixel");

	for (int i = 0; i<256; i++)
	{
		//qDebug() << "data[i] = " << data[i];
		set->append(data[i]);
		if (yRange<data[i]) yRange = data[i];
		set->setColor(QColor::Rgb);
	}

	_series->clear();
	_series->append(set);
	_series->setBarWidth(1.2);
	
	_chart->addSeries(_series);

	delete[] data;

}
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-10-25 19:44
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?