OpenCVでピクセルが透明であることを確認するには? 透過部分のある png 画像があり、rgb 画像を hsv に変換してから、ピクセルの色相を変更したいと考えています。変換後も透明なピクセルが透明なままである必要があります。
助けてください。
OpenCVでピクセルが透明であることを確認するには? 透過部分のある png 画像があり、rgb 画像を hsv に変換してから、ピクセルの色相を変更したいと考えています。変換後も透明なピクセルが透明なままである必要があります。
助けてください。
GDAL を試すことができます。CV2と互換性があります
これらのリンクは役立つ場合があります。
import gdal
from gdalconst import *
import numpy as np
ds = gdal.Open('lena.jpg', GA_ReadOnly)
B = ds.GetRasterBand(1)
G = ds.GetRasterBand(2)
R = ds.GetRasterBand(3)
A = ds.GetRasterBand(4) // Alpha
height, width = B.shape
img = np.zeros(height, width, 3)
img[:, :, 0] = B
img[:, :, 1] = G
img[:, :, 2] = R
// Do something you want
ds.GetRasterBand(1).WriteArray(new_B)
ds.GetRasterBand(2).WriteArray(new_G)
ds.GetRasterBand(3).WriteArray(new_R)
// The forth band dose not need to be changed
// Close image, the changes is writen in the source file
ds = None
// Note that I did not test this code
OpenCV は画像の透過性をサポートしていません。(v2.4以前、最新版かどうかはわかりません)
http://blog.developer.stylight.de/2010/05/how-to-load-alpha-channel-pngs-with.htmlでソリューションを試してOpenCV を再構築するか、ImageMagick などを使用して抽出することができますアルファ レイヤー (フォーラム リンク) を別の画像として読み込みます。