示例#1
0
void BaseFrame::image_receivedCB(const sensor_msgs::ImageConstPtr & msg)
{
	if(first_image || base_frame_graphics_view->get_correct_bb())
	{
		try
		{
			if (enc::isColor(msg->encoding))
				cv_ptr = cv_bridge::toCvShare(msg, enc::RGB8);
			else
				cv_ptr = cv_bridge::toCvShare(msg, enc::MONO8);
		}
		catch (cv_bridge::Exception& e)
		{
			ROS_ERROR("cv_bridge exception: %s", e.what());
			return;
		}

		QImage image;

		if (enc::isColor(msg->encoding))
		{
			image = QImage((const unsigned char*)(cv_ptr->image.data),cv_ptr->image.cols,cv_ptr->image.rows,QImage::Format_RGB888);
			//image.rgbSwapped();
		}
		else
		{
			image = QImage((const unsigned char*)(cv_ptr->image.data),cv_ptr->image.cols,cv_ptr->image.rows,QImage::Format_Indexed8);
		}

		emit sig_image_received(image);

		if(first_image)
			first_image = false;
	}
}
示例#2
0
void BaseFrame::image_received_callback(const sensor_msgs::ImageConstPtr & msg)
{
	if(first_image || baseFrameGraphicsView->get_correct_bb())
	{
		try
		{
			if (enc::isColor(msg->encoding))
				//cv_ptr = cv_bridge::toCvShare(msg, enc::BGR8); //Original
				cv_ptr = cv_bridge::toCvShare(msg, enc::RGB8); //edited by Ardillo
			else
				cv_ptr = cv_bridge::toCvShare(msg, enc::MONO8);
		}
		catch (cv_bridge::Exception& e)
		{
			ROS_ERROR("cv_bridge exception: %s", e.what());
			return;
		}

		QImage image;
		
		try
		{
			if (enc::isColor(msg->encoding))
			{
				image = QImage((const unsigned char*)(cv_ptr->image.data),cv_ptr->image.cols,cv_ptr->image.rows,QImage::Format_RGB888);
				//image.rgbSwapped(); //commented by Ardillo
			}
			else
			{
				image = QImage((const unsigned char*)(cv_ptr->image.data),cv_ptr->image.cols,cv_ptr->image.rows,QImage::Format_Indexed8);
			}
		}
		catch (cv_bridge::Exception& e)
		{
			ROS_ERROR("cv_bridge exception2: %s", e.what());
			return;
		}

		emit sig_image_received(image);

		if(first_image)
			first_image = false;
	}
}