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);
cvtColor(src, temp,CV_BGR2RGB);
cvtColor(src, temp,COLOR_BGR2RGB);
if (dest)
{
delete dest;
@ -70,7 +70,7 @@ void cvImage::QImage2Mat(QImage* const& src, cv::Mat& res)
{
QImage temp = src->copy();
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;
}
@ -116,7 +116,7 @@ void cvImage::_open()
cv::Mat img = cv::imread(filename.toStdString());
if (img.empty())
return;
cvtColor(img, img,CV_BGR2RGB);
cvtColor(img, img,COLOR_BGR2RGB);
_img=img;
// _image is created according to video dimensions
if (_image)
@ -174,12 +174,12 @@ void cvImage::_hsvView()
delete _image;
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
// 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);
hsvI=tmp[0];
@ -205,15 +205,15 @@ void cvImage::_save()
cv::Mat tmp;
cv::cvtColor(_img,tmp,CV_RGB2BGR);
cv::cvtColor(_img,tmp,COLOR_RGB2BGR);
cv::imwrite("src.jpg",tmp);
cv::cvtColor(_img,tmp,CV_RGB2HSV);
cv::cvtColor(_img,tmp,COLOR_RGB2HSV);
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)
@ -287,14 +287,14 @@ void cvImage::calculHist(cv::Mat& image , int* hist)
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;
/* initialisation de l'histogramme a 0*/
for(i = 0; i < 256;i++)
hist[i]=0;
/* 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++)
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;
@ -364,24 +364,14 @@ void cvImage::_egalizeH()
if (_img.empty())
return;
cv::vector<cv::Mat> mv,v;//[_img.channels()];
std::vector<cv::Mat> mv,v;//[_img.channels()];
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);
cv::Mat merge;
cv::merge(mv,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)
delete _image;
@ -402,26 +392,16 @@ void cvImage::_egalizeH3()
if (_img.empty())
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_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);
egalizhist3(mv_src,mv_dst);
cv::Mat merge;
cv::merge(mv_dst,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)
delete _image;
@ -439,9 +419,9 @@ void cvImage::_egalizeH2(){
return;
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
// and the saturation to 32 levels
@ -475,18 +455,12 @@ void cvImage::_egalizeH2(){
cv::rectangle( histImg, cv::Point(h*scale, s*scale),
cv::Point( (h+1)*scale - 1, (s+1)*scale - 1),
cv::Scalar::all(intensity),
CV_FILLED );
cv::FILLED );
}
_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(){
@ -500,7 +474,7 @@ void cvImage::_histcalc(){
/// Separate the image in 3 places ( B, G and R )
vector<Mat> bgr_planes;
std::vector<Mat> bgr_planes;
split( src, bgr_planes );
/// Establish the number of bins
@ -544,10 +518,5 @@ void cvImage::_histcalc(){
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 <QKeyEvent>
#include <highgui.h>
#include <opencv2/highgui.hpp>
#include <QDebug>
#include <QLabel>
#include <QPainter>
@ -16,8 +16,9 @@
#include <QStatusBar>
#include<QMessageBox>
#include<QListWidget>
#include<vector>
#include <cv.h>
#include <opencv2/opencv.hpp>
#include"cvtab.h"
class cvImage : public QMainWindow
{
@ -39,8 +40,8 @@ public:
/* fonction a rendre extern (stactic)*/
void calculHist(cv::Mat& image , int* hist);
void egalizhist(cv::Mat& imSrc, cv::Mat& imDst);
void calculHist3(const cv::vector<cv::Mat>& image , int* hist);
void egalizhist3(const cv::vector<cv::Mat>& imSrc, cv::vector<cv::Mat>& imDst);
void calculHist3(const std::vector<cv::Mat>& image , int* hist);
void egalizhist3(const std::vector<cv::Mat>& imSrc, std::vector<cv::Mat>& imDst);
private:
QMenuBar _menu_bar;
QMenu* _menu;

View File

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

View File

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