Qt+OpenCV设置图片通道颜色


Qt+OpenCV设置图片通道颜色源代码:

  1. #include "widget.h"   
  2. #include "ui_widget.h"   
  3. Widget::Widget(QWidget *parent) :  
  4.     QWidget(parent),  
  5.     ui(new Ui::Widget)  
  6. {  
  7.     ui->setupUi(this);  
  8.     cvNamedWindow("jdh1",CV_WINDOW_AUTOSIZE);  
  9.     cvNamedWindow("jdh2",CV_WINDOW_AUTOSIZE);  
  10.     img1 = cvLoadImage("test.jpg");  
  11.     img2 = cvLoadImage("test.jpg");  
  12.     cvShowImage("jdh1",img1);  
  13.     cvShowImage("jdh2",img2);  
  14. }  
  15. Widget::~Widget()  
  16. {  
  17.     delete ui;  
  18.     cvReleaseImage(&img1);  
  19.     cvReleaseImage(&img2);  
  20.     cvDestroyAllWindows();  
  21. }  
  22. void Widget::on_pushButton_clicked()  
  23. {  
  24.     QString red = ui->lineEdit->text();  
  25.     QString green = ui->lineEdit_2->text();  
  26.     QString blue = ui->lineEdit_3->text();  
  27.     int temp = 0;  
  28.     for (int y = 0;y < img2->height;y++)  
  29.     {  
  30.         unsigned char *ptr = (unsigned char *)(img2->imageData + y * img2->widthStep);  
  31.         unsigned char *ptr1 = (unsigned char *)(img1->imageData + y * img1->widthStep);  
  32.         for (int x = 0;x < img2->width;x++)  
  33.         {  
  34.             bool ok;  
  35.             //蓝色设置   
  36.             temp = blue.toInt(&ok,10);  
  37.             if (ok)  
  38.             {  
  39.                 ptr[3 * x + 0] = temp;  
  40.             }  
  41.             else  
  42.             {  
  43.                 ptr[3 * x + 0] = ptr1[3 * x + 0];  
  44.             }  
  45.             //绿色设置   
  46.             temp = green.toInt(&ok,10);  
  47.             if (ok)  
  48.             {  
  49.                 ptr[3 * x + 1] = temp;  
  50.             }  
  51.             else  
  52.             {  
  53.                 ptr[3 * x + 1] = ptr1[3 * x + 1];  
  54.             }  
  55.             //红色设置   
  56.             temp = red.toInt(&ok,10);  
  57.             if (ok)  
  58.             {  
  59.                 ptr[3 * x + 2] = temp;  
  60.             }  
  61.             else  
  62.             {  
  63.                 ptr[3 * x + 2] = ptr1[3 * x + 2];  
  64.             }  
  65.         }  
  66.     }  
  67.     cvShowImage("jdh2",img2);  
  68. }  

效果:

相关内容