ピクセルにアクセス

画素値を直接いじろうとしてつまった。
CvScalarフィールドにアクセスするインターフェースが見つからない\(^o^)/
調べてみたら、IPLをPILに変換して画素値をあれこれする方法があるらしい。
ということで試してみた。IPL→PIL→画素値をいじる→IPLって処理の流れ。

import sys
import Image
from opencv import *

if __name__ == '__main__':
	filename = "test.jpg"
	win_name = "window"

	if len(sys.argv) > 1:
		filename = sys.argv[1]

	image = cvLoadImage(filename)
	if not image:
	    print "Error loading image '%s'" % filename
	    sys.exit(-1)

	pil_image = ipl_to_pil(image)
	for i in range(image.width):
	    for j in range(image.height):
	        pixel = pil_image.getpixel((i, j))
	        pil_image.putpixel((i, j), (255 - pixel[0], 255 - pixel[1], 255 - pixel[2]))

	ipl_image = pil_to_ipl(pil_image)
	cvNamedWindow(win_name, CV_WINDOW_AUTOSIZE)
	cvShowImage(win_name, ipl_image)
	cvWaitKey(0)

こんなんでいいのだろうか・・・。
よくわからん。

OpenCVC/C++で使うべきなのかもね。