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 件のコメント:
コメントを投稿