qtView_Bridge::getInst("")->LogMessage(boost::format("%s: %s.") % FUNCTION % (boost::format("OK! start YUV422TORAW8-> %d") % (int)img.type)); out_img.width = img.width; out_img.height = img.height; //int stride = img.width * 2; qtView_Bridge::getInst("")->LogMessage(boost::format("%s: %s.") % FUNCTION % (boost::format("OK! start YUV422TORAW8-> width:%d——heighht:%d") % (int)img.width%img.height)); out_img.type = qtRAW_8_MONO; out_img.vcm_pos = img.vcm_pos; out_img.byte_size = out_img.width * out_img.height * sizeof(unsigned char); out_img.data = new unsigned char[out_img.byte_size]; unsigned char* in_data = (unsigned char*)img.data; unsigned char* out_data = (unsigned char*)out_img.data; for (int i = 0; i < out_img.height;i++) { for (int j = 0; j < out_img.width; j += 2) { int index_y = iout_img.width * 2 + j * 2; int index_raw8 = iout_img.width + j / 2; out_data[index_raw8] = (unsigned char)((in_data[index_y] - 16) * 255 / 219); } }如果我的图像长宽变了我需要改哪里
时间: 2024-03-09 08:44:25 浏览: 93
如果图像的长或宽发生变化,你需要修改以下两处代码:
1. 在第一行代码中,将获取的图像长宽信息赋值给 `out_img` 对象的 `width` 和 `height` 属性:
```
out_img.width = img.width;
out_img.height = img.height;
```
2. 在 for 循环中,需要根据新的图像长宽信息计算 `index_y` 和 `index_raw8`,然后将像素数据进行处理:
```
for (int i = 0; i < out_img.height;i++) {
for (int j = 0; j < out_img.width; j += 2) {
int index_y = i * img.width * 2 + j * 2;
int index_raw8 = i * out_img.width + j / 2;
out_data[index_raw8] = (unsigned char)((in_data[index_y] - 16) * 255 / 219);
}
}
```
需要注意的是,由于 YUV422 数据每两个像素共用一个色度值,因此计算 `index_y` 和 `index_raw8` 的方法与图像格式相关。如果图像格式变化,需要相应地修改计算方法。
阅读全文