जावा डुबकी - OpenCV रंग अंतरिक्ष रूपांतरण
OpenCV का उपयोग करके एक छवि के रंग स्थान को दूसरे में बदलने के लिए, हम छवि को पढ़ते हैं BufferedImage और इसे में परिवर्तित करें Matवस्तु। इसका सिंटैक्स नीचे दिया गया है -
File input = new File("digital_image_processing.jpg");
BufferedImage image = ImageIO.read(input);
//convert Buffered Image to Mat.
OpenCv कई रंग रूपांतरण प्रकारों की अनुमति देता है, जो सभी Imgproc वर्ग में पाए जा सकते हैं। कुछ प्रकारों का संक्षेप में वर्णन किया गया है -
अनु क्रमांक। | रंग रूपांतरण प्रकार |
---|---|
1 | COLOR_RGB2BGR |
2 | COLOR_RGB2BGRA |
3 | COLOR_RGB2GRAY |
4 | COLOR_RGB2HLS |
5 | COLOR_RGB2HSV |
6 | COLOR_RGB2Luv |
7 | COLOR_RGB2YUV |
8 | COLOR_RGB2Lab |
किसी भी रंग रूपांतरण प्रकार से, उपयुक्त विधि को पास करें cvtColor() में Imgprocकक्षा। इसका सिंटैक्स नीचे दिया गया है -
Imgproc.cvtColor(source mat, destination mat1, Color_Conversion_Code);
प्रक्रिया cvtColor() तीन पैरामीटर लेता है जो स्रोत छवि मैट्रिक्स, गंतव्य छवि मैट्रिक्स और रंग रूपांतरण प्रकार हैं।
CvtColor () विधि के अलावा, Imgproc वर्ग द्वारा प्रदान की जाने वाली अन्य विधियां हैं। उन्हें संक्षेप में वर्णित किया गया है -
अनु क्रमांक। | विधि और विवरण |
---|---|
1 | cvtColor(Mat src, Mat dst, int code, int dstCn) यह एक छवि को एक रंग स्थान से दूसरे में परिवर्तित करता है। |
2 | dilate(Mat src, Mat dst, Mat kernel) यह एक विशिष्ट संरचना तत्व का उपयोग करके एक छवि को पतला करता है। |
3 | equalizeHist(Mat src, Mat dst) यह एक स्केल इमेज के हिस्टोग्राम की बराबरी करता है। |
4 | filter2D(Mat src, Mat dst, int ddepth, Mat kernel, Point anchor, double delta) यह कर्नेल के साथ एक छवि को दर्शाता है। |
5 | GaussianBlur(Mat src, Mat dst, Size ksize, double sigmaX) यह एक गाऊसी फिल्टर का उपयोग करके एक छवि को धुंधला करता है। |
6 | integral(Mat src, Mat sum) यह एक छवि के अभिन्न की गणना करता है। |
उदाहरण
निम्न उदाहरण छवि को एक रंग स्थान से दूसरे में बदलने के लिए Imgproc वर्ग के उपयोग को प्रदर्शित करता है।
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferByte;
import java.io.File;
import javax.imageio.ImageIO;
import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.imgproc.Imgproc;
public class Main {
public static void main( String[] args ) {
try {
System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
File input = new File("digital_image_processing.jpg");
BufferedImage image = ImageIO.read(input);
byte[] data = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();
Mat mat = new Mat(image.getHeight(),image.getWidth(), CvType.CV_8UC3);
mat.put(0, 0, data);
Mat mat1 = new Mat(image.getHeight(), image.getWidth(), CvType.CV_8UC3);
Imgproc.cvtColor(mat, mat1, Imgproc.COLOR_RGB2HSV);
byte[] data1 = new byte[mat1.rows()*mat1.cols()*(int)(mat1.elemSize())];
mat1.get(0, 0, data1);
BufferedImage image1 = new BufferedImage(mat1.cols(), mat1.rows(), 5);
image1.getRaster().setDataElements(0, 0, mat1.cols(), mat1.rows(), data1);
File ouptut = new File("hsv.jpg");
ImageIO.write(image1, "jpg", ouptut);
} catch (Exception e) {
System.out.println("Error: " + e.getMessage());
}
}
}
उत्पादन
जब आप दिए गए उदाहरण को निष्पादित करते हैं, तो यह एक छवि नाम को परिवर्तित करता है digital_image_processing.jpg इसके समतुल्य एचएसवी रंग अंतरिक्ष छवि के लिए और इसे हार्ड डिस्क पर नाम के साथ लिखते हैं hsv.jpg।