add gitignore + start migrate color-space to Qt6 openCV5
This commit is contained in:
parent
b2323e8208
commit
9169f988cd
|
|
@ -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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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[])
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -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 \
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user