/*梯度法边缘检测 比例scale对差分结果进行缩放*/
QImage* MainWindow:: SideGrandiant(QImage* image,double scale)
{
QImage* newImage = new QImage(image->width(),image->height(),QImage::Format_ARGB32)
QColor color0
QColor color1
QColor color2
int r = 0
int g = 0
int b = 0
int rgb = 0
int r1 = 0
int g1 = 0
int b1 = 0
int rgb1 = 0
int a = 0
for( int y = 0
{
for(int x = 0
{
color0 = QColor ( image->pixel(x,y))
color1 = QColor ( image->pixel(x + 1,y))
color2 = QColor ( image->pixel(x,y + 1))
r = abs(color0.red() - color1.red())
g = abs(color0.green() - color1.green())
b = abs(color0.blue() - color1.blue())
rgb = r + g + b
r1 = abs(color0.red() - color2.red())
g1= abs(color0.green() - color2.green())
b1 = abs(color0.blue() - color2.blue())
rgb1 = r1 + g1 + b1
a = rgb + rgb1
a = a * scale
a = a>255?255:a
newImage->setPixel(x,y,qRgb(a,a,a))
}
}
return newImage
}
/*Roberts法边缘检测 比例scale对差分结果进行缩放*/
QImage* MainWindow:: SideRobertsdiant(QImage* image,double scale)
{
QImage* newImage = new QImage(image->width(),image->height(),QImage::Format_ARGB32)
QColor color0
QColor color1
QColor color2
QColor color3
int r = 0
int g = 0
int b = 0
int rgb = 0
int r1 = 0
int g1 = 0
int b1 = 0
int rgb1 = 0
int a = 0
for( int y = 0
{
for(int x = 0
{
color0 = QColor ( image->pixel(x,y))
color1 = QColor ( image->pixel(x + 1,y))
color2 = QColor ( image->pixel(x,y + 1))
color3 = QColor ( image->pixel(x + 1,y + 1))
r = abs(color0.red() - color3.red())
g = abs(color0.green() - color3.green())
b = abs(color0.blue() - color3.blue())
rgb = r + g + b
r1 = abs(color1.red() - color2.red())
g1= abs(color1.green() - color2.green())
b1 = abs(color1.blue() - color2.blue())
rgb1 = r1 + g1 + b1
a = rgb + rgb1
a = a * scale
a = a>255?255:a
newImage->setPixel(x,y,qRgb(a,a,a))
}
}
return newImage
}
/*sobel法边缘检测 比例scale对差分结果进行缩放,type表示使用那种公式 取值0或则1*/
QImage* MainWindow:: SideSobeldiant(QImage* image,double scale,int type)
{
QImage* newImage = new QImage(image->width(),image->height(),QImage::Format_ARGB32)
QColor color0
QColor color1
QColor color2
QColor color3
QColor color4
QColor color5
QColor color6
QColor color7
QColor color8
int r = 0
int g = 0
int b = 0
int rgb = 0
int r1 = 0
int g1 = 0
int b1 = 0
int rgb1 = 0
int a = 0
for( int y = 1
{
for(int x = 1
{
color0 = QColor ( image->pixel(x,y))
color1= QColor ( image->pixel(x-1,y-1))
color2 = QColor ( image->pixel(x,y-1))
color3 = QColor ( image->pixel(x+1,y))
color4 = QColor ( image->pixel(x-1,y))
color5 = QColor ( image->pixel(x+1,y))
color6 = QColor ( image->pixel(x-1,y+1))
color7= QColor ( image->pixel(x,y+1))
color8 = QColor ( image->pixel(x+1,y+1))
r = abs(color1.red() + color2.red() * 2 + color3.red() - color6.red() - color7.red() * 2 - color8.red())
g = abs(color1.green() + color2.green() * 2 + color3.green() - color6.green() - color7.green() * 2 - color8.green())
b = abs(color1.blue() + color2.blue() * 2 + color3.blue() - color6.blue() - color7.blue() * 2 - color8.blue())
rgb = r + g + b
r1 = abs(color1.red() + color4.red() * 2 + color6.red() - color3.red() - color5.red() * 2 - color8.red())
g1= abs(color1.green() + color4.green() * 2 + color6.green() - color3.green() - color5.green() * 2 - color8.green())
b1 = abs(color1.blue() + color4.blue() * 2 + color6.blue() - color3.blue() - color5.blue() * 2 - color8.blue())
rgb1 = r1 + g1 + b1
if(type == 0)
{
if (rgb > rgb1)
a = rgb
else
a = rgb1
}
else if(type == 1)
{
a = (rgb + rgb1)/2
}
a = a * scale
a = a>255?255:a
newImage->setPixel(x,y,qRgb(a,a,a))
**收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。**


**[如果你需要这些资料,可以戳这里获取](https://gitee.com/vip204888)**
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人**
**都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**