0

I am using opencv+Qt(c++) and I want convert a QColor RGB pixel to an opencv BGR pixel:

QColor --> cv::Scalar
cv::Scalar --> QColor 
応振强
  • 266
  • 3
  • 12

2 Answers2

1

You have not given a programming language. In python, you can use commands such as:

cv2image=cv2.cvtColor(cv2image, cv2.COLOR_BGR2RGB)
cv2image=cv2.cvtColor(cv2image, cv2.COLOR_RGB2BGR)
cv2image=cv2.cvtColor(cv2image, cv2.COLOR_RGB2GRAY)

For C++ the commands are similar.

You may also want to have a look here: How to combine OpenCV with PyQt to create a simple GUI?

Community
  • 1
  • 1
tfv
  • 6,016
  • 4
  • 36
  • 67
1

qcolor --> scalar

cv::Scalar qcolor2scalar(QColor color)
{
    int r,g,b;
    color.getRgb(&r, &g, &b);
    return cv::Scalar(b,g,r); // swap RGB-->BGR
}

scalar --> qcolor

QColor scalar2qcolor(cv::Scalar color)
{
    return QColor(color[2],color[1],color[0]); // swap RGB-->BGR
}
応振强
  • 266
  • 3
  • 12
  • 1
    You probably want to swap B and R, since in OpenCV you usually work on BGR, while in Qt in RGB. Also you should use the qreal variant, `getRgbF`, since Scalar contains doubles – Miki Apr 30 '16 at 14:47