Java 如何在图像ROI上滑动矩形
我想将滑动窗口(aJava 如何在图像ROI上滑动矩形,java,opencv,Java,Opencv,我想将滑动窗口(aRect)移动每个窗口的一半,但我只能得到第一行: 我的代码: int widthImg = 600; int HeightImg = 500; int wWin = 100;// weight window int hWin = 100;// height window int xWin = 0; int yWin = 0; int winSize = ((widthImg/wWin)*2) * ((HeightImg/hWin)*2);// slide half of
Rect
)移动每个窗口的一半,但我只能得到第一行:
我的代码:
int widthImg = 600;
int HeightImg = 500;
int wWin = 100;// weight window
int hWin = 100;// height window
int xWin = 0;
int yWin = 0;
int winSize = ((widthImg/wWin)*2) * ((HeightImg/hWin)*2);// slide half of window(50)
for(int i=0;i<winSize;i++){
Mat ROIMat = new Mat();
if(i < winSize){
xWin = xWin + wWin/2;
if(xWin == widthImg){
xWin = 0;
yWin = yWin + hWin/2;
}
}
ROIMat = croppMat(Highgui.imread(fileImageName), new Rect(xWin , yWin , wWin , hWin) );
Highgui.imwrite(pathROI+"\\"+i+".jpg", ROIMat); //save ROI image
}
int-widthmg=600;
内部高度img=500;
int wWin=100;//权重窗口
int hWin=100;//高度窗
int xWin=0;
int-yWin=0;
int winSize=((宽度img/wWin)*2)*((高度img/hWin)*2);//滑动窗口的一半(50)
for(int i=0;i如果我正确理解了你的问题,你应该纠正for循环
查看这个代码,检查它是否是预期结果。代码是C++,但它非常接近java,我把它添加为等价java调用的注释(但我没有测试)。
#包括
#包括
使用名称空间cv;
int main()
{
//加载图像
Mat3b img=imread(fileImageName);
//JAVA:Mat img=Highgui.imread(fileImageName);
int-widthImg=img.cols;//JAVA:img.cols();
int heightImg=img.rows;//JAVA:img.rows();
int wWin=100;//权重窗口
int hWin=100;//高度窗口
int计数器=0;
对于(int-yWin=0;yWin),我编辑了您的问题以使其更清晰。请检查此问题,并最终改进编辑。
#include <opencv2/opencv.hpp>
#include <string>
using namespace cv;
int main()
{
// Load image
Mat3b img = imread(fileImageName);
// JAVA: Mat img = Highgui.imread(fileImageName);
int widthImg = img.cols; // JAVA: img.cols();
int heightImg = img.rows; // JAVA: img.rows();
int wWin = 100; // weight window
int hWin = 100; // height window
int counter = 0;
for (int yWin = 0; yWin <= heightImg - hWin; yWin += hWin/2)
{
for (int xWin = 0; xWin <= widthImg - wWin; xWin += wWin/2)
{
Mat ROIMat(img(Rect(xWin, yWin, wWin, hWin)));
// JAVA: Mat ROIMat = new Mat();
// JAVA: ROIMat = croppMat(img, new Rect(xWin, yWin, wWin, hWin));
imwrite(pathROI + std::to_string(counter) + ".jpg", ROIMat);
//JAVA: Highgui.imwrite(pathROI + "\\" + counter + ".jpg", ROIMat); //save ROI image
++counter;
}
}
return 0;
}