關於QImage提取單色通道方法(vector

2022-07-21 19:00:16 字數 1858 閱讀 6681

近日,用qt和mxnet結合做乙個影象識別的demo。遇到需要把從qimage轉為vector單色分離的格式的要求,用來識別時輸入。

經實踐,找到3種方法,分享給大家:

需要注意的是,qimage的儲存順序是 bgra(opencv也是這樣反著的),不是正常口述rgba.

另:mx_float  == float

一.

int image_size = width * height * channels; //影象的寬/高/通道數(除去了a通道)

std::vectorimage_data = std::vector(image_size);

mx_float* ptr_image_r = image_data.data();

const uchar* pdata= image.constbits(); // 獲取影象原始資料

mx_float* ptr_image_g = image_data.data() + image_size / 3;

mx_float* ptr_image_b = image_data.data() + image_size / 3 * 2;

for (int i = 0; i < height; i++)

*ptr_image_b++ = static_cast(pdata[linenum_32 + k * 4 ]) ;

}

}

二.利用image.scanline(),獲取每行掃瞄線的首位址

int image_size = width * height * channels; //影象的寬/高/通道數(除去了a通道)

std::vectorimage_data = std::vector(image_size);

mx_float* ptr_image_r = image_data.data();

const uchar* pdata= image.constbits(); // 獲取影象原始資料

mx_float* ptr_image_g = image_data.data() + image_size / 3;

mx_float* ptr_image_b = image_data.data() + image_size / 3 * 2;

for (int i = 0; i < height; i++)

*ptr_image_b++ = static_cast(\

imagescanline[k * 4]) ;

}

}

三.最可靠最簡潔的方法.但是可能效能比上兩個稍微差些(沒有評估),因為他每個畫素都要從qimage獲取一次,不確定會不會比一次獲取完和一次獲取一行有效能之差,但個人感覺不會,因為qimage也是在記憶體中,不存在檔案io。但是他很簡單,不需要考慮的位深和儲存順序/大端小端等問題。

int image_size = width * height * channels; //影象的寬/高/通道數(除去了a通道)

std::vectorimage_data = std::vector(image_size);

mx_float* ptr_image_r = image_data.data();

const uchar* pdata= image.constbits(); // 獲取影象原始資料

mx_float* ptr_image_g = image_data.data() + image_size / 3;

mx_float* ptr_image_b = image_data.data() + image_size / 3 * 2;

for (int i = 0; i < height; i++)

}

關於QImage和IplImage之間轉換的實現

在嵌入式系統中實現qt和opencv的處理,最基礎的就是qimage和iplimage之間的轉換。這樣兩者就可以進行一起使用影象資料,從而達到利用qt顯示和利用opencv處理的功能。下面我將貼出 qimage iplimage cpp view plain copy qimage iplimage...

關於多個Servlet的簡化提取

建立乙個baseservlet來儲存大量重複的 dopost,doget public 然後就是實現類 以註冊為例 webservlet name userservlet value userservlet 這裡要寫上註解 public class userservlet extends bases...

關於微信營銷

我知道我的廣告費有一半是浪費的,問題是我不知道浪費掉的是哪一半。還記得美國著名商人約翰 華納梅克的這句感慨嗎?不過所有的一切,都取決於乙個前提 讓顧客加你為好友。如何讓客戶加你?如果你是 中國好聲音 那不用發愁,很多人會主動來查詢你 如果你還沒到這個程度,怎麼辦?活動歷時一整天,共增加粉絲500人,...