http://blogger.shase.info/2015/01/javacv.html
公式のサンプル(といっても結局c++なんだけど…)っぽいことをしてみる。
https://code.google.com/p/javacv/wiki/OpenCV2_Cookbook_Examples_Chapter_2#Accessing_Pixel_Values
ここにある、Accessing Pixel Values ってやつ。
元画像
加工後
コード
package hoge; import org.junit.Test; import static org.bytedeco.javacpp.opencv_core.*; import static org.bytedeco.javacpp.opencv_imgproc.*; import static org.bytedeco.javacpp.opencv_highgui.*; public class HogeTest { @Test public void test1() { IplImage image = cvLoadImage("abc.jpg"); CvMat cvMat = new CvMat(); cvGetMat(image, cvMat); int div = 100; int nbElements = cvMat.rows() * cvMat.cols() * cvMat.channels(); for (int i = 0; i < nbElements; i++) { double v = (int) cvMat.get(i); double newV = v / div * div + div / 2; cvMat.put(i, newV); } IplImage image2 = new IplImage(cvMat); cvSaveImage("abc2.jpg", image2); cvReleaseImage(image); } }
CvMatのgetとputがduplicatedってどーゆーことー ?_?
【補足】
get,putの代わりにcvGet2Dとか、cvSet2Dとかあるのでこれでよいですね。
と、ここまで、やって、OpenCV使うにしてもJavaCVいろいろ微妙なんじゃないかな、と思い始めた俺ががいる。
0 件のコメント:
コメントを投稿