![](/img/trans.png)
[英]How to draw a rectangle on CameraBridgeViewBase in android opencv 3.1
[英]How to lighten a rectangle with opencv for android
我正在使用適用於Android的OpenCV,我想知道如何減輕Mat對象中的矩形表面。
我編寫了此函數,將30加到區域中每個像素的每個RGB組件中。它按我預期的方式工作,但速度太慢。
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
Mat frame = inputFrame.rgba();
int h = 300;
int w = (int) ((int) ( (float) h ) * 1.5);
return drawRectangle(frame, h, w);
}
private Mat drawRectangle(Mat frame, int h, int w){
for( int y = (frame.rows() - h) / 2 ; y < (frame.rows() + h) / 2 ; y++ ) {
for( int x = (frame.cols() - w) / 2; x < (frame.cols() + w) / 2; x++ ) {
for( int c = 0; c < 3; c++ ) {
double[] color = frame.get(y, x);
for(int i = 0; i < 3; i++)
color[i] += 30;
frame.put(y, x, color);
}
}
}
return frame;
}
我敢肯定有一種方法可以立即執行此操作(我已經看到了黑白的示例,可以立即處理負面影響),但是我對OpenCv和Android不太熟悉,我想我還不知道這種哲學。
使用CvRect
直接訪問區域並使用重載的+
:
cv::Mat img;
int x,y,w,h,inc;
img(cv::Rect(x, y, w, h))+=cvScalar(inc,inc,inc);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.