开始写算法咯

一开始肯定是从简单的开始,那就从彩图转灰度,以及单独显示红绿蓝三通道图像吧。

彩图转灰的原理

这是一个很有名的心理学公式:Gray = 0.2989*R + 0.5870*G + 0.1140*B。但是浮点型运算很占时间,所以我们该怎么优化呢?大体思路是把浮点型运算转换为整型运算,再把整型运算转换为位移运算。那么我们很自然的想到:Gray=(2989*R+5870*G+1140*B)/1000;但是1000不是2的整数次方,不好进行位移。为了方便位移,我们应该乘以2的整数次幂,
所以我们取2的8次方幂,来看一看:
0.2989*2^8=76.5814;
0.5870*2^8=150.272;
0.1140*2^8=29.184;这就是很通用的彩图转灰度的公式 Gray = (R*76 + G*150 + B*30) >> 8;我也是采用的这个方法。

上代码

老规矩现在vs下面测试一下,看看有没有bug以及速度如何.
Qt加OpenCV构建二维图像处理界面(2)
结果如下:
Qt加OpenCV构建二维图像处理界面(2)
Qt加OpenCV构建二维图像处理界面(2)
Qt加OpenCV构建二维图像处理界面(2)
时间还是很快的。既然vs测试好了就搬去qt上面吧。下面上qt的代码。
Qt加OpenCV构建二维图像处理界面(2)
测试结果自然是跟vs一样的。
Qt加OpenCV构建二维图像处理界面(2)
Qt加OpenCV构建二维图像处理界面(2)

那么单独显示红绿蓝单通道图像也很简单,比方你要单红通道,那就把绿跟蓝显示出来。其他的类似。
先给vs测试程序:
Qt加OpenCV构建二维图像处理界面(2)
再给qt程序:
Qt加OpenCV构建二维图像处理界面(2)
Qt加OpenCV构建二维图像处理界面(2)
Qt加OpenCV构建二维图像处理界面(2)
最后qt测试一下:
Qt加OpenCV构建二维图像处理界面(2)
Qt加OpenCV构建二维图像处理界面(2)
Qt加OpenCV构建二维图像处理界面(2)
好,搞定睡觉!
顺便推荐一波群,群主是百度大牛,精通OpenCV,群号是736854977

相关文章:

  • 2021-05-20
  • 2021-05-06
  • 2021-04-15
  • 2021-09-17
  • 2021-05-23
  • 2022-12-23
  • 2021-08-02
  • 2021-12-06
猜你喜欢
  • 2021-08-19
  • 2021-06-22
  • 2021-09-07
  • 2021-12-08
  • 2021-10-28
  • 2022-12-23
  • 2021-12-06
相关资源
相似解决方案