add gitignore + start migrate color-space to Qt6 openCV5

This commit is contained in:
thierry.nibert 2026-09-06 04:21:46 +02:00
parent b2323e8208
commit 9169f988cd
4 changed files with 41 additions and 65 deletions

View File

@ -55,7 +55,7 @@ void cvImage::Mat2QImage(cv::Mat const& src, QImage* dest )
cv::Mat temp(src); cv::Mat temp(src);
cvtColor(src, temp,CV_BGR2RGB); cvtColor(src, temp,COLOR_BGR2RGB);
if (dest) if (dest)
{ {
delete dest; delete dest;
@ -70,7 +70,7 @@ void cvImage::QImage2Mat(QImage* const& src, cv::Mat& res)
{ {
QImage temp = src->copy(); QImage temp = src->copy();
res=cv::Mat(temp.height(),temp.width(),CV_8UC3,(uchar*)temp.bits(),temp.bytesPerLine()); res=cv::Mat(temp.height(),temp.width(),CV_8UC3,(uchar*)temp.bits(),temp.bytesPerLine());
cvtColor(res, res,CV_RGB2BGR); cvtColor(res, res,COLOR_RGB2BGR);
//return res; //return res;
} }
@ -116,7 +116,7 @@ void cvImage::_open()
cv::Mat img = cv::imread(filename.toStdString()); cv::Mat img = cv::imread(filename.toStdString());
if (img.empty()) if (img.empty())
return; return;
cvtColor(img, img,CV_BGR2RGB); cvtColor(img, img,COLOR_BGR2RGB);
_img=img; _img=img;
// _image is created according to video dimensions // _image is created according to video dimensions
if (_image) if (_image)
@ -174,12 +174,12 @@ void cvImage::_hsvView()
delete _image; delete _image;
cv::Mat hsv, hsvI; cv::Mat hsv, hsvI;
cv::cvtColor(_img,hsv,CV_RGB2HSV); cv::cvtColor(_img,hsv,COLOR_RGB2HSV);
// on permute V et H pour visualisation dans Qimage // on permute V et H pour visualisation dans Qimage
// mapage bgr d'onpencv -> permutation pour que les affiche soit corect // mapage bgr d'onpencv -> permutation pour que les affiche soit corect
cv::vector<cv::Mat> tmp; std::vector<cv::Mat> tmp;
cv::split(hsv,tmp); cv::split(hsv,tmp);
hsvI=tmp[0]; hsvI=tmp[0];
@ -205,15 +205,15 @@ void cvImage::_save()
cv::Mat tmp; cv::Mat tmp;
cv::cvtColor(_img,tmp,CV_RGB2BGR); cv::cvtColor(_img,tmp,COLOR_RGB2BGR);
cv::imwrite("src.jpg",tmp); cv::imwrite("src.jpg",tmp);
cv::cvtColor(_img,tmp,CV_RGB2HSV); cv::cvtColor(_img,tmp,COLOR_RGB2HSV);
cv::imwrite("src_HSV.jpg",tmp); cv::imwrite("src_HSV.jpg",tmp);
if (!_img_eq_rgb.empty()){ cv::cvtColor(_img_eq_rgb,tmp,CV_RGB2BGR); cv::imwrite("egalisation_rgb.jpg",tmp);} if (!_img_eq_rgb.empty()){ cv::cvtColor(_img_eq_rgb,tmp,COLOR_RGB2BGR); cv::imwrite("egalisation_rgb.jpg",tmp);}
if (!_img_eq_rgb1.empty()){ cv::cvtColor(_img_eq_rgb1,tmp,CV_RGB2BGR);; cv::imwrite("egalisation_rgb1.jpg",tmp);} if (!_img_eq_rgb1.empty()){ cv::cvtColor(_img_eq_rgb1,tmp,COLOR_RGB2BGR);; cv::imwrite("egalisation_rgb1.jpg",tmp);}
} }
void cvImage::keyPressEvent(QKeyEvent* event) void cvImage::keyPressEvent(QKeyEvent* event)
@ -287,14 +287,14 @@ void cvImage::calculHist(cv::Mat& image , int* hist)
hist[image.data[i]]++; hist[image.data[i]]++;
} }
void cvImage::calculHist3(const cv::vector<cv::Mat>& image , int* hist) void cvImage::calculHist3(const std::vector<cv::Mat>& image , int* hist)
{ {
int i,p; int i,p;
/* initialisation de l'histogramme a 0*/ /* initialisation de l'histogramme a 0*/
for(i = 0; i < 256;i++) for(i = 0; i < 256;i++)
hist[i]=0; hist[i]=0;
/* calcule des valeur de l'histogramme */ /* calcule des valeur de l'histogramme */
// for(cv::vector<cv::Mat>::iterator i = mv.begin(); i != mv.end();i++) // for(std::vector<cv::Mat>::iterator i = mv.begin(); i != mv.end();i++)
for(p = 0; p < image[0].cols*image[0].rows; p++) for(p = 0; p < image[0].cols*image[0].rows; p++)
hist[(image[0].data[p]+image[1].data[p]+image[2].data[p])/3]++; hist[(image[0].data[p]+image[1].data[p]+image[2].data[p])/3]++;
} }
@ -322,7 +322,7 @@ void cvImage::egalizhist(cv::Mat& imSrc, cv::Mat& imDst)
} }
void cvImage::egalizhist3(const cv::vector<cv::Mat>& imSrc, cv::vector<cv::Mat>& imDst) void cvImage::egalizhist3(const std::vector<cv::Mat>& imSrc, std::vector<cv::Mat>& imDst)
{ {
int i; double n; int i; double n;
@ -364,24 +364,14 @@ void cvImage::_egalizeH()
if (_img.empty()) if (_img.empty())
return; return;
cv::vector<cv::Mat> mv,v;//[_img.channels()]; std::vector<cv::Mat> mv,v;//[_img.channels()];
cv::split(_img,mv); cv::split(_img,mv);
for(cv::vector<cv::Mat>::iterator i = mv.begin(); i != mv.end();i++) for(std::vector<cv::Mat>::iterator i = mv.begin(); i != mv.end();i++)
egalizhist( *i, *i); egalizhist( *i, *i);
cv::Mat merge; cv::Mat merge;
cv::merge(mv,merge); cv::merge(mv,merge);
_img_eq_rgb=merge; _img_eq_rgb=merge;
/*
cv::Mat hsv;
cv::cvtColor(merge,hsv,CV_RGB2HSV);
cv::vector<cv::Mat> mv_tmp;
cv::split(hsv,mv_tmp);
hsv=mv_tmp[0];
mv_tmp[0]=mv_tmp[2];
mv_tmp[2]=hsv;
cv::merge(mv_tmp,hsv);
cv::hconcat(merge,hsv,merge);
*/
if(_image) if(_image)
delete _image; delete _image;
@ -402,26 +392,16 @@ void cvImage::_egalizeH3()
if (_img.empty()) if (_img.empty())
return; return;
cv::vector<cv::Mat> mv_src, mv_dst; std::vector<cv::Mat> mv_src, mv_dst;
cv::split(_img,mv_src); cv::split(_img,mv_src);
cv::split(_img,mv_dst); cv::split(_img,mv_dst);
// for(cv::vector<cv::Mat>::iterator i = mv.begin(); i != mv.end();i++) // for(std::vector<cv::Mat>::iterator i = mv.begin(); i != mv.end();i++)
//egalizhist( *i, *i); //egalizhist( *i, *i);
egalizhist3(mv_src,mv_dst); egalizhist3(mv_src,mv_dst);
cv::Mat merge; cv::Mat merge;
cv::merge(mv_dst,merge); cv::merge(mv_dst,merge);
_img_eq_rgb1=merge; _img_eq_rgb1=merge;
/*
cv::Mat hsv;
cv::cvtColor(merge,hsv,CV_RGB2HSV);
cv::vector<cv::Mat> mv_tmp;
cv::split(hsv,mv_tmp);
hsv=mv_tmp[0];
mv_tmp[0]=mv_tmp[2];
mv_tmp[2]=hsv;
cv::merge(mv_tmp,hsv);
cv::hconcat(merge,hsv,merge);
*///cv::cvtColor(_imBin,imBinair,CV_GRAY2BGR);
if(_image) if(_image)
delete _image; delete _image;
@ -439,9 +419,9 @@ void cvImage::_egalizeH2(){
return; return;
cv::Mat src,hsv; cv::Mat src,hsv;
cv::cvtColor(_img, src, CV_RGB2BGR); cv::cvtColor(_img, src, COLOR_RGB2BGR);
cv::cvtColor(src, hsv, CV_BGR2HSV); cv::cvtColor(src, hsv, COLOR_BGR2HSV);
// Quantize the hue to 30 levels // Quantize the hue to 30 levels
// and the saturation to 32 levels // and the saturation to 32 levels
@ -475,18 +455,12 @@ void cvImage::_egalizeH2(){
cv::rectangle( histImg, cv::Point(h*scale, s*scale), cv::rectangle( histImg, cv::Point(h*scale, s*scale),
cv::Point( (h+1)*scale - 1, (s+1)*scale - 1), cv::Point( (h+1)*scale - 1, (s+1)*scale - 1),
cv::Scalar::all(intensity), cv::Scalar::all(intensity),
CV_FILLED ); cv::FILLED );
} }
_image = new QImage( src.data,src.size().width, src.size().height, src.step, QImage::Format_RGB888); _image = new QImage( src.data,src.size().width, src.size().height, src.step, QImage::Format_RGB888);
/* cv::namedWindow( "Source", 1 );
cv::imshow( "Source", src );
cv::namedWindow( "H-S Histogram", 1 );
cv::imshow( "H-S Histogram", histImg );
*///waitKey();
} }
void cvImage::_histcalc(){ void cvImage::_histcalc(){
@ -500,7 +474,7 @@ void cvImage::_histcalc(){
/// Separate the image in 3 places ( B, G and R ) /// Separate the image in 3 places ( B, G and R )
vector<Mat> bgr_planes; std::vector<Mat> bgr_planes;
split( src, bgr_planes ); split( src, bgr_planes );
/// Establish the number of bins /// Establish the number of bins
@ -544,10 +518,5 @@ void cvImage::_histcalc(){
Scalar( 0, 0, 255), 2, 8, 0 ); Scalar( 0, 0, 255), 2, 8, 0 );
} }
/// Display
// namedWindow("calcHist Demo", CV_WINDOW_AUTOSIZE );
// imshow("calcHist Demo", histImage );
//_image = new QImage( histImage.data,histImage.size().width, histImage.size().height, histImage.step, QImage::Format_RGB888);
} }

