Qt - 在像素操作后显示无符号字符
Qt - displaying unsigned char after pixel manipulation
我正在尝试显示纵的像素(灰度像素),这些像素被表示为无符号的字符。
这是代码:
#include "mainwindow.h"
#include <QApplication>
#include "qimage.h"
#include <QImage>
#include <QLabel>
#include <QColor>
#include "qcolor.h"
#include <Qdebug>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
int height;
int width;
unsigned char *p, *p_begin;
QImage img("C:\Users\Owner\Pictures\2013-09-26\IMG_0836.JPG");
height = img.height();
width = img.width();
p = (unsigned char *)malloc(height * width * sizeof(unsigned char));
p_begin = p;
for (int row = 0; row < height; ++row)
{
for (int col = 0; col < width; ++col)
{
QColor clrCurrent( img.pixel( col, row ));
*p = (unsigned char)((clrCurrent.green() * 0.587) + (clrCurrent.blue() * 0.114) + (clrCurrent.red() * 0.299));
p++;
}
}
p = p_begin;
for ( int row = 0; row < height; ++row )
{
for (int col = 0; col < width; ++col)
{
QColor clrCurrent(img.pixel(col, row));
clrCurrent.setBlue((int)(*p));
clrCurrent.setGreen((int)(*p));
clrCurrent.setRed((int)(*p));
p++;
}
}
QLabel myLabel;
myLabel.setPixmap(QPixmap::fromImage(img));
myLabel.show();
return a.exec();
}
我真的不知道为什么,但所代表的图片是原始图片,而不是经过操纵的图片,应该是灰度的。我试图在网上找到没有运气,有什么想法吗?提前感谢。
这部分代码:
QColor clrCurrent(img.pixel(col, row));
clrCurrent.setBlue((int)(*p));
clrCurrent.setGreen((int)(*p));
clrCurrent.setRed((int)(*p));
p++;
不会更改图像。它只是将像素颜色带到临时对象,更改该对象,然后该对象就会被销毁而不会影响图像。
我建议大家查看一下QImage的功能scanLine
。然后在一个地方的 for 循环中更改像素的颜色。这将更快地工作并改变图像。
相关文章:
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 将无符号char*转换为std::istream*C++
- 如何在C++中将一个无符号的 int 转换为两个无符号的短裤?
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 如何理解将半精度指针转换为无符号长指针和相关的内存对齐
- C++中无符号字符溢出
- 使用无符号字符数组有效存储内存
- 如何打印boost多精度128位无符号整数
- C++模板函数,用于比较任何无符号整数和有符号整数
- 在 std::无符号字符的向量处存储 int 的十六进制表示形式
- 获取隐式转换溢出从无符号到已签名的警告
- 如何在保持其值的同时将 c++ 无符号字符变量转换为 char 变量
- 从 std::vector<无符号字符>切片中提取 int?
- 将零附加到数字时,无符号数字会显示不同的结果
- Qt - 在像素操作后显示无符号字符
- 字符* 数组出现"multiple definitions"错误,但无符号字符数组未显示错误
- 为什么Visual Studio没有将无符号值显示为int?
- 为什么无符号字符不能正确显示十六进制值
- 显示无符号字符*和有符号字符*输出的结果是否完全相同
- 在opengl中显示16位无符号整数