1
A
回答
2
下面的代碼將需要轉換:
public static void RGBtoBGR(Bitmap bmp)
{
BitmapData data = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height),
ImageLockMode.ReadWrite, bmp.PixelFormat);
int length = Math.Abs(data.Stride) * bmp.Height;
unsafe
{
byte* rgbValues = (byte*)data.Scan0.ToPointer();
for (int i = 0; i < length; i += 3)
{
byte dummy = rgbValues[i];
rgbValues[i] = rgbValues[i + 2];
rgbValues[i + 2] = dummy;
}
}
bmp.UnlockBits(data);
}
LockBits
鎖定在內存中的位圖,這樣就可以直接訪問和修改的內容。如果你不想有不安全的上下文,你可以創建一個字節數組並使用Marshal.Copy
將數據複製到它並在操作後返回到位圖。使用LockBits
是處理位圖數據的最快選項(比GetPixel
或SetPixel
快得多)。
循環迭代器(i += 3
)取決於位圖的PixelFormat
。這裏我假設它是PixelFormat.Format24bppRgb
。對於Format32bppArgb
,它將是i += 4
。
相關問題
- 1. OpenNI RGB圖像到OpenCV BGR IplImage轉換?
- 2. 在VB中將位圖轉換爲RGB
- 3. 將RGB圖像轉換爲RGB 16位和8位
- 4. 將顏色通道從BGR轉換爲RGB
- 5. 在OpenCV中將YUV轉換爲BGR或RGB
- 6. 如何將位圖轉換爲圖像<Bgr, Byte>
- 7. 交換Jpeg RGB通道(RGB-> BGR)
- 8. moviepy.editory.VideoFileClip - RGB或BGR?
- 9. 如何將24位RGB轉換爲8位RGB
- 10. 轉換32位rgb圖像爲8位rgb C++
- 11. 將css顏色轉換爲16位rgb
- 12. 將24位RGB轉換爲ARGB16
- 13. 將8位顏色轉換爲RGB值
- 14. 使用OpenCV將12位拜耳圖像轉換爲8位RGB
- 15. MATLAB/Opencv:將24位RGB圖像轉換爲16位灰色
- 16. 將RGB圖像轉換爲灰度和灰度轉換爲RGB圖像?
- 17. 將十進制BGR顏色轉換爲單獨的RGB十進制值
- 18. 如何將圖片類型轉換爲圖片<Bgr, Byte>?
- 19. 手動將RGB RGB圖像轉換爲灰度圖
- 20. 將YCCK jpeg轉換爲RGB
- 21. 將RGB值轉換爲HSV
- 22. ImageSharp將Rgb轉換爲Hsv
- 23. 將RGB轉換爲HSV
- 24. 將RGB轉換爲RGBW
- 25. 將RGB轉換爲sRGB?
- 26. 將RGB轉換爲RGBA
- 27. 將0xFF轉換爲RGB值
- 28. 將RGB轉換爲灰度?
- 29. Javascript將YUV轉換爲RGB
- 30. 將HSL轉換爲RGB
相機的一些問題? –
相機沒有問題。這是BGR色彩空間。主要是與endianness有關。令人討厭的是,因爲你通常需要做額外的工作才能使事情順利進行。 – Kat