View File

@ -7,7 +7,7 @@
#include <QImage> #include <QImage>
#include <QKeyEvent> #include <QKeyEvent>
#include <highgui.h> #include <opencv2/highgui.hpp>
#include <QDebug> #include <QDebug>
#include <QLabel> #include <QLabel>
#include <QPainter> #include <QPainter>
@ -16,8 +16,9 @@
#include <QStatusBar> #include <QStatusBar>
#include<QMessageBox> #include<QMessageBox>
#include<QListWidget> #include<QListWidget>
#include<vector>
#include <cv.h> #include <opencv2/opencv.hpp>
#include"cvtab.h" #include"cvtab.h"
class cvImage : public QMainWindow class cvImage : public QMainWindow
{ {
@ -39,8 +40,8 @@ public:
/* fonction a rendre extern (stactic)*/ /* fonction a rendre extern (stactic)*/
void calculHist(cv::Mat& image , int* hist); void calculHist(cv::Mat& image , int* hist);
void egalizhist(cv::Mat& imSrc, cv::Mat& imDst); void egalizhist(cv::Mat& imSrc, cv::Mat& imDst);
void calculHist3(const cv::vector<cv::Mat>& image , int* hist); void calculHist3(const std::vector<cv::Mat>& image , int* hist);
void egalizhist3(const cv::vector<cv::Mat>& imSrc, cv::vector<cv::Mat>& imDst); void egalizhist3(const std::vector<cv::Mat>& imSrc, std::vector<cv::Mat>& imDst);
private: private:
QMenuBar _menu_bar; QMenuBar _menu_bar;
QMenu* _menu; QMenu* _menu;

View File

@ -7,9 +7,13 @@
* Or to read the human-readable summary of the license: * Or to read the human-readable summary of the license:
* https://creativecommons.org/licenses/by-sa/2.5/ * https://creativecommons.org/licenses/by-sa/2.5/
*/ */
#include <QApplication>
#include <QtCore/QObject>
#include "cvImage.h" #include "cvImage.h"
#include <QApplication>
int main(int argc, char* argv[]) int main(int argc, char* argv[])
{ {

View File

@ -1,17 +1,19 @@
TEMPLATE = app TEMPLATE = app
QT += core gui opengl QT += core gui opengl widgets
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets #[[
#greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
contains(QT_VERSION, ^5\\.[0-8]\\..*) { #contains(QT_VERSION, ^5\\.[0-8]\\..*) {
message("* Using Qt $${QT_VERSION}.") # message("* Using Qt $${QT_VERSION}.")
QT += widgets # QT += core gui opengl
# On my system I have to specify g++ as compiler else it will use clang++ by default # On my system I have to specify g++ as compiler else it will use clang++ by default
#QMAKE_CXX=g++ #QMAKE_CXX=g++
#QMAKE_CC=gcc #QMAKE_CC=gcc
} #}
#1]]
SOURCES += \ SOURCES += \
main.cpp \ main.cpp \
@ -27,7 +29,7 @@ HEADERS += \
## OpenCV settings for Unix/Linux ## OpenCV settings for Unix/Linux
unix:!mac { unix:!mac {
message("* Using settings for Unix/Linux.") message("* Using settings for Unix/Linux.")
INCLUDEPATH += /usr/local/include/opencv INCLUDEPATH += /usr/local/include/opencv4
LIBS += -L/usr/local/lib/ \ LIBS += -L/usr/local/lib/ \
-lopencv_core \ -lopencv_core \